myvxwm

[fork] my vxwm config (optimised for my T480)
git clone https://git.lukeonline.net/repos/myvxwm
Log | Files | Refs | README | LICENSE

commit 645529f24ad34546be8d1f50db8acd41adfe5f40
parent 6b06afd1c1ab0f4172326954b2a5580c2c862bb8
Author: wh1tepearl <wh1tepearl@noreply.codeberg.org>
Date:   Fri, 17 Apr 2026 23:02:14 +0200

Merge pull request 'docs: update README.md' (#14) from ivankopylov6603/vxwm:readme into main

Reviewed-on: https://codeberg.org/wh1tepearl/vxwm/pulls/14

Diffstat:
MREADME.md | 170++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------
1 file changed, 103 insertions(+), 67 deletions(-)

diff --git a/README.md b/README.md @@ -1,129 +1,165 @@ -# vxwm - Versatile X Window Manager for x11 forked from dwm +# vxwm -# 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. +vxwm - Versatile X Window Manager for X11 forked from `dwm`. -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. +## About -vxwm has repositories on: -[codeberg](https://codeberg.org/wh1tepearl/vxwm) -[github](https://github.com/wh1tepearll/vxwm) (readonly mirror) +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`. -# Requirements +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. -In order to build vxwm you need the Xlib, Xft and Xinerama header files. +### vxwm has repositories -## Deps Installation +- [Codeberg](https://codeberg.org/wh1tepearl/vxwm) +- [GitHub (read-only mirror)](https://github.com/wh1tepearll/vxwm) + +## 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 +```bash +sudo pacman -Sy libx11 libxft libxinerama +``` Void Linux: - sudo xbps-install -S libX11 libX11-devel libXft libXft-devel libXinerama libXinerama-devel +```bash +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 +Gentoo GNU/Linux: -# Getting Started: +```bash +doas emerge -av x11-libs/libX11 x11-libs/libXft x11-libs/libXinerama +``` ## Installation -Clone this repository and cd into it. +Clone this repository and `cd` into it. - git clone https://codeberg.org/wh1tepearl/vxwm.git - cd vxwm +```bash +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). +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) +```bash +make +# yes, run make first and only then +sudo make clean install +``` ## Running vxwm -You will need startx utility installed. +You will need `startx` utility installed. + +Your `.xinitrc` should be something like this to start vxwm using `startx`: -Your .xinitrc should be something like this to start vxwm using startx: +```bash +#!/bin/sh - #!/bin/sh - exec vxwm +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: +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 +```bash +#!/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.: +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 +```bash +DISPLAY=:1 exec vxwm +``` -(This will start vxwm on display :1) +> [!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: +like this in your `.xinitrc`: - while xsetroot -name "`date` `uptime | sed 's/.*,//'`" - do - sleep 1 - done & - exec vxwm +```bash +while xsetroot -name "`date` `uptime | sed 's/.*,//'`" +do + sleep 1 +done & +exec vxwm +``` +## Configuration -# Configuration +The configuration of vxwm is done by editing config.h and modules.h to match +your preferences and (re)compiling the source code. -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 -## 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): -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 }; +```c +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 }; +```c +static const char *yoursillyprogramcmd[] = { "yoursillyprogram", "arg1", "arg2", NULL}; +``` -etc. +etc... And then add this to keys massive: - { MODKEY|ShiftMask, XK_u, spawn, {.v = yoursillyprogramcmd } }, +```c +{ MODKEY|ShiftMask, XK_u, spawn, {.v = yoursillyprogramcmd } }, +``` -## Modules +### 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 +## 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. +- `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 +- hevel wayland compositor: <https://git.sr.ht/~dlm/hevel> +- 5element: <https://hg.sr.ht/~umix11/5element> +## Community - -> [!NOTE] -> If you encounter any bugs - **please make an issue!**<br> -> If you want something added - **please make an issue!**<br> -> If you want to change something - **please make an issue!** +- 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!**