📈 GH Trending Explorer 🎲 Surprise me

← all repos

tonybanters / oxwm

git clone https://github.com/tonybanters/oxwm.git 🔥 on GitHub Trending today

A dynamic X11 window manager written in Zig, inspired by dwm, configured through a Lua API with hot-reload.

Why you might care

Aimed at dwm users who want configuration without editing C and recompiling; config lives in ~/.config/oxwm/config.lua and reloads with Mod+Shift+R. Offers sane defaults and LSP autocomplete for the Lua config. Packaged for NixOS and the AUR.

Categories

Alternatives

dwmi3bspwmawesome
+2
stars, 24h · #9,891
+14
stars, 7 days · #9,717
+61
stars, 30 days · #10,333
1.0k
★ total · +1% this week
78
forks · 69 open issues

Star history (as recorded here)

2026-10-20 · 1,013 ★ 2026-10-23 · 1,017 ★
LanguageZig
LicenseGPL-3.0
Created2025-09-19 (1y ago)
Last push11d ago
Watchers14
OwnerUser

Seen on GitHub Trending

  • 2026-10-23 — #4 monthly in zig · +61 ★
  • 2026-10-23 — #4 weekly in zig · +14 ★
  • 2026-10-22 — #13 monthly in zig · +58 ★
  • 2026-10-22 — #12 weekly in zig · +14 ★
  • 2026-10-21 — #13 daily in zig · +1 ★
  • 2026-10-21 — #14 monthly in zig · +60 ★
  • 2026-10-21 — #3 weekly in zig · +16 ★
  • 2026-10-20 — #13 daily in zig
  • 2026-10-20 — #14 monthly in zig · +63 ★
  • 2026-10-20 — #3 weekly in zig · +15 ★

Links

README excerpt
# OXWM: DWM but Better
A dynamic window manager written in Zig, inspired by dwm but designed to evolve beyond it. OXWM features a clean, functional Lua API for configuration with hot-reloading support, ditching the suckless philosophy of *"edit + recompile"*. Instead, we focus on lowering friction for users with sane defaults, LSP-powered autocomplete, and instant configuration changes without restarting your X session.
**Documentation:** ox-docs.vercel.app
## Showcase
Setups from OXWM users across Arch, CachyOS, Debian and FreeBSD.
## Installation
### NixOS (nixpkgs)
Add OXWM to your `configuration.nix` like so:
 [code] 
#### Initialize your config
After rebuilding your system with `sudo nixos-rebuild switch`, log in via your display manager.
On first launch, your initial config file will be automatically created and placed in `~/.config/oxwm/config.lua`. Edit it and reload with `Mod+Shift+R`.
#### Development setup with Nix
For development, use the provided dev shell:
 [code] 
### Arch Linux
AUR: oxwm-git
 [code] 
This will automatically put a desktop session file into your xsessions directory.
Manually, install the dependencies and see Building from Source:
 [code] 
### Building from Source
Note, on many BSD systems, the zig compiler will aggressively attempt to remove debug symbols which is causing a known linker issue. Please use this method on BSD:
 [code] 
On other legacy distros, just use:
 [code] 
### Setting up OXWM
#### Without a display manager (startx)
Add the following to your `~/.xinitrc`:
 [code] 
Then start X with:
 [code] 
#### With a display manager
If using a display manager (LightDM, GDM, SDDM), OXWM should appear in the session list after installation.
## Configuration
OXWM uses a clean, functional Lua API for configuration. On first run, a default config is automatically created at `~/.config/oxwm/config.lua`.
### Quick Example
Here's what the functional API looks like:
 [code] 
### Key Configuration Areas
Edit `~/.config/oxwm/config.lua` to customize:
- Basic settings (terminal, modkey, tags)
- Borders and colors
- Window gaps
- Status bar (font, blocks, color schemes)
- Keybindings and keychords
- Layouts, layout symbols, and attach method
- Window rules
- Autostart commands
After making changes, reload OXWM with `Mod+Shift+R`.
### Creating Your Config
Generate the default config:
 [code] 
Or just start OXWM. It will create one automatically on first run.
## Contributing
When contributing to OXWM:
1. Never commit your personal `~/.config/oxwm/config.lua`
2. Only modify `templates/config.lua` if adding new configuration options
3. Test your changes with `zig build xephyr` using Xephyr or `zig build xwayland` using Xwayland
4. Document any new features or keybindings
## Key Bindings
Default keybindings (fully customizable in `~/.config/oxwm/config.lua`):
| Binding | Action |
|------------------------|-----------------------------------|
| Super+Return | Spawn terminal |
| Super+J/K | Cycle focus through stack |
| Super+Q | 

Blurb generated by claude-haiku-5-5 today. Star deltas marked ~ are extrapolated from partial history.