dwm
is an extremely fast, small, and dynamic window manager for X.
Each patch applied to this version of dwm lives in a separate branch in this repository. Such a branch can either be a vanilla patch like they can be downloaded from the suckless website, or a modified patch, or a completely custom patch. Below you find all the applied patches in the order they were merged into the master branch of this repository.
- download my combined patch ‧ my alpha patch ‧ my systray patch
- see combined branch ‧ alpha branch ‧ systray branch
Combining the alpha
patch with the systray
patch is not easy.
Hence, I first combined them in a separate branch, systray+alpha
,
before merging them into master. I highly recommend using the combined
patch if you want both alpha
and systray
at the same time.
- download my modified patch
- see branch
- see example dwm_autostart script.
The vanilla autostart patch from the suckless website is already very
minimal. In this modified patch, I removed the blocking call and
assumed the script dwm_autostart
is added to the path. An example
dwm_autostart
script can be found in this repository.
- download my custom patch
- see branch
- see example dwm_status script.
This is a completely custom patch I use to make the dwm
status bar
interactive. The statusbar is still set with xsetroot
, however a
unique character is used as delimiter between each widget. By using
this delimiter, dwm
can figure out which widget was clicked and
calls in turn dwm_status
(which should be placed in your path) with
two arguments: the widget index and the mouse button. The dwm_status
script can then use that info to start a specific action. An example
dwm_status
script can be found in this repository.
Note that the supplied dwm_status
script requires
FontAwesome
to render the status bar icons.
hiddentag
- download my custom patch
- see branch
This small custom patch adds a hidden (invisible) tag to the tagset.
- download my custom patch
- see branch
The mastermon patch introduces a "master" monitor. The master monitor is the only monitor with tags. All other monitors will have no tags. The tags from the master can be accessed (enabled/disabled/send to) with the normal keybindings from any monitor. This makes the tag system a lot less confusing in a multi monitor setup.
Why is this useful? In most multi-monitor setups you'll usually have a preferred monitor to work on anyway. Other monitors will be less important and will mostly be used to station content in view. If this resembles your workflow, this patch is for you!
Some new kind of keybindings were added: mod+[z|x|c|v]
to move focus
to monitor 1,2,3 or 4 and mod+shift+[z|x|c|v]
to move the focused
window to monitor 1,2,3 or 4. Moreover, mod+ctrl+m
can be used to "promote"
the current monitor to the master monitor and mod+ctrl+tab
to
quickly swap the content between two adjacent monitors.
- download my modified patch
- see branch
Gaps between windows. Who doesn't want them? I removed the borders from non-active windows as well.
Restart dwm
with mod+ctrl+shift+q
- download my custom patch
- see branch
Enables color emojis when
libxft-bgra
is installed on the system (currently only checks this by doing a
Pacman query). If libxft-bgra
is not installed, color emojis will be
ignored.
- download my modified patch
- see branch
Read in colors from Xresources and apply them to dwm.
- download my modified patch
- see branch
Place floating windows in the center of the screen. I fixed this patch for multi-monitor setups.
Only allow clients to fullscreen into space currently given to them.
- download my modified patch
- see branch
Due to fakefullscreen
, which limits the fullscreen of an application
to its window size, we need a way to force fullscreen when we want it:
mod+ctrl+f
. I
- download my modified patch
- see branch
Simply cycle through the available layouts with mod+;
.
If a terminal spawns a process without disowning it, the terminal will try to "swallow" the program, i.e. the terminal hides itself behind the window it spawned until the spawned window/process is stopped.
Make a window 'sticky', i.e. show it on all tags with mod+shift+o
.
This repository also contains some older versions of my dwm build as seperate branches of this repository:
the current version (should be more or less up to date with master)
The previous version: a build with similar features as v2 but with more bugs and less clean separation of the applied patches.
My first attempt at customizing dwm
. Only here to archive. I do not
recommend building this one.
This branch attempts to be up to date with upstream dwm: git.suckless.org/dwm.
In order to build dwm
you need the Xlib header files.
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
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
The configuration of dwm
is done by creating a custom config.h
and (re)compiling the source code.
This dwm
fork is based on the suckless upstream: https://dwm.suckless.org/