aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
blob: 22dd2cc4acd9a6f6310ae833a154017d069ada19 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# 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](https://codeberg.org/wh1tepearl/vxwm)   
[github](https://github.com/wh1tepearll/vxwm) (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!**<br>
> If you want something added - **please make an issue!**<br>
> If you want to change something - **please make an issue!**