48
submitted 5 days ago by jjba23@lemmy.ml to c/unixporn@lemmy.ml

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!

20
submitted 5 days ago by jjba23@lemmy.ml to c/freesoftware@lemmy.zip

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!

12
submitted 5 days ago by jjba23@lemmy.ml to c/lisp@lemmy.ml

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!

10
submitted 9 months ago by jjba23@lemmy.ml to c/emacs@lemmy.ml

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

14
submitted 9 months ago by jjba23@lemmy.ml to c/rust@lemmy.ml

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

3
submitted 1 year ago by jjba23@lemmy.ml to c/lisp@lemmy.ml

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!

-1
submitted 1 year ago by jjba23@lemmy.ml to c/lisp@programming.dev

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!

6
submitted 1 year ago by jjba23@lemmy.ml to c/lisp@lemmy.ml

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.

3
submitted 1 year ago by jjba23@lemmy.ml to c/devops@programming.dev

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.

1
submitted 1 year ago by jjba23@lemmy.ml to c/scheme@programming.dev

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.

9
submitted 1 year ago by jjba23@lemmy.ml to c/lisp@programming.dev

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

10
submitted 1 year ago by jjba23@lemmy.ml to c/lisp@lemmy.ml

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

[-] jjba23@lemmy.ml 2 points 1 year ago* (last edited 1 year ago)

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

[-] jjba23@lemmy.ml 10 points 1 year ago* (last edited 1 year ago)

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

[-] jjba23@lemmy.ml 2 points 1 year ago

You might be interested in Emacs, it has (among many other things) artist-mode where you can draw with your cursor and obtain good ASCII art

[-] jjba23@lemmy.ml 3 points 1 year ago

I find it funny that you call Lisps and Emacs obsolete and dead, when they are more alive than ever. I agree with most of the article, but I think you ignore what makes these two great

[-] jjba23@lemmy.ml 3 points 1 year ago

no question is a bad question friend! a lot of people like me, and other power users, have keyboard driven workflows in their computer, and as such find title bars and window buttons to be of little use, and not justifying the screen space they take. This is mostly a window manager (WM)/ desktop environment (DE) dependent thing, regardless of distro. this is specially true when you have a tiling WM, like Hyprland.

[-] jjba23@lemmy.ml 2 points 1 year ago

There are many reasons why a Lisp is a great fit for most software. More specifically, websites are tree like data structures, and you really can't beat Lisps at that, due to homoiconicity and so much more. some thoughts here:

https://jointhefreeworld.org/blog/articles/lisps/why-i-program-in-lisp/index.html

[-] jjba23@lemmy.ml 2 points 1 year ago

v0.0.14 now uses libcurl and works nicely :)

         (file-port (open-input-file the-file))
         (handle (curl-easy-init))
         (_ (begin
              (curl-easy-setopt handle
                                'url
                                (format #f "smtp://~a:~a" access-server
                                        access-port))
              (curl-easy-setopt handle
                                'verbose #t)
              (curl-easy-setopt handle
                                'use-ssl 1)
              (curl-easy-setopt handle
                                'username access-key)
              (curl-easy-setopt handle
                                'password access-secret)
              (curl-easy-setopt handle
                                'mail-from from-address)
              (curl-easy-setopt handle
                                'mail-rcpt
                                (list to-address))
              (curl-easy-setopt handle
                                'readdata file-port)
              (curl-easy-setopt handle
                                'upload #t)))
         (r (curl-easy-perform handle #t))
         (rr (catch #t
                    (lambda ()
                      (bytevector->string r "utf-8"))
                    (lambda (key . args)
                      r))))
[-] jjba23@lemmy.ml 2 points 1 year ago

i understand the mixed feelings about AI, but I think we should stop and think that we sometimes have nice and fun use cases, like image generation

[-] jjba23@lemmy.ml 2 points 1 year ago* (last edited 1 year ago)

Sorry you feel this way ! my code is completely artisanal you might say, I only use AI for code comments and docstrings that is all. in that regard it is useful as a tool. i understand the world has now very mixed feelings about it, but it's just another tool for us digital carpenters.

[-] jjba23@lemmy.ml 2 points 1 year ago

the like system is a sort of trust score, kinda like stars in ultimate guitar, so the community can downvote entries and that will help filter out bad content

[-] jjba23@lemmy.ml 6 points 1 year ago

Hey thanks for the comment @turbowafflz@lemmy.world ! Wikimusic aims to provide "musical knowledge" not only metadata (but also). This means tabs, music sheet, etc. It also aims to be a self-hosted tool, that anyone can have their own instance of.

[-] jjba23@lemmy.ml 5 points 1 year ago

i am in the same boat, also got banned without apparent reason, think i commented too quick.. have heard nothing back from my appeals so i will soon also delete my Reddit, viva the free fediverse

view more: next ›

jjba23

0 post score
0 comment score
joined 1 year ago