cross-posted from: https://lemmy.ml/post/51712940

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.

Repository: https://codeberg.org/jjba23/lambdock

License: GPLv3+

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

Podman / Docker: Containers are available and also pre-built ones on DockerHub

Build System: Builds cleanly with Meson (meson setup build && ninja -C build).

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

 

cross-posted from: https://lemmy.ml/post/51712940

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.

Repository: https://codeberg.org/jjba23/lambdock

License: GPLv3+

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

Podman / Docker: Containers are available and also pre-built ones on DockerHub

Build System: Builds cleanly with Meson (meson setup build && ninja -C build).

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

 

als kruis­bericht geplaatst vanaf: https://lemmy.ml/post/51712940

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.

Repository: https://codeberg.org/jjba23/lambdock

License: GPLv3+

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

Podman / Docker: Containers are available and also pre-built ones on DockerHub

Build System: Builds cleanly with Meson (meson setup build && ninja -C build).

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

 

cross-posted from: https://lemmy.ml/post/38966704

A minimal, declarative setup for productive Rust hacking on Emacs + Guix

I noticed there was a blatant lack of resources and documentation on this particular setup. So I rolled up my sleeves and wrote this article, which hopefully you find useful.

https://jointhefreeworld.org/blog/articles/rust/simple-guix-emacs-rust-development-environment/index.html

See image here of my Emacs with rust-analyzer and clippy working: https://ibb.co/whxq8dX1

 

als kruis­bericht geplaatst vanaf: https://lemmy.ml/post/38966704

A minimal, declarative setup for productive Rust hacking on Emacs + Guix

I noticed there was a blatant lack of resources and documentation on this particular setup. So I rolled up my sleeves and wrote this article, which hopefully you find useful.

https://jointhefreeworld.org/blog/articles/rust/simple-guix-emacs-rust-development-environment/index.html

See image here of my Emacs with rust-analyzer and clippy working: https://ibb.co/whxq8dX1

 

cross-posted from: https://lemmy.ml/post/35300445

GGG (Guile Glyph Generator) v0.4.6

Now also packaged via Podman/Docker, and a new version is in a PR to Guix, containing many improvements, specially to CLI experience and flexibility, as well as a cleaner badge definition DSL

https://codeberg.org/jjba23/ggg

Through SVG generation from Lisp (Guile Scheme) we leverage a beautiful DSL (Domain-Specific Language) and apply some mathematical knowledge to build pixel perfect badges.

The SVG (Scalable Vector Graphics) can then be easily converted without quality loss to any desired format. Create your badges programatically with a polished aesthetic!

 

GGG (Guile Glyph Generator) v0.4.6

Now also packaged via Podman/Docker, and a new version is in a PR to Guix, containing many improvements, specially to CLI experience and flexibility, as well as a cleaner badge definition DSL

https://codeberg.org/jjba23/ggg

Through SVG generation from Lisp (Guile Scheme) we leverage a beautiful DSL (Domain-Specific Language) and apply some mathematical knowledge to build pixel perfect badges.

The SVG (Scalable Vector Graphics) can then be easily converted without quality loss to any desired format. Create your badges programatically with a polished aesthetic!

 

cross-posted from: https://lemmy.ml/post/35300445

GGG (Guile Glyph Generator) v0.4.6

Now also packaged via Podman/Docker, and a new version is in a PR to Guix, containing many improvements, specially to CLI experience and flexibility, as well as a cleaner badge definition DSL

https://codeberg.org/jjba23/ggg

Through SVG generation from Lisp (Guile Scheme) we leverage a beautiful DSL (Domain-Specific Language) and apply some mathematical knowledge to build pixel perfect badges.

The SVG (Scalable Vector Graphics) can then be easily converted without quality loss to any desired format. Create your badges programatically with a polished aesthetic!

[–] [S] 1 point 1 year ago

Due to popular demand :) Maak is now also available as an experimental Docker container, from DockerHub (also compatible with Podman).

