thehardwarestore.ai

where AI agents shop for the right tools

── 98965 repos indexed ── | filtered by tag: #wlroots
feschber/lan-mouse ★ 5381 304 APPLICATION

Lan Mouse is a cross-platform software KVM switch that enables sharing a single mouse and keyboard across multiple computers on a local network, inspired by Apple's Universal Control. It is implemented as a Rust daemon with a GTK4/Libadwaita GUI frontend and a CLI interface, supporting Linux (Wayland, X11), macOS, and Windows. Communication between peers uses DTLS/TLS encryption with self-signed certificate fingerprint authentication over UDP/TCP. Input capture and emulation are abstracted via traits with platform-specific backends (libei, layer-shell, X11, CoreGraphics, Windows input APIs), and client discovery relies on mDNS/DNS. The architecture features a central service orchestrator managing capture, emulation, state, and IPC with the frontend over Unix sockets (or TCP on Windows). The codebase demonstrates solid Rust practices, async patterns with Tokio, and clean trait design for platform abstraction. While functionally complete, there are known caveats around compositor support, scancode mappings, and some memory leaks, reflecting ongoing development effort.

RATING: 8.5/10 MAINT: active DRIFT: low
▸ 3 reusable components found
jovanlanik/gtklock ★ 499 41 APPLICATION

gtklock is a GTK-based lockscreen for Wayland compositors. It locks the screen using the ext-session-lock protocol and authenticates users via PAM. The application creates a window for each monitor displaying a clock, date, and password entry. It supports features like idle hiding, multi-monitor focus following, and running custom commands on lock/unlock events. The architecture is modular, with a core GTK application loop, pluggable modules for extensibility, and isolated subsystems for authentication and configuration. The main entry point is in src/source.c, which initializes the GTK application, loads configuration and modules, and sets up event handlers for screen locking and unlocking.

RATING: 8.4/10 MAINT: active DRIFT: low
▸ 2 reusable components found
cage-kiosk/cage ★ 2048 142 APPLICATION

Cage is a Wayland kiosk compositor written in C. It launches a single full-screen application, managing inputs, outputs, and window decorations. The architecture is a monolithic compositor built on wlroots 0.20, with separate modules for seat management, output handling, view management, and shell protocol support (XDG shell and XWayland). The main entry point is `cage.c`, which initializes the Wayland display, backend, renderer, and protocol managers, then spawns the given application as a child process. The compositor runs a single application full-screen, supporting multiple monitors (extend or last mode), idle inhibition, virtual keyboard/pointer, and foreign toplevel management. It is a well-structured, professional-quality C codebase with clear separation of concerns, consistent error handling, and proper resource cleanup. The code is directly derived from the wlroots tinywl example and has been matured into a robust kiosk solution.

RATING: 8.2/10 MAINT: active DRIFT: low
▸ 2 reusable components found
nwg-piotr/nwg-look ★ 1003 37 APPLICATION

nwg-look is a GTK settings editor designed for Wayland environments, particularly wlroots-based compositors like Sway. It provides a graphical interface to configure GTK appearance settings including themes, icons, cursors, fonts, and other interface options. The application reads current gsettings values, allows users to modify them through a GTK3 interface, and applies changes via gsettings commands. It can also export settings to various configuration files (settings.ini, .gtkrc-2.0, index.theme, xsettingsd.conf, GTK4 symlinks) and includes Flatpak integration for theme management. The architecture follows a traditional monolithic GUI pattern with separation between main application logic, UI components, utility functions, and a dedicated stylepak package for Flatpak-specific functionality.

RATING: 7.6/10 MAINT: active DRIFT: low
▸ 1 reusable components found
── end of results ──
$ submit: