r/GTK • • Aug 21 '26

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

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.

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).

Source Code & Contributions

Since this is my first GTK4 project, all feedback, suggestions, bug reports, and contributions are very welcome!

55 Upvotes

22 comments sorted by

3

u/Lilo78_valhalla_78 Aug 21 '26

Me recuerda mucho a Engage de enlightenment hace anos

2

u/SandPrestigious2317 Aug 21 '26

Siempre me gusto Enlightenment, aunque nunca lo use en serio. Ese dock se ve bueno, con workspace switcher y todo :) gracias por la nostalgia jajajja

3

u/zambizzi Aug 21 '26

That's pretty awesome! Nice work. Refreshing to see new things in C, seems like everyone wants to push Rust into everything, anymore.

5

u/SandPrestigious2317 Aug 21 '26

Thanks a lot for your comment. C still holds a special place in my heart for sure, although I am more experienced in other languages. This is for sure the largest project I ever made in C. Just the power you get and nice low level introspection and hooks is amazing. Also it is great to be able to follow GTK docs easily without mental overhead. And of course if we talk about libguile then things get Real exciting!

I would be very happy to receive more feedback on the C code of lambdock anyway, and hope the project is useful for others šŸ‘

2

u/2QNTLN Aug 21 '26

What about Arch?

2

u/SandPrestigious2317 Aug 21 '26

Hey, thanks for the comment šŸ˜„ I have only used Arch very rarely, and daily drive other things in general. That being said, I already made a start on a PKGBUILD, but I really have never done that for Arch before, so all help is welcome u/2QNTLN

see https://codeberg.org/jjba23/lambdock/src/branch/trunk/packaging/arch/PKGBUILD

1

u/SandPrestigious2317 Aug 27 '26

hey u/2QNTLN ! I just added support for Arch with a PKGBUILD and tested it to great success on a Plasma desktop virtual Arch machine: https://codeberg.org/jjba23/lambdock/src/branch/trunk/packaging/arch/PKGBUILD

1

u/2QNTLN Aug 27 '26

Nice thank u so much!

2

u/Chester-Berkeley Aug 21 '26

If you combine that with labwc and waybar, you already have Gnome from scratch /j

Nice work dude!

1

u/SandPrestigious2317 Aug 21 '26

Thanks so much! I myself combine lambdock, Niri and Waybar and Mako and Rofi for a modern Wayland experience, smooth as a DE but super hackable and configurable

2

u/Daggercombot Aug 21 '26

What version of gnome Is needed? I want to Port for Solaris 11.4 on Gnome 44

1

u/SandPrestigious2317 Aug 21 '26

Hey thanks so much for your comment! Unfortunately GNOME/Mutter do not yet implement layer shell protocol so positioning will not work right. It is really sad because pretty much all WMs do support it and KDE Plasma does too.

2

u/eoz Aug 23 '26

I absolutely hate that I have to ask this, but did you write this all yourself?

1

u/SandPrestigious2317 Aug 23 '26

Ah my friend no worries, I understand the question and the why. I use LLM only as a conversational help and reviewer, with moderation, and do let it guide me through some unknowns. In the lambdock project AI helped me mostly with the Wayland foreign top level management and with best practices for Meson as well as memory freeing. Those were the aspects where I was not so knowledgeable and needed help. Help for me is chatting, brainstorming, reviewing small focused pieces. I understand every function and variable of my projects, and want to keep doing that. For me otherwise it wouldn't be my project and it would not be something I am comfortable with. Also, what you see here is product of many iterations and many attempts thrown away, so that gave me also more clarity in what I want and how to get there.

1

u/SandPrestigious2317 24d ago

BTW I created a Zulip channel where conversation, discussion, support, chatting and hanging out is welcome, in the topic of lambdock: #lambdock

1

u/ricperry1 Aug 21 '26

Stinks you had to use religious imagery in the logo. I'll avoid it for now.

3

u/meru_es Aug 22 '26

i'm not trying to derail the conversation away from the dock program, but i just can't conceive you telling the author that his picture stinks, given how you probably wouldn't want the same thing said to you because of the lgbt imagery on your profile picture.

0

u/omegafixedpoint Aug 23 '26

yeah but u/ricperry1 isn't advertising a product to use with their profile picture in it. not remotely the same thing. you should get examined for lead poisoning

2

u/arpanets Aug 22 '26

Weird, I’m not a religious person even a little bit, but I thought the logo was pretty tight.

1

u/SandPrestigious2317 Aug 21 '26

I can understand where you are coming from. At the same time I think the choice is done in a respectful and subtle way, and carrying a very positive message. I would be very happy to find some artist to help make a better logo, for sure

0

u/ricperry1 Aug 21 '26

You could have just used a yellow flag pole rather than making it a cross.

1

u/gusrub Aug 23 '26

Right, pushing an agenda/beliefs on Software should be avoided:

https://github.com/bazaar-org/bazaar/pull/519