All Projects → driusan → Dewm

driusan / Dewm

Licence: other
A pure go autotiling window manager written with literate programming

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Dewm

Quicktile
Adds window-tiling hotkeys to any X11 desktop. (An analogue to WinSplit Revolution for people who don't want to use Compiz Grid)
Stars: ✭ 719 (+219.56%)
Mutual labels:  x11, window-manager, tiling-window-manager, tiling
shod-old
hybrid (floating and tiling) tabbed window manager
Stars: ✭ 56 (-75.11%)
Mutual labels:  x11, tiling, window-manager, tiling-window-manager
shod
mouse-based window manager that can tile windows inside floating containers
Stars: ✭ 126 (-44%)
Mutual labels:  x11, tiling, window-manager, tiling-window-manager
katriawm
A non-reparenting, dynamic window manager with decorations
Stars: ✭ 53 (-76.44%)
Mutual labels:  x11, tiling, window-manager
Hadlock
X window manager
Stars: ✭ 141 (-37.33%)
Mutual labels:  x11, window-manager, tiling
Wmderland
🌳 X11 tiling window manager using space partitioning trees
Stars: ✭ 341 (+51.56%)
Mutual labels:  x11, window-manager, tiling-window-manager
Yabar
A modern and lightweight status bar for X window managers.
Stars: ✭ 646 (+187.11%)
Mutual labels:  x11, window-manager
Imv
Image viewer for X11/Wayland
Stars: ✭ 652 (+189.78%)
Mutual labels:  x11, tiling-window-manager
Krohnkite
A dynamic tiling extension for KWin
Stars: ✭ 767 (+240.89%)
Mutual labels:  tiling-window-manager, tiling
Paperwm
Tiled scrollable window management for Gnome Shell
Stars: ✭ 1,364 (+506.22%)
Mutual labels:  window-manager, tiling-window-manager
River
A dynamic tiling wayland compositor
Stars: ✭ 513 (+128%)
Mutual labels:  window-manager, tiling
Xsuspender
👀 💻 💤 🔋 Save battery by auto-suspending unfocused X11 applications.
Stars: ✭ 53 (-76.44%)
Mutual labels:  x11, tiling-window-manager
Dotfiles
Configuration files for XMonad, Emacs, NixOS, Taffybar and more.
Stars: ✭ 127 (-43.56%)
Mutual labels:  window-manager, tiling-window-manager
Herbstluftwm
A manual tiling window manager for X11
Stars: ✭ 635 (+182.22%)
Mutual labels:  window-manager, tiling
Howm
A lightweight, X11 tiling window manager that behaves like vim
Stars: ✭ 619 (+175.11%)
Mutual labels:  x11, tiling
Nscde
Modern and functional CDE desktop based on FVWM
Stars: ✭ 526 (+133.78%)
Mutual labels:  x11, window-manager
Frames Only Mode
Make emacs play nicely with tiling window managers by setting it up to use frames rather than windows
Stars: ✭ 96 (-57.33%)
Mutual labels:  window-manager, tiling-window-manager
Xmonad
The core of xmonad, a small but functional ICCCM-compliant tiling window manager
Stars: ✭ 2,253 (+901.33%)
Mutual labels:  x11, window-manager
Durden
Desktop Environment for Arcan
Stars: ✭ 158 (-29.78%)
Mutual labels:  window-manager, tiling-window-manager
Shell
Pop!_OS Shell
Stars: ✭ 3,338 (+1383.56%)
Mutual labels:  window-manager, tiling

dewm - a window manager written with literate programming

dewm is a pure Go autotiling window manager. It's intended to make the text editor de feel more similar to acme when windows are spawned with the p9p plumber, with the window management handled at a window manager level, rather than integrated into the text editor. (If you're unfamiliar with acme, it's a text editor written by Rob Pike for Plan 9 after he got drunk one night and forgot that he wrote "cat -v considered harmful.")

dewm is written in a literate programming style, in the hopes that it can inspire anyone else who's ever wanted to write their own window manager that they can learn enough to do it. I knew next to nothing about the X11 protocol or ICCCM conventions when I started this (and still don't), so if I got anything wrong please feel free to either send a pull request or email me so I can correct it. I don't want to misinform anyone who reads the markdown source in the src/ directory.

Basics

dewm arranges the screen into columns, and divides columns up between windows that are in that column. Windows always spawn in the first empty column, or the end of the last column if there are no empty columns. (If no columns exist, the first one is created automatically.)

By default, all columns are equally sized, and each window in any given column is equally sized, but they can be resized dynamically (see keybindings below).

Keybindings

These keybindings are currently hardcoded, but may one day be configurable.

Window Management

  • Alt-H/Alt-L move the current window left or right 1 column.
  • Alt-J/Alt-K move the current window up or down 1 window in current column
  • Ctrl-Alt-Up/Down increase/decrease the size of the current window. Other windows will be dynamically resized to make sure the column still takes the whole height of the screen.)
  • Ctrl-Alt-Left/Right increase/decrease the size of the column with the currently active window. (Other columns will be dynamically resized to make up for it.)
  • Ctrl-Alt-Enter toggle whether or not the current window is maximized.
  • Ctrl-Shift-N create a new column
  • Ctrl-Shift-D delete any empty columns

Other

  • Alt-E spawn an xterm
  • Alt-Q close the current window
  • Alt-Shift-Q destroy the current window
  • Ctrl-Alt-Backspace quit dewm

Screenshots

This is what dewm looks like with two windows in two columns:

dewm with two columns

And this is it looks like if, after browsing a bit, you threw an xterm into the mix.

dewm with multiple windows in a column

Installation

The generated go files are included in this repo, so that you can install dewm with the standard go get tool (go get github.com/driusan/dewm)

You should then be able to add:

dewm

to the end of your .xinitrc or .xsession file (assuming $GOBIN is in your path, otherwise you'll have to include the full the path to the executable, wherever go get compiled it to.)

License

Any code that I've written is MIT licensed. I've often used taowm as a reference when figuring out how to do things. I don't think any reasonable person would say this is a derivative work, but to be safe, LICENSE.taowm contains the taowm (3-clause BSD) license and applies to any code that explicltly comes from there.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].