oxwm github discord tonybtw.com

Installation

NixOS

oxwm is in nixpkgs. Add this to configuration.nix:

{ config, pkgs, ... }:

{
  services.xserver.windowManager.oxwm.enable = true;
}

Rebuild with sudo nixos-rebuild switch and pick oxwm in your display manager.

Flake

The oxwm repo is also a flake. It exports the package, a NixOS module and a Home Manager module.

{
  inputs.oxwm.url = "github:tonybanters/oxwm";
}

Import oxwm.nixosModules.default to get the same services.xserver.windowManager.oxwm options built from the latest source. Import oxwm.homeManagerModules.default to get programs.oxwm, which writes the Lua config for you from Nix options. The options live in hm.nix.

Arch Linux

Install oxwm-git from the AUR:

yay -S oxwm-git

The package installs a session file, so display managers pick it up.

From source

You need Zig 0.16.0 or newer and the X11 development libraries. Lua is fetched and built by zig build, so you do not need it installed.

On Arch the dependencies are:

sudo pacman -S zig libx11 libxft freetype2 fontconfig libxinerama libinput systemd-libs

On other distros, install the same libraries with their development headers.

Then build and install:

git clone https://github.com/tonybanters/oxwm
cd oxwm
zig build -Doptimize=ReleaseSmall --prefix /usr

If you want the session file, the man page and the Lua type definitions installed too, use this instead:

zig build -Doptimize=ReleaseSmall install-system

It asks for sudo and copies files to these paths:

File Path
Binary /usr/bin/oxwm
Session entry /usr/share/xsessions/oxwm.desktop
Man page /usr/share/man/man1/oxwm.1
Type definitions /usr/share/oxwm/oxwm.lua

zig build uninstall-system removes them again. Your config in ~/.config/oxwm is left alone.

Touchpad gestures

Swipe gestures for the scrolling layout use libinput and libudev. They are compiled in by default on Linux. To build without them:

zig build -Doptimize=ReleaseSmall -Dno_gestures

BSD

libinput gestures are Linux only, so the BSD build steps leave them out:

zig build freebsd

openbsd, netbsd and bsd do the same thing.

Starting oxwm

startx

Add this to ~/.xinitrc:

exec oxwm

Then run startx.

Display manager

If the session file is installed, oxwm shows up in the session list of LightDM, GDM, SDDM and friends.

Next

Head to the quick start to create a config.