Improve the build instructions to explicitly call out Clang and LLD as required dependencies, and differentiate between development builds (make) and production builds (make release) with what each provides.
PeachWM
peachwm
peachwm is a fork of swindle
PeachWM is now a independent wayland compositor based on WLRoots
that is designed to be similar to MangoWC, while remaining lightweight.
PeachWM is maintained by HuntedByTheIRS.
Features
- Lua configuration
- Dwindle, Master, Monocle, and Floating layouts
- XWayland support
- Lightweight
Dependencies
- libinput
- wayland
- wlroots-0.20 (compiled with the libinput backend)
- scenefx (for rendering effects) — see note below
- xkbcommon
- wayland-protocols (compile-time only)
- pkg-config (compile-time only)
- a C23 compiler — Clang 18+ (default) or GCC 14+
- LLD linker (for linking; part of LLVM)
Install these (and their -devel versions if your distro has separate
development packages). The project requires Clang and the LLD linker
(both part of LLVM; install the clang and lld packages for your distro).
For a development build with debug symbols and sanitizers, run make (which
uses the all target). For a production install, use make release to get an
optimized, stripped binary with LTO and linker hardening.
Then run doas/sudo make install to install to /usr/local/bin by default.
SceneFX
PeachWM uses scenefx for rendering eye-candy effects on screen. These effects are now considered stable and no longer experimental.
Effects
- Rounded corners — smooth, configurable corner rounding on windows
- Shadows — drop shadows for windows
- Blur — background blur behind transparent windows
- More effects are planned and on the way.
⚠️ SceneFX version note
PeachWM requires a scenefx build targeting wlroots 0.20. The latest official scenefx release (0.4.1) targets wlroots 0.19 and is not compatible.
The Makefile looks for scenefx-0.5 via pkg-config. This version does
not exist as an official release — you must build scenefx from the
master branch to get a wlroots 0.20 compatible build.
Building scenefx from source:
git clone https://github.com/wlrfx/scenefx.git
cd scenefx
meson setup build
ninja -C build
sudo ninja -C build install
The master branch meson.build already sets the project version to 0.5.0
and produces libscenefx-0.5.so with the scenefx-0.5 pkg-config target.
No version patching needed.
Note: The default meson install prefix is /usr/local/. On some distros
(notably Arch Linux), pkg-config does not search /usr/local/lib/pkgconfig
and the linker does not search /usr/local/lib by default. If make fails
with Package scenefx-0.5 was not found, symlink the installed files:
sudo ln -sf /usr/local/lib/pkgconfig/scenefx-0.5.pc /usr/lib/pkgconfig/scenefx-0.5.pc
sudo ln -sf /usr/local/lib/libscenefx-0.5.so /usr/lib/libscenefx-0.5.so
sudo ldconfig
CachyOS users: Install scenefx-wlroots20-git from the
CachyOS repo instead.
Configuration
Read example/config.lua. It should give you a basic idea of how configuring peachwm works.
Its good to move/copy /etc/peachwm/config.lua to $HOME/.config/peachwm/, but will start without this step if you choose not to.
Installation
make release -j$(nproc)
sudo make install
mkdir -p $HOME/.config/peachwm/
cp /etc/peachwm/config.lua $HOME/.config/peachwm/config.lua
Roadmap
- No longer require exiting peachwm upon input config changes
- Allow status bar requests (swaymsg like)
- Add smartgaps
- Implement scratchpad workspaces
- Add animations via scenefx