- C 92.2%
- Roff 4.3%
- Makefile 2.1%
- Shell 1.4%
| dmenu | ||
| modules | ||
| .gitignore | ||
| .xinitrc | ||
| bg.png | ||
| config.h | ||
| config.mk | ||
| drw.c | ||
| drw.h | ||
| kitty.conf | ||
| LICENSE | ||
| LICENSE.dwm | ||
| Makefile | ||
| modules.def.h | ||
| modules.h | ||
| README.md | ||
| rvx | ||
| select_wallpaper.sh | ||
| setup.sh | ||
| util.c | ||
| util.h | ||
| vxwm.1 | ||
| vxwm.c | ||
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!