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.
+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)
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
- GitHub: github.com/tonybanters/oxwm
- Homepage: https://ox-docs.vercel.app/
- Releases · Issues · Hacker News mentions
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.