Getting started on Fedora
Install dependencies
Go, plus the libraries lys-shell loads at runtime (Vulkan for GPU rendering, zero-copy screen sharing and the screen recorder, and VA-API for the recorder on GPUs whose Vulkan driver encodes no video). Screen sharing speaks to the PipeWire daemon directly and needs PipeWire 1.0 or newer:
sudo dnf install golang git just vulkan-loader libva intel-media-driver \
mesa-va-driversFedora Workstation already ships the runtime daemons. Minimal and Server installs need:
sudo dnf install pipewire-pulseaudio wireplumber NetworkManager bluez upower \
power-profiles-daemon
sudo systemctl enable --now bluetooth NetworkManager upower power-profiles-daemonBuild
The build needs only Go: the binaries use no cgo, and load the libraries above at runtime. go.mod pins Go 1.27; an older go (1.21 or later) downloads that toolchain on its own.
git clone https://github.com/stubbedev/lys-shell
cd lys-shell
just build # or: CGO_ENABLED=0 go build -o dist/ ./cmd/...
sudo install -Dm755 dist/lys-shell dist/lys-settings dist/lys-lock -t /usr/local/binIcon assets
The icons are built into the binary. Install them into your user data directory once:
lys-shell icons setupRun
Start the panel in the background:
lys-shell panel startOther lifecycle commands: lys-shell panel status, lys-shell panel restart, lys-shell panel stop.
For debugging, run the shell in the foreground so logs print to the terminal:
lys-shell shellSettings GUI
lys-shell panel settingsThis launches lys-settings, which edits the same config the shell reads. Changes apply live. Anything the GUI doesn't cover can still be edited by hand in config.yaml.
Configuration
lys-shell reads $XDG_CONFIG_HOME/lys-shell/config.yaml, falling back to ~/.config/lys-shell/config.yaml. On first run, if no config exists, lys-shell writes a stub holding only the schema modeline; every field keeps its default until you set it. A JSON schema is written to ~/.config/lys-shell/schema.json at startup, which editors running the YAML language server can use for validation and completion (see Editor setup).