gabo's fork of
██╗ `
██║ `
████████║ ██╗ ██████████╗
██╔═══██║ ██║ ██╔═██╔═██║
████████████████║ ██║ ██║
╚═══════════════╝ ╚═╝ ╚═╝
dynamic window manager
dwm is an extremely fast, small, and dynamic window manager for X.
Requirements
In order to build dwm you need the Xlib
header files.
⚙️ Installation
Edit config.mk
to match your local setup (dwm is installed into
the /usr/local
namespace by default).
`
Afterwards enter the following command to build and install dwm (if
necessary as root):
make clean install
🔄 Running dwm
Add the following line to your .xinitrc to start dwm using startx:
exec dwm
In order to connect dwm to a specific display, make sure that the DISPLAY environment variable is set correctly, e.g.:
DISPLAY=foo.bar:1 exec dwm # This will start dwm on display :1 of the host foo.bar.
In order to display status info in the bar, you can do something like this in your .xinitrc:
while xsetroot -name "`date` `uptime | sed 's/.*,//'`"
do
sleep 1
done &
exec dwm
🔧 Customizing dwm
The customization/configuration of dwm is done by creating a custom config.h
and (re)compiling the source code.
⌨️ Current Keybinds
Keyboard
navigation
Bind | Command |
---|---|
mod + [1-9] |
Switch to tag [1-9] |
mod + 0 |
View all tags |
mod + shift + [1-9] |
Move client to tag [1-9] |
mod + [z / x] |
Move focus of window stack |
mod + shift + [z / x] |
Move position of window stack |
mod + shift + q |
Kill client |
layouts
Bind | Command |
---|---|
mod + t |
Set layout to tile |
mod + f |
Set layout to floating |
mod + m |
Set layout to monocle |
mod + space |
Alternate two latest used layouts |
mod + shift + space |
Toggle floating on client |
mod + s |
Make window sticky |
commands
Bind | Command |
---|---|
mod + w |
Spawn scratchpad terminal |
mod + shift + w |
Spawn new terminal |
mod + b |
Toggle status bar |
mod + print |
Screenshot |
mod + r |
Restart dwm |
menus
Bind | Menu |
---|---|
mod + d |
Spawn application laucher (j4-dmenu-desktop) |
mod + shift + d |
Spawn web search (dmenu_tsearch) |
mod + shift + 9 |
Spawn dial menu (custom tmenu) |
mod + shift + e |
Spawn focus menu (custom tmenu) |
mod + shift + tab |
Spawn opened windows menu (dmenu_twindow) |
mod + shift + p |
Spawn password menu (passmenu) |
media controls
Bind | Command |
---|---|
mod + ctrl + [left / right] |
Brightness control using personal script |
mod + ctrl + [up / down] |
Volume control using personal script |
mod + ??? |
Mute volume |
mod + ??? |
Play/pause media |
gaps control
Bind | Command |
---|---|
mod + g |
toggle gaps |
mod + alt + g |
set default gaps |
mod + alt + [z / x] |
increase/decrease general outer gaps |
mod + alt + ctrl + [z / x] |
increase/decrease general inner gaps |
mod + alt + [up / down] |
increase/decrease horizontal outer gaps |
mod + alt + ctrl + [up / down] |
increase/decrease horizontal inner gaps |
mod + alt + [left / right] |
increase/decrease vertical outer gaps |
mod + alt + ctrl + [left / right] |
increase/decrease vertical inner gap |
➕ Current Patches
Essential stuff
restartsig
- allow dwm to self restart, without the need of leaving Xorg and calling dwm again;
- https://dwm.suckless.org/patches/restartsig/
alwayscenter
- makes any new floating window spawn in center of the screen;
- https://dwm.suckless.org/patches/alwayscenter/
Visual
centretitle
- status bar displays window title at its center;
- https://dwm.suckless.org/patches/centretitle/
vanitygaps
- adds gaps for tiling layout;
- there isn't gaps for monocle layout, but the community finds a way;
- https://dwm.suckless.org/patches/vanitygaps/
Utilities
focusonnetactive
- allows dwm to work with
wmctrl -a
, necessary for twindow; - https://dwm.suckless.org/patches/focusonnetactive/
push
pushup
andpushdown
provide a way to move clients inside the clients list;- https://dwm.suckless.org/patches/push/
tapresize
- Allows to resize windows with touchpad;
- https://dwm.suckless.org/patches/tapresize/
scratchpad
- Allows to spawn or restore a floating terminal window;
- https://dwm.suckless.org/patches/scratchpad/
↗️ Other repositories to check
- gbgabo/dotfiles: current dotfiles used in my system;
- gbgabo/dmenu: dmenu fork with center patch and own color theme;
- gbgabo/scripts: personal scripts for volume control, brightness;
- TinyTools: mainly tmenu and tsearch, both used as dmenu wrappers for custom menus and search;
- gbgabo/wallpapers: dedicated repository for all my wallpapers;