my custom build of vxwm
  • C 92.2%
  • Roff 4.3%
  • Makefile 2.1%
  • Shell 1.4%
Find a file
2026-04-02 13:17:33 -04:00
dmenu Add a wallpaper selector and custom dmenu build with a bottom bar 2026-04-02 17:13:41 +00:00
modules Add all 2026-04-01 16:51:32 +02:00
.gitignore Add a wallpaper selector and custom dmenu build with a bottom bar 2026-04-02 17:13:41 +00:00
.xinitrc Add some more things and make kitty default 2026-04-01 17:20:54 +00:00
bg.png Add some more things and make kitty default 2026-04-01 17:20:54 +00:00
config.h Fix shit formatting 2026-04-02 13:17:33 -04:00
config.mk Add all 2026-04-01 16:51:32 +02:00
drw.c Add all 2026-04-01 16:51:32 +02:00
drw.h Add all 2026-04-01 16:51:32 +02:00
kitty.conf Fix setup script to have nerd font installation and kitty config 2026-04-01 17:54:54 +00:00
LICENSE Add all 2026-04-01 16:51:32 +02:00
LICENSE.dwm Add all 2026-04-01 16:51:32 +02:00
Makefile Add some more things and make kitty default 2026-04-01 17:20:54 +00:00
modules.def.h Add all 2026-04-01 16:51:32 +02:00
modules.h Add a wallpaper selector and custom dmenu build with a bottom bar 2026-04-02 17:13:41 +00:00
README.md Add all 2026-04-01 16:51:32 +02:00
rvx Add all 2026-04-01 16:51:32 +02:00
select_wallpaper.sh Add a wallpaper selector and custom dmenu build with a bottom bar 2026-04-02 17:13:41 +00:00
setup.sh Fix conflict with merge 2026-04-02 17:15:28 +00:00
util.c Add all 2026-04-01 16:51:32 +02:00
util.h Add all 2026-04-01 16:51:32 +02:00
vxwm.1 Add all 2026-04-01 16:51:32 +02:00
vxwm.c Add all 2026-04-01 16:51:32 +02:00

vxwm - Versatile X Window Manager for x11 forked from dwm

About

vxwm represents a significantly enhanced version of dwm that maintains its lightweight nature while offering modular flexibility. Instead of manually applying patches, you can toggle pre-installed features directly in the configuration by switching values between 0 and 1, it is all manageable via modules.def.h.

The defining feature of vxwm is its implementation of infinite tags. While traditional tiling managers act like a slide projector, swapping one static view for another, vxwm treats the screen as a viewport over a vast, continuous canvas. Windows aren't hidden or layered; they exist on an infinite surface, and you simply move your perspective across it. You can slide your view to find more space, snap focus to a specific window, or return to the origin using the homecanvas bind. Even though this sounds complex, this isn't resource hungry and isn't hard to use.

vxwm has repositories on:
codeberg
github (readonly mirror)

Requirements

In order to build vxwm you need the Xlib, Xft and Xinerama header files.

Deps Installation

Arch Linux:

sudo pacman -Sy libx11 libxft libxinerama

Void Linux:

sudo xbps-install -S libX11 libX11-devel libXft libXft-devel libXinerama libXinerama-devel

Gentoo Linux:

sudo emerge -av x11-libs/libX11 x11-libs/libXft x11-libs/libXinerama

Getting Started:

Installation

Clone this repository and cd into it.

git clone https://codeberg.org/wh1tepearl/vxwm.git
cd vxwm

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

Afterwards enter the following commands to build and install vxwm:

make
sudo make clean install

(yes, run make first and only then sudo make clean install)

Running vxwm

You will need startx utility installed.

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

exec vxwm

If you want to restart vxwm without losing your session or for hot configuration reload, add something like this to your .xinitrc:

vxwm &
exec sleep infinity

And then for restarting vxwm use the rvx utility.

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

DISPLAY=:1 exec vxwm

(This will start vxwm on display :1)

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 vxwm

Configuration

The configuration of vxwm is done by editing config.h and modules.h to match your preferences and (re)compiling the source code.

Adding custom keybinds

Add this to config.h and replace yoursillyprogram with the actual cmd that will be executed in hte keybind (recommended adding it right before keys array):

static const char *yoursillyprogramcmd[]  = { "yoursillyprogram", NULL };

If your cmd uses multiple arguments, you should write them like this:

static const char *yoursillyprogramcmd[]  = { "yoursillyprogram", "arg1", "arg2", NULL };

etc.

And then add this to keys massive:

{ MODKEY|ShiftMask,             XK_u, spawn,          {.v = yoursillyprogramcmd } }, 

Modules

Enable/disable (0/1) modules you need/don't need, thats it.

Note

After any change in config/modules recompile vxwm and restart using rvx.

Acknowledgements

vxwm was made by wh1tepearl, many thanks to suckless.org and the [dwm] developers for making dwm in first place. Thanks 5element developer and hevel wayland compositor developers for the inspiration of infinite tags.

Also try:

hevel wayland compositor: https://git.sr.ht/~dlm/hevel

5element: https://hg.sr.ht/~umix11/5element

Note

If you encounter any bugs - please make an issue!
If you want something added - please make an issue!
If you want to change something - please make an issue!