lambdock v0.6.2: A Wayland-native desktop dock written in C & GNU Guile Scheme (GTK4) - with REPL, hot-reload, multi-instance and flexible config - now on Guix, Nix, openSUSE, Debian
Josep Bigorra <[email protected]>
| Newsgroups | gmane.lisp.guile.user |
|---|---|
| Message-ID | <CAM_04A2wUhAKmOjKE3xrQ0qCKw39rUfWrxQTqWjJmwryT74XEg@mail.gmail.com> |
lambdock is a lightweight, hyper-hackable desktop dock for Wayland compositors that bridges a high-performance C graphics engine with an embedded GNU Guile Scheme runtime. Whether you are looking for a smooth macOS-style dock, a minimal launcher, or a Lisp-powered desktop widget bar, lambdock was built to offer extreme flexibility without bloating system resources and remaining flexible but easy to use, with good defaults. Repository: https://codeberg.org/jjba23/lambdock License: GPLv3+ -------------- Why would you consider lambdock? Modern Stack & Ultra-Low Footprint: Built on GTK4 and gtk4-layer-shell in C for minimal resource usage, rich graphics and animations (opt-in) with smooth cubic-eased auto-hiding. Embedded Guile Scheme Engine: Declarative Lisp configuration (~/.config/lambdock/settings*.scm). Easily construct custom app launchers, separators, or dynamic polling widgets (RAM, CPU load/temp, Battery, Clock) using standard Scheme procedures and macros. Live Interactive REPL & Hot-Reloading: Connect straight into the running dock over a Unix domain socket (/tmp/lambdock-repl.sock) via Emacs/Geiser or socat or whatever you like. Hot-reload configuration files and GTK CSS overrides on the fly via GFileMonitor or the (reload-dock!) REPL hook without dropping Wayland frames or UI thread freezes. Dynamic Wayland Window Tracking: Uses zwlr_foreign_toplevel_manager_v1 for running app indicators, active window titles, and interactive popover HUDs to focus or close specific instances. Opt-In Fisheye Magnification: Includes a native, fluid cosine-bell curve hover magnification effect (macOS-style) that can be toggled on or off per item or globally. Multi-Dock & Multi-Monitor Support: Run independent dock instances across screen edges or monitors simply by dropping additional settings-*.scm files into your config directory. Built-in Themes & CSS Overrides: Ships with presets (Vanilla, Snow Leopard, Solarized, Unity, Nature) and supports full user CSS customization via ~/.config/lambdock/styles.css. lambdock works seamlessly across all wlr-layer-shell and foreign-toplevel compliant compositors: Sway, Hyprland, Niri, River, Wayfire, COSMIC, and KDE Plasma (Wayland). (Note: GNOME/Mutter is currently not supported as GNOME does not implement the layer-shell protocol). ------------ Installation & Packaging (a bit WIP) lambdock provides multiple ways to build and install across distros: GNU Guix: Packaged via guix.scm and available in channels. openSUSE: Packaged as an RPM on openSUSE OBS. Nix / NixOS: Ships with flake.nix / package.nix (and a PR has been submitted upstream to nixpkgs). Debian / Ubuntu: Debian packaging helpers included (debuild). Build System: Builds cleanly with Meson (meson setup build && ninja -C build). Since this is my first GTK4 project, and certainly the first time I integrate C + Guile, all feedback, suggestions, bug reports, and contributions are very welcome!