dwm or dynamic window manager is a window manager. It manages the user's open windows and tiles them according to a set layout (dynamic). This fork has more features and keybinds.
Tiling window managers (unlike floating window managers that you may be used to) tile windows based on a set layout making them easy to get productive on. They also encourage the user to use their keyboard instead of the mouse so that the user doesn't have to move their hands much.
In order to install this build of dwm, all dependencies must be installed. You can see (Dependencies) for a list of all dependencies required to use this fork.
If any warnings show up, fix it by installing the missing dependency.
If a .xinitrc is used, add 'dwm_run' to the end.
NOTE: Your .xinitrc should ONLY contain 'dwm_run'. dwm will automatically start everything else. If not, edit autostart.h and 'make clean install'. If a .xinitrc is not used then you don't need to worry. A .desktop file is automatically created when you run 'make clean install'.
This fork of dwm comes with the following layouts:
Centered Floating Master
Horizontal Bottom Stack
They can be switched between using a little menu (See Keybinds for more information) The more commonly used layouts can be switched between using a quick keybind.
My build of dwm has been patched with the following patches:
dwm-actualfullscreen | Add support for fullscreen applications
dwm-alpha | Provides transparency to dwm
dwm-alttags | Adds different tags if a tag has a window open.
dwm-centeredtitle | Centers the window title
dwm-cool-autostart | Adds a function that allows you to autostart stuff.
dwm-cyclelayouts | Allows you to cycle between layouts using simple keybinds (or fsignal).
dwm-emptyview | Allows you to view dwm without a tag.
dwm-vanitygaps | Adds gaps to dwm (and most patched layouts)
dwm-gridmode | Adds a grid mode layout to dwm.
dwm-hide_vacant_tags | Hides tags that don't have any windows open.
dwm-pertag | Allows you to have different layouts for different tags.
dwm-rainbowtags | Allows you to define different colors for each tag
dwm-statuscmd-nosignal | Allows you to tell your status bar which bar module was clicked.
Super+c & m | Ask the user for a topic and curl cheat.sh
Super+g & t | Toggle gaps
Super+g & 0 | Reset gaps
Super+g & i | Increase inner gaps by 1
Super+Shift+g & i | Decrease inner gaps by 1
Super+g & o | Increase outer gaps by 1
Super+Shift+g & o | Decrease outer gaps by 1
Super+r+v | Open the defined music visualizer
These will only work if your keyboard has special multimedia buttons.
Mute button | Mutes your audio
Up Volume button | Increases your volume
Down Volume button | Decreases your volume
Stop button | Stops your defined music player
Browser button | Opens your defined web browser
Power button | Ask if you wanna shut down, restart or lock your computer.
Email button | Open your defined email client
System button | Open your defined status viewer in a terminal
These binds can be activated using your mouse
Tag <num> (Left click) | Switch to tag <num>
Layout indicator (Left click) | Switch to the next layout
Layout indicator (Middle click) | Switch to the next layout
Layout indicator (Right click) | Open a dmenu list of all layouts
Window title (Left click) | Hide/Show the window
Window title (Right click) | Open dwm-utils
Focused window (Super+Alt+Left click) | Move the focused window around
Focused window (Super+Alt+Middle click) | Make the focused window floating
Focused window title (Middle click) | Rotate stack
Dragging (Super+Right click) | Increase/decrease size of each window
There are also keybinds for statuscmd, but you must implement it into your own status bar. See mouse.h for more information.
These are absolutely necessary, dwm will NOT compile without them
libxft-bgra (Can be installed through 'make <distro>-libxftfix')
NOTE: libXft will do but will cause dwm and as such all your applications to crash if a colored emoji is displayed in the status bar.
Can be disabled through editing config.mk if you're not interested in multiple monitors.
These are dependencies if you wanna use certain features NOTE: Do not add any of these to .xinitrc or similar. They are going to be autostarted by dwm. If you want to use an alternative, change it in options.h.
NOTE: dmenu is required for most scripts included with this build of dwm. My build is required for Pywal support.
xclip (Required for clipboard support by a few scripts, will start automatically)
xwallpaper (Required to set wallpapers automatically)
xmodmap (Install if you want Escape instead of Caps Lock and Right Super+hjkl for arrow keys)
xrdb (Install if you want .Xresources support)
pywal (Install if you want pywal support. Requires swal aka the default way to set wallpapers)
wmctrl (Needed for proper window management)
xsetroot (Needed for most scripts including Pywal support)
slock (Required for screen locking)
maim (Required for built in 'dwm-screenshotutil' script)
This build of dwm comes with binds for software. These must be installed by default but you can change what software is required by editing 'options.h' and running 'make clean install'. You can also remove keybinds by editing 'keybinds.h' and running 'make clean install'.
firefox (Web browser)
htop (Status monitor)
newsboat (RSS reader)
zathura (PDF reader)
alsa-utils (Required for audio controls)
mocp (Default music player)
vim (Text editor)
neomutt (Email client)
maim (Screenshot tool, automatically copies to clipboard using xclip)
vifm (File manager)
slock (Lock screen) And everything under 'Features'.
If you're used to dwm, this build might be a little bit unfamiliar to you. This is because this build doesn't use config.h (or config.def.h). Instead, config.h is split into different parts to make it easier to edit. Instead of editing config.h you'll want to edit:
autostart.h for starting stuff right before dwm (For example xclip, pywal, etc.)
options.h for changing colors and applications to use with keybinds.
fsignal.h for adding fake signals
colors.h for changing alpha options, most users won't need to edit it.
xresources.h for adding .Xresources options
rules.h for adding rules
keybinds.h for adding/removing keybinds.
After you've edited one of the files, you need to run 'make clean install' to reinstall dwm. Remember that you can change colors through your .Xresources file (see .Xresources and Pywal) meaning you do not need to recompile dwm.
Another important detail you must keep in mind is that this build comes with a status bar simply named 'status'. It can be found in the dwm source code directory. It is just a shell script which adds stuff to your status bar. It will automatically be started when dwm starts.
You can edit the status bar simply by editing 'status' and running 'make clean install'. Please note that most status bars including the built in 'status' depends on xsetroot which must be installed.
If you want to change status bar, edit options.h and set 'static char status' to your status bar binary (must be in $PATH). Alternatively, you can also set dwm.status: <statusbar> in .Xresources (See .Xresources and Pywal)
.Xresources and Pywal
This fork of dwm has .Xresources support thanks to the .Xresources patch. It also has pywal support (tool which grabs colors based on your wallpaper).
Colors reload automagically because of a reloadxresources function this build has combined with fsignal and a wallpaper script I wrote. Therefore, if you want colors to reload instantly, you're unfortunately forced to use the bundled wallpaper script.
If you want to use another script, you can open up dwmutils and select 'Reload .Xresources' to reload .Xresources. Alternatively, you can write a script yourself (18 reloads the colors)
Below is a list of all .Xresources values you can define. The .Xresources file should be placed in ~ or ~/.config by the user. If it is not or you want it somewhere else, you can edit 'autostart.h' and 'make clean install'.
Note that the 'xrdb' dependency is required for both pywal and .Xresources support and 'xsetroot' is required for automatic reloading of colors.
Thanks to the 'fsignal' patch available on suckless.org's website, we can easily write shell scripts to interact with dwm. This is exactly what I did and dwm-utils, dwm-swal, dwm-shutdown and more take advantage of it.
In order to use 'fsignal', your system must have 'xsetroot' installed. Then simply use the dwm-utils script. Syntax is dwm-utils -exec <signum>
Below is a list of all signums and what they do.
1 | Switch to the Tiling layout
2 | Switch to the Floating layout
3 | Switch to the Monocle layout
4 | Switch to the Grid layout
5 | Switch to the Deck layout
6 | Switch to the Centered Master layout
7 | Switch to the Centered Floating Master layout
8 | Switch to the Fibonacci Spiral layout
9 | Switch to the Fibonacci Dwindle layout
10 | Switch to the Three Column layout
11 | Switch to the Bottom Stack Vertical layout
12 | Switch to the Bottom Stack Horizontal layout
13 | Switch to the Horizontal Grid layout
14 | Switch to the Tatami layout
15 | To be added
16 | Cycle layout (Previous)
17 | Cycle layout (Next)
18 | Reload colors from .Xresources
19 | Set mfact (-0.05)
20 | Set mfact (+0.05)
21 | Toggle Scratchpad
22 | Toggle Sticky
23 | Toggle Bar
24 | Toggle Fullscreen
25 | Restart dwm keeping all your applications open.
26 | Unused at the moment.
27 | Switch to the Stairs layout
28 | Reset layout and mfact
29 | Reorganize tags
30 | Restart dwm
31 | Shutdown dwm
32 | To be added
33 | To be added
34 | To be added
35 | Switch to the Tiling (5:4) layout
36 | Switch to the Column layout
37 | Switch to the Dynamic Grid layout
Switching run launcher
Some users may prefer to use a different run launcher than dmenu. Previously all scripts bundled would only run dmenu from $PATH but you can now switch run launcher very easily.
Edit options.h and change RUN to your run launcher
Add export RUNLAUNCHER=<runlauncher> to your .<shell>rc
Run launchers must support dmenu arguments because otherwise scripts are going to be incompatible. It must also support the additional '-g' argument that the dmenu grid patch provides unless you modify the scripts bundled. Keep in mind that if you use a different run launcher, it may not support Pywal/.Xresources.
This page was auto generated by the dwm-help script bundled with dwm. It acts as the help script and it writes documentation to HTML, Markdown and plain text from documentation in the docs folder and data grabbed from your current system.