A Lua framework for building your Wayland desktop. Layouts, widgets, keybindings, window rules, notifications, status bars, etc.
SomeWM has a complete widget system, a signal-driven object model, and a compositor runtime, all wired together so every piece can talk to every other piece. Write a widget that reacts to window focus changes. Build a layout that adapts to screen geometry. Script your entire workflow from rc.lua or from the command line.
Built on wlroots 0.19. Compatible with AwesomeWM's Lua API - existing configs, widgets, and themes carry over.
This branch (
main) is 2.0-dev. If you want 100% AwesomeWM parity, use therelease/1.4branch or installsomewmfrom the AUR.
Default config (left) and a styled config (right)
Arch Linux (AUR):
yay -S somewm # Stable 1.4
yay -S somewm-git # Development (this branch)From source:
git clone https://github.com/trip-zip/somewm
cd somewm
make
sudo make installFor Debian, Fedora, NixOS, and detailed instructions, see the Installation Guide.
From a TTY:
dbus-run-session somewmFrom a display manager, select "somewm" as your session.
Systemd units are also included for session management.
Validate your config before switching:
somewm --checkSee First Launch for configuration and migrating from AwesomeWM.
Full documentation at somewm.org:
- Getting Started - Installation, first launch, migration
- Tutorials - Keybindings, widgets, themes
- Wayland Protocols - Protocols somewm advertises to clients
- Troubleshooting - Common issues and solutions
Contributions welcome! Please read the Contributing Guide first.
- Report bugs or request features via Issues
- Questions and discussion at Discussions
- AwesomeWM - The GOAT window manager
- wlroots - The Wayland compositor library
- dwl - Initial reference for wlroots integration
GPLv3. See LICENSE for details.

