33 releases
0.0.34 | Feb 28, 2022 |
---|---|
0.0.33 | Nov 22, 2021 |
0.0.31 | Aug 22, 2021 |
0.0.28 | Jul 30, 2021 |
0.0.13 | Jul 31, 2020 |
#954 in GUI
111 downloads per month
Used in 2 crates
66KB
1.5K
SLoC
umberwm 🐏
Minimalistic X window manager based on tinywm, inspired by qtile.
Video introduction on LBRY or on youtube.
Tutorial and demo with x11docker
- install x11docker
- clone this repo
cd umbertutor
make
Design goals and features
- Kiss: only window management (no taskbar, system tray, ...), complex stuff should be done using
other programs (
rofi
, ...) - Configuration can be as code (like
qtile
,dwm
,xmonad
), as RON, or both. - Tiled by default (Binary space partitioning)
- Supports workspaces
- Supports multiple displays
Prerequisites
You will need XCB bindings with the randr extension.
Ubuntu: sudo apt install libxcb-randr0-dev
.
Using it (binary)
- Install rust and cargo
cargo install umberwm
- run it once
umberwm
- it will generate
~/.config/umberwm.ron
(using RON file format) - modify umberwm.ron as you see fit (more details on each field in src/main.rs)
- next time you run
umberwm
, it will take into account your configuration
Using it by modifying the source code
UmberWM
is used/configured in rust, here is how to use it:
-
Clone this project:
git clone https://github.com/yazgoo/umberwm
- Note: if you don't want to modify the source code, you can instead add
umberwm
as a dependency to your own project. See using it as a dependency.
- Note: if you don't want to modify the source code, you can instead add
-
Edit
src/main.rs
. -
Edit
umberwm-start
if desired. Here you can launch any programs you need to before launchingumberwm
. -
Run
cargo build --release
. The binary will be available intarget/release/umberwm
. -
Optionally, run
./install.py
. This will do three things:- Symlink
target/release/umberwm
to/usr/bin
. - Symlink
umberwm-start
to/usr/bin
. - Copy
umberwm.desktop
to/usr/share/xsessions
. This will allow display managers such asGDM
to findumberwm
and allow you to launch it.
- Symlink
-
If you do not use a display manager, you will need to add the following to your
.xinitrc
:exec umberwm-start
Using it as a dependency
If you don't want to modify the source code, you can create your own rust project and add umberwm
as a cargo
dependency.
Cargo.toml
:
# ...
[dependencies]
umberwm = "0.0.21"
You can then supply your own main.rs
rather than editing the existing one. It is advised that you
use main.rs
from this repository as your starting point.
See examples:
Note that you will have to manually set up umberwm-start
and umberwm.desktop
if you wish to use
them.
Hot reloading
Hot reloading allows to restart umberwm
while keeping its state (i.e. keeping track of windows and
their relative workspaces).
This is quite useful when you want to update your configuration.
In wm_actions:
, the action Actions::SerializeAndQuit
will serialize all of its windows and then
quit with exit code 123
.
The umberwm-start
script checks for the exit code 123
and reruns umberwm
, thereby facilitating
a smooth restart.
Dependencies
~2.7–3.5MB
~77K SLoC