README.md (4185B)
1 # vxwm 2 3 vxwm - Versatile X Window Manager for X11 forked from `dwm`. 4 5 ## About 6 7 vxwm represents a significantly enhanced version of `dwm` that maintains its 8 lightweight nature while offering modular flexibility. Instead of manually 9 applying patches, you can toggle pre-installed features directly in the 10 configuration by switching values between 0 and 1, it is all manageable via 11 `modules.h`. 12 13 The defining feature of vxwm is its implementation of infinite tags. While 14 traditional tiling managers act like a slide projector, swapping one static view 15 for another, vxwm treats the screen as a viewport over a vast, continuous 16 canvas. Windows aren't hidden or layered; they exist on an infinite surface, and 17 you simply move your perspective across it. You can slide your view to find more 18 space, snap focus to a specific window, or return to the origin using the 19 homecanvas bind. Even though this sounds complex, this isn't resource hungry and 20 isn't hard to use. 21 22 ### vxwm has repositories on 23 24 - [Codeberg](https://codeberg.org/wh1tepearl/vxwm) 25 - [GitHub (read-only mirror)](https://github.com/wh1tepearll/vxwm) 26 27 ## Build and Requirements 28 29 In order to build vxwm you need the `Xlib`, `Xft`, `Xinerama` header files and some sort of `make`. 30 31 Arch Linux: 32 33 ```bash 34 sudo pacman -Sy libx11 libxft libxinerama make 35 ``` 36 37 Void Linux: 38 39 ```bash 40 sudo xbps-install -S libX11 libX11-devel libXft libXft-devel libXinerama libXinerama-devel make 41 ``` 42 43 Gentoo GNU/Linux: 44 45 ```bash 46 doas emerge -av x11-libs/libX11 x11-libs/libXft x11-libs/libXinerama make 47 ``` 48 49 ## Installation 50 51 Clone this repository and `cd` into it. 52 53 ```bash 54 git clone https://codeberg.org/wh1tepearl/vxwm.git 55 cd vxwm 56 ``` 57 58 Edit `config.mk` to match your local setup (vxwm is installed into 59 the `/usr/local` namespace by default). 60 61 Afterwards enter the following commands to build and install vxwm: 62 63 ```bash 64 make 65 # yes, run make first and only then 66 sudo make clean install 67 ``` 68 69 ## Running vxwm 70 71 You will need `startx` utility installed. 72 73 Your `.xinitrc` should be something like this to start vxwm using `startx`: 74 75 ```bash 76 #!/bin/sh 77 78 exec vxwm 79 ``` 80 81 If you want to restart vxwm without losing your session or for hot configuration 82 reload, add something like this to your `.xinitrc` should be something like this: 83 84 ```bash 85 #!/bin/sh 86 87 vxwm & 88 exec sleep infinity 89 ``` 90 91 And then for restarting vxwm use the rvx utility. 92 93 In order to connect vxwm to a specific display, make sure that the `DISPLAY` 94 environment variable is set correctly, e.g.: 95 96 ```bash 97 DISPLAY=:1 exec vxwm 98 ``` 99 100 > [!NOTE] 101 > This will start vxwm on display :1 102 103 In order to display status info in the bar, you can do something 104 like this in your `.xinitrc`: 105 106 ```bash 107 while xsetroot -name "`date` `uptime | sed 's/.*,//'`" 108 do 109 sleep 1 110 done & 111 exec vxwm 112 ``` 113 114 ## Configuration 115 116 The configuration of vxwm is done by editing config.h and modules.h to match 117 your preferences and (re)compiling the source code. 118 119 ### Adding custom keybinds 120 121 Add this to `config.h` and replace `yoursillyprogram` with the actual `cmd` that 122 will be executed in hte keybind (recommended adding it right before keys array): 123 124 ```c 125 static const char *yoursillyprogramcmd[] = { "yoursillyprogram", NULL }; 126 ``` 127 128 If your cmd uses multiple arguments, you should write them like this: 129 130 ```c 131 static const char *yoursillyprogramcmd[] = { "yoursillyprogram", "arg1", "arg2", NULL}; 132 ``` 133 134 etc... 135 136 And then add this to keys massive: 137 138 ```c 139 { MODKEY|ShiftMask, XK_u, spawn, {.v = yoursillyprogramcmd } }, 140 ``` 141 142 ### Modules 143 144 Enable/disable (0/1) modules you need/don't need, thats it. 145 146 > [!NOTE] 147 > After any change in config/modules recompile vxwm and restart using rvx. 148 149 ## Acknowledgements 150 151 - `vxwm` was made by `wh1tepearl`, many thanks to [suckless.org] and the [dwm] 152 developers for making dwm in first place. 153 - Thanks 5element developer and hevel wayland compositor developers 154 for the inspiration of infinite tags. 155 156 Also try: 157 158 - hevel wayland compositor: <https://git.sr.ht/~dlm/hevel> 159 - 5element: <https://hg.sr.ht/~ohmu/5element> 160 161 ## Community 162 163 - If you encounter any bugs - **please make an issue!** 164 - If you want something added - **please make an issue!** 165 - If you want to change something - **please make an issue!**