OmniWM: a window manager built with contributions from 13 developers
GitHub RepoImpressions65
View on GitHub
@githubprojectsPost Author

OmniWM: A Window Manager Built by 13 Developers (And You Should Check It Out)

Look, there are a ton of window managers out there. i3, bspwm, sway — you know the usual suspects. But every once in a while, a community project pops up that feels different. OmniWM is one of them. It’s a window manager built with contributions from 13 developers, and while it’s not trying to reinvent the wheel, it’s refining it with a clear focus on modularity and developer experience.

If you like tinkering with your desktop environment but hate fighting with config files, this one’s worth a look.

What It Does

OmniWM is a lightweight, modular window manager for X11 (and eventually Wayland). It manages windows with a tiling layout by default, but also supports floating windows, workspaces, and keyboard-driven navigation — all the stuff you’d expect from a modern WM. The key difference? It’s built with extensibility in mind. Each component (like the layout engine, keybindings, and status bar) is designed as a separate module that can be swapped or extended without touching the core.

Think of it as a “plug and play” window manager where you can replace parts without forking the whole thing.

Why It’s Cool

1. Built by a real team.
This isn’t a solo side project. 13 developers contributed to the core, which means the codebase is maintained with more than one perspective. That translates to cleaner APIs, better documentation (hey, it’s on GitHub), and fewer “works on my machine” bugs.

2. Modular design.
Most window managers are monolithic — you either use their keybinding system or you hack around it. OmniWM separates concerns: keybindings, window placement, and decoration are all independent modules. Want to swap the default tiling algorithm for a custom one? You write a new layout module and register it. No patching the core, no rebasing forks.

3. Developer-first config.
Config is handled via a Lua script, not a custom DSL. That means you can use logic, loops, and functions in your config file. Need a dynamic layout that changes based on the current workspace? Just write a Lua function. It’s way more powerful than a static config file.

4. Active community.
The repo has issues, PRs, and discussions that actually get responses. The contributors are active on GitHub and often tag issues as “good first issue” — so if you’re looking to contribute to a WM but don’t want to dive into a massive codebase, this is a solid entry point.

How to Try It

You can grab the source code from the GitHub repo:

https://github.com/BarutSRB/OmniWM

Installation is straightforward if you’re comfortable building from source. There’s no package manager release yet (it’s still early), but the README includes build instructions for Linux (dependencies: xcb, libxkbcommon, and lua). If you’re on a distro like Arch or Fedora, you’ll have these in the repos.

Quick start:

git clone https://github.com/BarutSRB/OmniWM.git
cd OmniWM
make
sudo make install

Then add omniwm to your .xinitrc or display manager session list. There’s also a sample config in the repo to get started.

Pro tip: If you want to test it without replacing your current WM, run it in a nested X server with Xephyr:

Xephyr :1 -screen 1280x720 &
DISPLAY=:1 omniwm

Final Thoughts

OmniWM isn’t trying to be the “one WM to rule them all.” It’s a solid, modular alternative for developers who want more control over their desktop without diving into C code. The Lua config alone makes it worth trying if you’re tired of static YAML or INI files.

It’s still early days (the repo has less than 100 stars at the time of writing), but the contributor base is active and the architecture is clean. If you’re looking for a new window manager to hack on — or just something fresh to try on a rainy weekend — give it a shot.


Found this interesting? Follow @githubprojects for more cool open-source discoveries.

Back to Projects
Last updated: June 17, 2026 at 02:23 PM