Your screen is too small to view this webpage properly. Please rotate your device's screen, or try another device
What is it? · How do I get it? · Demo · Configuring
⚠ WARNING
nwwm is experimental software created mainly as a learning project. it should not be relied on as daily software and is likely to break if you try to use it normally.

What is it?

nwwm is an experimental tiling window manager for X11 written in Rust, using XCB.

How do I get it?

nwwm is experimental software, and as such:

Prerequisites

Installing / testing

to use nwwm, you'll need to clone the repo, build the project, and test it in Xephyr

  1. Clone the repository using your method of choice:
    1. With Git: git clone https://github.com/annaxiomm/nwwm
    2. With GitHub CLI: gh repo clone annaxiomm/nwwm
    3. Or any other way you choose, as long as you get the code
  2. Enter the directory with nwwm
  3. Run the ./test.sh script. This will build the project and open a Xephyr window with nwwm running
  4. Focus the Xephyr window and press ctrl+shift to give nwwm keyboard focus
  5. 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"
}