Cagebreak
Cagebreak Setup¶
Cagebreak is a tiling kiosk compositor forked from Cage. It replaces Hyprland for the greetd greeter session, which is deprecated. Niri remains the default greeter compositor.
Cagebreak supports wlr-layer-shell, so gSlapper wallpapers work the same as under niri and sway. Wallpapers appear on secondary monitors; the primary output is covered by the greeter TUI, which draws its own background effects.
The greeter config is ~10 lines, defines no keybindings, and quits the compositor through cagebreak's IPC socket after login. Tracked in issue #69.
Install Cagebreak¶
The installer handles all of this — including socat, which is required to quit the compositor after login. The sections below are for manual installs.
=== "Arch Linux"
The [sysc-greet-cagebreak](https://aur.archlinux.org/packages/sysc-greet-cagebreak) AUR package installs everything — sysc-greet, cagebreak, socat, and the greetd config:
```bash
paru -S sysc-greet-cagebreak # or: yay -S sysc-greet-cagebreak
```
It conflicts with the other sysc-greet variants; remove those first. To install only the compositor (e.g. for use with the install script):
```bash
paru -S cagebreak
sudo pacman -S socat
```
=== "Debian / Ubuntu / Fedora"
No distro packages exist. The installer downloads a cagebreak package built against your distro's wlroots from [sysc-greet releases](https://github.com/Nomadcxx/sysc-greet/releases/latest) (Debian 13, Ubuntu 24.04/25.x, Fedora 42), and builds from source when no package matches. Manual install:
```bash
# Debian 13 / Ubuntu 25.x
wget https://github.com/Nomadcxx/sysc-greet/releases/latest/download/cagebreak_2.4.0_debian13_amd64.deb
sudo apt install ./cagebreak_2.4.0_debian13_amd64.deb socat
```
=== "NixOS"
```nix
services.sysc-greet = {
enable = true;
compositor = "cagebreak";
# optional: cagebreakPackage = pkgs.cagebreak;
};
```
=== "openSUSE"
Tumbleweed packages cagebreak:
```bash
sudo zypper install cagebreak socat
```
=== "Other distros"
Check your package manager or build from [project-repo/cagebreak](https://github.com/project-repo/cagebreak). The buildable release depends on your wlroots version: 0.17 → 2.3.1, 0.18 → 2.4.0, 0.19 → 3.1.0, 0.20 → 3.2.1.
greetd Config¶
The AUR package writes this config during install (backing up any existing /etc/greetd/config.toml). Otherwise:
=== "Installer"
```bash
SYSC_COMPOSITOR=cagebreak sudo ./install.sh
```
=== "Manual"
Edit `/etc/greetd/config.toml`:
```toml
[terminal]
vt = 1
[default_session]
command = "cagebreak -e -c /etc/greetd/cagebreak-greeter-config"
user = "greeter"
```
`-e` enables the IPC socket. The greeter config uses it to quit cagebreak after login.
The installer and packages place the greeter config at /etc/greetd/cagebreak-greeter-config.
Keyboard Layout¶
Cagebreak reads the standard XKB environment variables. For a non-US layout, wrap the greetd command:
command = "env XKB_DEFAULT_LAYOUT=de XKB_DEFAULT_VARIANT=nodeadkeys cagebreak -e -c /etc/greetd/cagebreak-greeter-config"
Migrating from Hyprland¶
- Install cagebreak and socat (see above)
- Re-run the installer:
SYSC_COMPOSITOR=cagebreak sudo ./install.sh - Reboot, or
sudo systemctl restart greetdfrom a TTY
Your Hyprland desktop session is unaffected. Only the boot greeter changes.
Troubleshooting¶
- No wallpaper on a secondary monitor: check gSlapper is installed and
/var/cache/sysc-greet/is readable by the greeter user. Single-monitor setups never show a wallpaper; the TUI covers the only output. - Greeter restarts in a loop: run
cagebreak -e -c /etc/greetd/cagebreak-greeter-configfrom a TTY to see the error. A config parse error makes cagebreak exit immediately and greetd relaunches it. - Stuck after login: verify socat is installed. Without it the compositor never quits and greetd waits forever.