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:
| M | README.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!**