https://hub.docker.com/repository/docker/jjba23/maak/general

You can also build images of maak yourself, using guix pack. See the maak.scm file for more. To load these tarball images, you can do podman load < my.tar.gz

Then you can run Maak from the container, and bind your local filesystem to give access, for example:

docker container run -v /home/joe:/home/joe
docker.io/jjba23/maak:latest maak -f /home/joe/hacking/maak/maak.scm --list

  • source
  • [–] [S] 1 point 1 year ago

    Due to popular demand :) Maak is now also available as an experimental Docker container, from DockerHub (also compatible with Podman).

    https://hub.docker.com/repository/docker/jjba23/maak/general

    You can also build images of maak yourself, using guix pack. See the maak.scm file for more. To load these tarball images, you can do podman load < my.tar.gz

    Then you can run Maak from the container, and bind your local filesystem to give access, for example:

    docker container run -v /home/joe:/home/joe
    docker.io/jjba23/maak:latest maak -f /home/joe/hacking/maak/maak.scm --list

  • source
  • [–] [S] 1 point 1 year ago

    Hey all I have an experimental Docker/Podman build here, which you can take for a spin, it works well for me, I don't have any macOS devices to test on yet though, LMK.

    Docker tarball hosted on 2 sites: https://limewire.com/d/IHVnx#Pz9q6EwDwL https://filebin.net/gevqik62yzwfxa8u/maak-docker.tar.gz

    Once you downloaded this tarball, you can import it with docker load < my.tar.gz

    Installing via Guix will always remain more convenient and powerful but docker/podman will work for cross-platform pretty good. Say for example you have a maak file with a task serve, at /home/joe/hacking/hygguile/maak.scm , you could run it as so:

    docker container run -v /home/joe:/home/joe localhost/maak:latest maak -f /home/joe/hacking/hygguile/maak.scm serve

  • source
  • [–] [S] 1 point 1 year ago

    Hey all I have an experimental Docker/Podman build here, which you can take for a spin, it works well for me, I don't have any macOS devices to test on yet though, LMK.

    Docker tarball hosted on 2 sites: https://limewire.com/d/IHVnx#Pz9q6EwDwL https://filebin.net/gevqik62yzwfxa8u/maak-docker.tar.gz

    Once you downloaded this tarball, you can import it with docker load < my.tar.gz

    Installing via Guix will always remain more convenient and powerful but docker/podman will work for cross-platform pretty good. Say for example you have a maak file with a task serve, at /home/joe/hacking/hygguile/maak.scm , you could run it as so:

    docker container run -v /home/joe:/home/joe localhost/maak:latest maak -f /home/joe/hacking/hygguile/maak.scm serve

  • source
  •  

    cross-posted from: https://lemmy.ml/post/35239632

    Maak: The infinitely extensible command runner, control plane and project automator à la Make (written in Guile Scheme - Lisp)

    https://codeberg.org/jjba23/maak

    Free yourself of repetitive, lacking, weird and arcane Makefile. After some weeks working on this project, I am upstreaming it to Guix so soon you all can enjoy.

    https://codeberg.org/guix/guix/pulls/2132

    Also, see here an advanced example of a Maak file: https://codeberg.org/jjba23/sss/src/branch/trunk/maak.scm

    With the full power of Scheme (Guile) directly in your command runner/control plane, easily define functions, data, lists, loop through them, macros, etc.

    Maak has as core mission being your control center or command plane, and act as a command runner, not necessarily a build system, so it avoids much of Make's complexity. No need for .PHONY recipes here.

    Maak replaces the arcane syntax of Make with the power and elegance of a full-featured programming language: GNU Guile Scheme λ.

    Instead of learning a limited DSL, you can leverage your existing Lisp skills to define tasks, manage data, and automate your workflows with ease. Define functions, manipulate lists, use conditional, create macros—the entire language is at your disposal.

    You can also easily call external shell commands and integrate with your existing scripts and tools.

     

    cross-posted from: https://lemmy.ml/post/35239632

    Maak: The infinitely extensible command runner, control plane and project automator à la Make (written in Guile Scheme - Lisp)

    https://codeberg.org/jjba23/maak

    Free yourself of repetitive, lacking, weird and arcane Makefile. After some weeks working on this project, I am upstreaming it to Guix so soon you all can enjoy.

    https://codeberg.org/guix/guix/pulls/2132

    Also, see here an advanced example of a Maak file: https://codeberg.org/jjba23/sss/src/branch/trunk/maak.scm

    With the full power of Scheme (Guile) directly in your command runner/control plane, easily define functions, data, lists, loop through them, macros, etc.

    Maak has as core mission being your control center or command plane, and act as a command runner, not necessarily a build system, so it avoids much of Make's complexity. No need for .PHONY recipes here.

    Maak replaces the arcane syntax of Make with the power and elegance of a full-featured programming language: GNU Guile Scheme λ.

    Instead of learning a limited DSL, you can leverage your existing Lisp skills to define tasks, manage data, and automate your workflows with ease. Define functions, manipulate lists, use conditional, create macros—the entire language is at your disposal.

    You can also easily call external shell commands and integrate with your existing scripts and tools.

     

    Maak: The infinitely extensible command runner, control plane and project automator à la Make (written in Guile Scheme - Lisp)

    https://codeberg.org/jjba23/maak

    Free yourself of repetitive, lacking, weird and arcane Makefile. After some weeks working on this project, I am upstreaming it to Guix so soon you all can enjoy.

    https://codeberg.org/guix/guix/pulls/2132

    Also, see here an advanced example of a Maak file: https://codeberg.org/jjba23/sss/src/branch/trunk/maak.scm

    With the full power of Scheme (Guile) directly in your command runner/control plane, easily define functions, data, lists, loop through them, macros, etc.

    Maak has as core mission being your control center or command plane, and act as a command runner, not necessarily a build system, so it avoids much of Make's complexity. No need for .PHONY recipes here.

    Maak replaces the arcane syntax of Make with the power and elegance of a full-featured programming language: GNU Guile Scheme λ.

    Instead of learning a limited DSL, you can leverage your existing Lisp skills to define tasks, manage data, and automate your workflows with ease. Define functions, manipulate lists, use conditional, create macros—the entire language is at your disposal.

    You can also easily call external shell commands and integrate with your existing scripts and tools.

     

    cross-posted from: https://lemmy.ml/post/34572963

    SSS (Supreme Sexp System) releases a polished v3.3.22 after 9 months of continuous development ✨

    https://codeberg.org/jjba23/sss

    • #dracula palette has been added as shown in the #screenshot
    • experimental help center 🧪 for SSS, tailor made #gtk4 #rust application
    • many improvements and quality of life added to this #gnu #linux quasi - #distro on top of #guix
    • much more ...

    SSS is a #rice 🖥️ 🍙 worthy of #unixporn and uses #guile #scheme #emacs #hyprland and more

    [–] 2 points 1 year ago* (1 child)

    By default it is, but there are many non-free channels you can use to add the OG Linux kernel to your Guix install as well as nonfree drivers. A famous one is nonguix, which i also use in my config. They also make custom ISOs with the Linux kernel, which helps some hardware indeed. So the libre only policy is a non issue if you read into it a little, but unfortunately most people stay at surface level

  • source
  • parent
  • context
  • [–] 9 points 1 year ago* (3 children)

    With Guix you have reproducibility, freedom, good docs and peace of mind, also when configuring things more deeply. You also have a powerful programming language (Scheme / Lisp) with which to define your system config as well as your dotfiles. This is my insight after years of GNU/Linux usage. I run Guix on laptops, desktops and servers, and I never have configuration drift, as well as the benefit that I have a self documenting system.

    https://codeberg.org/jjba23/sss

  • source
  • view more: next ›