1# llimphi-layer
2
3Runs a Llimphi `App` as a **wlr-layer-shell surface** (a bar anchored to an edge)
4rather than as a window.
5
6It lets an app sit at the level of eww/waybar on any wlroots compositor (mirada,
7Hyprland, Sway, river…): it anchors to an edge, declares an optional *exclusive
8zone* — the compositor reserves the strip and tiles the rest — and paints itself
9reusing Llimphi's pipeline (`mount → compute → paint → render`).
10
11It is the `smithay-client-toolkit` + `wgpu` plumbing that `pata` proved in
12production, extracted into a **generic** runner over the `App` trait. Unlike pata
13(N surfaces + tray/dock/sidebar/…), this runs **one** surface and no domain
14logic: the app provides `view`/`update`/`on_key` and this crate lends it the
15edge. Useful, for instance, to dock `shuma` as a bar.
16
17```ignore
18struct MyBar;
19impl llimphi_ui::App for MyBar { /* … */ }
20llimphi_layer::run::<MyBar>(llimphi_layer::LayerConfig {
21 edge: llimphi_layer::Edge::Bottom,
22 thickness: 40,
23 keyboard: llimphi_layer::Keyboard::OnDemand,
24 ..Default::default()
25})?;
26```
27
28---
29
30Part of **llimphi** — see [llimphi](../README.md).
README.md
llimphi-layer
Runs a Llimphi App as a wlr-layer-shell surface (a bar anchored to an edge)
rather than as a window.
It lets an app sit at the level of eww/waybar on any wlroots compositor (mirada,
Hyprland, Sway, river…): it anchors to an edge, declares an optional exclusive
zone — the compositor reserves the strip and tiles the rest — and paints itself
reusing Llimphi's pipeline (mount → compute → paint → render).
It is the smithay-client-toolkit + wgpu plumbing that pata proved in
production, extracted into a generic runner over the App trait. Unlike pata
(N surfaces + tray/dock/sidebar/…), this runs one surface and no domain
logic: the app provides view/update/on_key and this crate lends it the
edge. Useful, for instance, to dock shuma as a bar.
struct MyBar;
impl llimphi_ui::App for MyBar { /* … */ }
llimphi_layer::run::<MyBar>(llimphi_layer::LayerConfig {
edge: llimphi_layer::Edge::Bottom,
thickness: 40,
keyboard: llimphi_layer::Keyboard::OnDemand,
..Default::default()
})?;
Part of llimphi — see llimphi.