- C 95.5%
- Roff 2.8%
- Makefile 1.4%
- Shell 0.3%
|
|
||
|---|---|---|
| modules | ||
| .gitignore | ||
| config.def.h | ||
| config.mk | ||
| drw.c | ||
| drw.h | ||
| LICENSE | ||
| LICENSE.dwm | ||
| Makefile | ||
| modules.def.h | ||
| README.md | ||
| rvx | ||
| util.c | ||
| util.h | ||
| vxwm.1 | ||
| vxwm.c | ||
vxwm
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
Build and Requirements
In order to build vxwm you need the Xlib, Xft and Xinerama header files.
Arch Linux:
sudo pacman -Sy libx11 libxft libxinerama
Void Linux:
sudo xbps-install -S libX11 libX11-devel libXft libXft-devel libXinerama libXinerama-devel
Gentoo GNU/Linux:
doas emerge -av x11-libs/libX11 x11-libs/libXft x11-libs/libXinerama
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
# yes, run make first and only then
sudo make clean install
Running vxwm
You will need startx utility installed.
Your .xinitrc should be something like this to start vxwm using startx:
#!/bin/sh
exec vxwm
If you want to restart vxwm without losing your session or for hot configuration
reload, add something like this to your .xinitrc should be something like this:
#!/bin/sh
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
Note
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
vxwmwas made bywh1tepearl, 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
Community
- 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!