OXWM(1)
π OXWM(1) β the manual page, but make it slay
okay so bestie, you're reading the oxwm man page and honestly? iconic of you. let's get into it π«Ά
β¨ NAME β¨
oxwm β a dynamic tiling window manager for X11 written in Zig π¦
β¨ SYNOPSIS β¨
oxwm [OPTIONS]
π DESCRIPTION π
So oxwm is a lightweight, dynamic tiling window manager for X11, and the whole vibe is "inspired by dwm but we ditched the suckless philosophy" β no cap. π
Configuration happens through a runtime-loadable Lua config file, which means instant hot-reload and you literally never have to recompile. not me, not recompiling, ever πβ¨
The features are giving main character energy:
- tag-based workspaces
- multiple layouts (tiling, floating, monocle, grid, tabbed)
- configurable gaps
- a modular status bar
- keychord support
- window rules
- autostart commands
- multi-monitor support
- persistent window state across restarts
π OPTIONS π
--initβ creates the default config file at~/.config/oxwm/config.lua--configPATH β use a custom config file at the specified path--versionβ print version information and exit--helpβ print help message and exit
πΈ CONFIGURATION πΈ
oxwm reads its config from ~/.config/oxwm/config.lua. If there's no config on first launch, a default template gets created automatically β so thoughtful of it π₯Ή
The config file uses Lua and hands you a comprehensive API for customization, like:
- Keybindings (including multi-key keychords)
- Colors and appearance (borders, gaps)
- Status bar blocks (battery, RAM, datetime, shell commands, static text)
- Window rules (per-application settings)
- Autostart commands
- Layout symbols
- Tag names (supports Unicode/Nerd Font icons) π§
After editing the config, reload with Mod+Shift+R β no compilation, no X restart, nothing. obsessed.
LSP support is available via the ~/.config/oxwm/oxwm.lua type definitions file for autocomplete in editors β¨
π DEFAULT KEYBINDINGS π
The default modifier key is Super (Mod4). Every single binding here is customizable in config.lua, iykyk.
πͺ Window Management
Super+Returnβ spawn terminal (default:alacritty)Super+Qβ kill focused windowSuper+J,Super+Kβ cycle focus down/up through windowsSuper+Shift+J,Super+Shift+Kβ move window down/up in stack (swap position)Super+Shift+Spaceβ toggle floating mode for focused windowSuper+Shift+Fβ toggle fullscreen for focused window
π§© Layouts
Super+Fβ switch to normie (floating) layoutSuper+Cβ switch to tiling layoutSuper+Nβ cycle through available layoutsSuper+Aβ toggle gaps on/off
π― Master Area (Tiling Layout)
Super+Hβ decrease master area widthSuper+Lβ increase master area widthSuper+Iβ increment number of master windowsSuper+Pβ decrement number of master windows
π·οΈ Tags (Workspaces)
Super+1..9β view tag 1-9Super+Shift+1..9β move focused window to tag 1-9Super+Control+1..9β toggle multi-tag viewing (view multiple tags simultaneously)Super+Control+Shift+1..9β toggle window on multiple tags (sticky window)
π₯οΈ Monitors
Super+Commaβ focus previous monitorSuper+Periodβ focus next monitorSuper+Shift+Commaβ send window to previous monitorSuper+Shift+Periodβ send window to next monitor
π Launchers
Super+Dβ launchdmenuSuper+Sβ take screenshot withmaim(selection to clipboard)
βοΈ Window Manager
Super+Shift+Qβ quitoxwmSuper+Shift+Rβ hot reloadoxwm(reload config without restarting X)Super+Shift+/β show keybindings overlay
π±οΈ MOUSE BINDINGS π±οΈ
Super+Button1(drag) β move window in floating modeSuper+Button3(drag) β resize window in floating mode
Also: clicking on a tag number in the status bar switches to that tag. tiny detail, big convenience π
π¦ LAYOUTS π¦
oxwm provides these layouts, bestie:
- Tiling β master/stack layout with adjustable master area size and number of master windows.
- Normie β floating-by-default layout where windows can be freely positioned.
- Monocle β fullscreen stacking layout showing one window at a time per tag.
- Grid β equal-sized grid layout distributing windows evenly.
- Tabbed β tabbed container layout with a tab bar for switching between windows.
πΉ KEYCHORDS πΉ
oxwm supports multi-key sequences called keychords. These let you bind commands to sequences like "Super+Space then T". yes, a combo. a little key combo meal π
Example keychord in config.lua:
oxwm.key.chord({
{ modifiers = { "Mod4" }, key = "space" },
{ modifiers = {}, key = "t" },
}, oxwm.spawn_terminal)
Press Escape to cancel any in-progress keychord sequence. lifesaver fr π
πͺ WINDOW RULES πͺ
Window rules let you do per-application settings based on window class, instance, or title:
oxwm.rule.add({
class = "Firefox",
floating = false,
tag = 2,
})
Rule properties:
classβ match window class (substring)instanceβ match window instance (substring)titleβ match window title (substring)floatingβ force floating mode (true/false)tagβ auto-assign to specific tag (1-9)monitorβ auto-assign to specific monitor
π STATUS BAR π
The status bar displays tags, the layout indicator, the window title, and customizable blocks. it's giving customizable dashboard π
π§± Block Types
- DateTime β date/time with customizable format string
- RAM β RAM usage display (used/total)
- Battery β battery status with charging/discharging/full states
- Shell β execute shell command and display output
- Static β static text display
βοΈ Block Configuration
Each block supports:
colorβ text color (hex:#RRGGBBor0xRRGGBB)underlineβ underline colorintervalβ update interval in seconds
π Color Schemes
Tag colors can be customized for three states:
- Normal β unoccupied tags
- Occupied β tags containing windows
- Selected β currently viewed tag
π LUA API π
The configuration uses the following Lua API modules:
β Core Functions
oxwm.set_terminal(term)β set terminal emulatoroxwm.set_modkey(modkey)β set modifier key (Mod1-5,Shift,Control)oxwm.set_tags(tags)β define workspace tag namesoxwm.autostart(cmd)β add autostart commandoxwm.spawn(cmd)β spawn command/programoxwm.spawn_terminal()β spawn configured terminaloxwm.quit()β quit window manageroxwm.restart()β restart window manageroxwm.show_keybinds()β show keybindings overlay
β¨οΈ Key Bindings (oxwm.key)
oxwm.key.bind(modifiers, key, action)β single key bindingoxwm.key.chord(keyseq, action)β multi-key sequence binding
πΌοΈ Border (oxwm.border)
oxwm.border.set_width(pixels)oxwm.border.set_focused_color(color)oxwm.border.set_unfocused_color(color)
π³οΈ Gaps (oxwm.gaps)
oxwm.gaps.set_enabled(bool)oxwm.gaps.set_inner(h, v)oxwm.gaps.set_outer(h, v)oxwm.gaps.set_smart(bool)β enable smart gaps (no gaps with single window)
πͺ Client (oxwm.client)
oxwm.client.kill()oxwm.client.toggle_fullscreen()oxwm.client.toggle_floating()oxwm.client.focus_stack(direction)oxwm.client.move_stack(direction)
π§© Layout (oxwm.layout)
oxwm.layout.set(name)β set specific layout ("tiling","normie","monocle","grid","tabbed")oxwm.layout.cycle()
π·οΈ Tag (oxwm.tag)
oxwm.tag.view(index)oxwm.tag.toggleview(index)oxwm.tag.move_to(index)oxwm.tag.toggletag(index)
π₯οΈ Monitor (oxwm.monitor)
oxwm.monitor.focus(direction)β focus monitor (-1prev,1next)oxwm.monitor.tag(direction)β move window to monitor
π Bar (oxwm.bar)
oxwm.bar.set_font(font)β set bar font (XFT format)oxwm.bar.set_blocks(blocks)β set status bar blocksoxwm.bar.set_scheme_normal(fg, bg, ul)oxwm.bar.set_scheme_occupied(fg, bg, ul)oxwm.bar.set_scheme_selected(fg, bg, ul)
π FILES π
~/.config/oxwm/config.luaβ main configuration file~/.config/oxwm/oxwm.luaβ LSP type definitions for editor autocomplete/usr/share/xsessions/oxwm.desktopβ X session desktop entry (if installed via package manager)
π± ENVIRONMENT π±
DISPLAYβ X11 display to connect to (standard X11 variable)XDG_CONFIG_HOMEβ custom config directory (default:~/.config)HOMEβ home directory for config location
β EXAMPLES β
Start oxwm normally:
oxwm
Initialize config file:
oxwm --init
Use custom config:
oxwm --config ~/my-oxwm-config.lua
Test in Xephyr (nested X server):
Xephyr -screen 1280x800 :1 &
DISPLAY=:1 oxwm
π§ͺ TESTING π§ͺ
Test oxwm without affecting your current session using Xephyr β genuinely the move, bestie π
# Start nested X server
Xephyr -screen 1280x800 :1 &
# Run oxwm in it
DISPLAY=:1 oxwm
π BUGS π
Report bugs at: https://github.com/tonybanters/oxwm/issues
(be nice, they're doing their best π«Ά)
π SEE ALSO π
X(7), dwm(1), dmenu(1), xrandr(1), lua(1)
π§ AUTHORS π§
Written by Tony (tonybtw).
Inspired by dwm but designed to be user-friendly and eliminate arbitrary elitism. periodt. β¨
π LICENSE π
GPL v3 β see https://www.gnu.org/licenses/gpl-3.0.en.html
okay that's the whole thing, you're officially caught up π this was oxwm version 0.8.0, dated 2025-12-08 β go forth and tile, queen π
π¦ where this page comes from
- nixos 26.05: oxwm 0.12.0
- nixpkgs unstable: oxwm 0.12.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms