jgmenu is a lightweight, standalone X11 menu application written in C, designed for scripting, modding, and tweaking. It renders menus using Cairo and Pango, reading menu data from CSV files or piped commands. The architecture is modular: a core menu engine (src/jgmenu.c) handles event loops, drawing, and item management, while separate generators (jgmenu-apps, jgmenu-ob, jgmenu-lx, jgmenu-pmenu) produce CSV data from .desktop files, Openbox XML, or XDG menus. Configuration is via a jgmenurc file with 80+ options, and IPC via Unix sockets enables integration with tint2 and XFCE panels. The codebase demonstrates strong C engineering practices: banned unsafe functions, custom safe string buffers (sbuf), a generic linked list (list.h), a hashmap, and a CSV parser with triple-quote support. It includes a comprehensive test suite using a sharness-like framework and CI via GitHub Actions. While tightly coupled to X11, the utility modules are cleanly isolated and reusable in other C projects.
This repository, known as voidrice, is a comprehensive collection of personal dotfiles and shell scripts for a minimal, keyboard-driven Linux desktop environment built around suckless tools (dwm, dwmblocks, st). It is deployed via the LARBS installer to transform a fresh Arch Linux install into a highly customized workflow. The codebase consists of configuration files for the window manager, terminal, file manager, media players, notifications, and more, along with dozens of standalone utility scripts in ~/.local/bin/. These scripts handle tasks such as launching applications via dmenu, opening files by MIME type, compiling documents, setting wallpapers, managing mounts, and generating cross-application shortcuts from simple bookmark files. The status bar is modular, with independent scripts for clock, battery, network, music, and other system information. While the repository is tightly coupled to Luke Smith's personal setup and assumes specific software packages, many of the shell scripts exhibit clean, self-contained patterns that can be reused or adapted for other environments. The overall architecture is a federation of independently configured programs rather than a monolithic application.