Skip to content
ryroniqPublic

About

a dynamic window manager for X, a personal fork of dwm without tags: windows are grouped automatically, and the user mostly just decides their order.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1,740 Commits

Folders and files

Repository files navigation

dgm - dynamic group manager

dgm (Dynamic Group Manager) is an extremely fast, small, and dynamic window manager for X.

This is a personal fork of dwm 6.8 without tags. Windows are grouped automatically: by their position in the window list into groups, which grow as windows open in them, and by WM_CLASS into classes. Each monitor shows the focused window's group in its layout, while the bar lists every window, or only the group's when narrowed; a class filter narrows both to one class. The point is to decide as little as possible yourself — mainly the order of windows — and let the window manager do the rest, the way dwm's layouts already automate arranging windows on screen.

dgm.1 describes the behavior and default keys, CLAUDE.md the design and code, and config.def.h the bindings, which differ substantially from stock dwm's.

Requirements

In order to build dgm you need the Xlib header files.

Installation

Edit config.mk to match your local setup (dgm is installed into the /usr/local namespace by default).

Afterwards enter the following command to build and install dgm (if necessary as root):

make clean install

config.h is generated from config.def.h only if it doesn't already exist, so after editing config.def.h run rm config.h (or make clean) before rebuilding, or your changes will be silently ignored.

Testing

make test     # unit tests of the group bookkeeping, no X needed
make xtest    # dgm itself under a headless Xvfb server

make xtest needs Xvfb, xdotool, xprop, xwininfo and st (see tests/run.sh).

Running dgm

Add the following line to your .xinitrc to start dgm using startx:

exec dgm

In order to connect dgm to a specific display, make sure that the DISPLAY environment variable is set correctly, e.g.:

DISPLAY=foo.bar:1 exec dgm

(This will start dgm 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 dgm

Configuration

The configuration of dgm is done by creating a custom config.h and (re)compiling the source code.

About

a dynamic window manager for X, a personal fork of dwm without tags: windows are grouped automatically, and the user mostly just decides their order.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages