Contents

August 10, 2026 ยท View on GitHub

gtk4-layer-shell: Crate docs.rs dependency status

gtk4-layer-shell-sys: Crate docs.rs dependency status

gtk4-session-lock: Crate docs.rs dependency status

gtk4-session-lock-sys: Crate docs.rs dependency status

maintenance-status: passively-maintained (as of 2023-04-12) dependabot status Build

Contents

This repo contains the following crates:

  • gtk4-layer-shell: Build desktop shell components such as panels, notifications and wallpapers with GTK4. It can be used to anchor your windows to a corner or edge of the output, or stretch them across the entire output
  • gtk4-layer-shell-sys: Unsafe bindings used by gtk-layer-shell
  • gtk4-session-lock: Build lockscreens with GTK4
  • gtk4-session-lock-sys: Unsafe bindings used by gtk-session-lock

The crates are language bindings to the underlying C library gtk4-layer-shell. Feature development is done upstream. The crates in this repo are automatically generated from their .gir files (Gtk4LayerShell, GTK4SessionLock). For details on how to use the crates, have a look at the individual crate's README, which can be found in their respective folders. The crates are GTK4 only.

Upstream version

Bindings and examples track the latest released upstream tag. Unreleased APIs on upstream main are not bound until they ship in a release.

The simple-example and session-lock simple examples are Rust ports of the upstream C examples. Extra demos such as libadwaita and relm4 are Rust-only and are not upstream ports.

Dependencies

You need to have gtk4 and gtk4-layer-shell (the C library) installed on your system to use the crates in this repo. gtk4-layer-shell version 1.1.0 or higher is needed if you want to use gtk4-session-lock. If you want to use gtk4-layer-shell and gtk4-session-lock together in a project, make sure to use the same .so file of gtk4-layer-shell for both.

If your project also links libwayland-client, make sure gtk4-layer-shell is linked before it (the library shims some Wayland entry points). See linking.md upstream for details.

If your distribution does not provide a current enough version of gtk4-layer-shell, you can build it from source. If you did that, you might also have to set the following two environment variables:

export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=/usr/local/lib

Maintenance status

These crates are just wrappers for the C library so the crates in this repo are feature complete and not actively worked on. The C library is actively developed. I try to keep up with them so the crate might get frequent updates and could break things. If you encounter any problems, feel free to open a PR.

Contributing

Pull requests are very welcome but please keep the maintenance status in mind.

License

MIT