What is it? · How do I get it? · Demo · Configuring
What is it?
nwwm is an experimental tiling window manager for X11 written in Rust, using XCB.
- minimal config through
~/.config/nwwm/config.toml - monocle and master/stack tiling
- support for multiple workspaces
- click-to-focus
How do I get it?
nwwm is experimental software, and as such:
- is not recommended for daily use, and
- is not available on package managers.
Prerequisites
- Linux (this project doesn't work on MacOS or Windows)
- Rust and Cargo
- If you don't have Rust, you can get it from rustup.sh
- X11
- Xephyr
- Some form of Git (Git, GitHub CLI, or some form of Git client)
Installing / testing
to use nwwm, you'll need to clone the repo, build the project, and test it in Xephyr
- Clone the repository using your method of choice:
- With Git:
git clone https://github.com/annaxiomm/nwwm - With GitHub CLI:
gh repo clone annaxiomm/nwwm - Or any other way you choose, as long as you get the code
- Enter the directory with
nwwm - Run the
./test.shscript. This will build the project and open a Xephyr window with nwwm running - Focus the Xephyr window and press ctrl+shift to give nwwm keyboard focus
- Go ham!
By default, nwwm will run kitty and polybar at startup. You will need to install these separately through your distro's package manager, or, alternately, run nwwm once, quit it, modify the config file to fit your preferences (see Configuring), and then relaunch nwwm
Demo
This project is primarily designed for Hack Club's Stardance program. I am aware that most people will not be able to, or willing to test nwwm on their own machines so here I've provided a short demo video outlining nwwm's basic features and operation.
Configuring
nwwm is configured via a TOML config file, which is by default located at ~/.config/nwwm/config.toml or wherever your config directory is). If no configuration file is present, nwwm will attempt to create one using its defaults.
The default config file is provided below. For more in-depth configuration docs, see Documentation
e border around windows, in px border_width = 3 # colour of the border of focused windows, in hex border_focused = "#a9a9a9" # colours can either be in the form #RRGGBB... # colour of the border of unfocused windows, in hex border_unfocused = "808080" # ...or RRGGBB # mod key to be used in keyboard shortcuts mod_key = "Mod4" # Meta key # default layout that will be applied to all workspaces at startup default_layout = "masterstack" gaps_inner = 10 gaps_outer = 10 startup = [ "polybar", "feh --bg-fill ~/Pictures/Wallpapers/blahaj.png", ] keybinds = { "mod+shift+q" = "quit", "mod+e" = "focus next", "mod+q" = "focus last", "mod+c" = "closewindow", "mod+return" = "exec kitty", "mod+r" = "exec rofi -show run", "mod+1" = "setworkspace 1", "mod+2" = "setworkspace 2", "mod+3" = "setworkspace 3", "mod+4" = "setworkspace 4", "mod+5" = "setworkspace 5", "mod+shift+1" = "movetoworkspace 1", "mod+shift+2" = "movetoworkspace 2", "mod+shift+3" = "movetoworkspace 3", "mod+shift+4" = "movetoworkspace 4", "mod+shift+5" = "movetoworkspace 5", "mod+m" = "setlayout monocle", "mod+s" = "setlayout masterstack", "mod+shift+c" = "setlayout columns", "mod+shift+s" = "exec flameshot gui" }