Wayland compositor based on bswpm, with floating, tiling and scrolling layouts.
  • C 96.6%
  • GLSL 2.4%
  • Meson 0.5%
  • Nix 0.3%
  • Perl 0.2%
Find a file
2026-05-23 15:31:27 +01:00
bmsg fix,chore: use /run/user for socket, unlink if needed 2026-05-11 18:53:14 +01:00
examples feat: implement initial animation system 2026-05-21 22:25:17 +01:00
include fix: spawn lock surfaces on all outputs 2026-05-23 15:31:27 +01:00
protocols feat: output config etc 2026-02-20 16:21:45 +00:00
src fix: spawn lock surfaces on all outputs 2026-05-23 15:31:27 +01:00
.editorconfig feat: workspace handling and formatting 2026-02-16 16:15:00 +00:00
.gitattributes chore: add gitattributes 2026-04-03 20:48:57 +01:00
.gitignore feat: initial commit 2026-02-15 21:45:42 +00:00
bwm-portals.conf feat: implement toplevel screenshare 2026-02-25 18:16:47 +00:00
bwm.desktop feat: add desktop file 2026-02-22 01:02:58 +00:00
flake.lock chore: add nix flake for nix users to be able to install 2026-05-10 00:05:40 +07:00
flake.nix chore: add nix flake for nix users to be able to install 2026-05-10 00:05:40 +07:00
LICENSE.md feat: add LICENSE 2026-02-22 01:32:04 +00:00
meson.build feat: implement initial animation system 2026-05-21 22:25:17 +01:00
README.md chore: update deps list in README 2026-04-19 01:28:46 +01:00

bwm

Wayland compositor based on bspwm

Building

Ensure you have the following dependencies installed:

  • wlroots-git (latest git)
  • wayland
  • wayland-protocols
  • xkbcommon
  • libinput
  • pixman-1
  • xcb
  • xcb-icccm
  • glesv2
  • egl
  • cairo
  • pangocairo

Build with meson:

meson setup build
ninja -C build

Configuration

You can use the example config under examples. These should be placed under $XDG_CONFIG_HOME/bwm/ (or $HOME/.config/bwm/), or you can pass the directory you have put them in with the -c arg like:

bwm -c ./examples/

The bwmrc is a bash file that is run at startup, and can be used to configure settings and launch applications (like an .xinitrc).

The bwmhkrc is a config file for your hotkeys, and is reloaded on every save. It uses a config format similar to sxhkd and can execute compositor binds by calling the bmsg command.