Noctalia is a Linux desktop shell for Wayland compositors, providing a fully integrated user environment including a bar, dock, notification center, lock screen, wallpaper management, launcher/dmenu, control center, on-screen displays, and a plugin system based on Luau scripting. The application is written in modern C++ (C++20/23) with its own retained-mode scene graph UI rendered via OpenGL ES, and communicates with the system through Wayland protocols, D-Bus, PipeWire, and Unix sockets. It supports multiple Wayland compositors (Hyprland, Sway, Niri, Mango, Labwc, dwl, KDE, Umbriel) via compositor-specific backends, and features a sophisticated theme engine with Material 3 palette generation, template application to third-party tools, and a CLI/IPC interface for runtime control. The codebase exhibits strong engineering practices: clean abstractions (poll sources, scene nodes, config schema engine), extensive test coverage, and a well-organized modular structure despite its monolithic architecture.
Hyprland is a dynamic tiling Wayland compositor written in modern C++. It implements a wide range of Wayland protocols (XDG shell, layer shell, screencopy, input methods, color management, etc.) and provides a full desktop environment with OpenGL rendering, blur effects, animations, and Lua-based configuration. The architecture is a monolithic compositor with modular internal components: a protocol layer, desktop state management, layout algorithms (dwindle, master, scrolling, floating, Lua custom), input handling, rendering pipeline (pass elements, blur providers, window transformers), and IPC via Unix sockets. It includes a plugin system (hyprpm) and a test harness (hyprtester) for integration testing. The codebase demonstrates high craftsmanship with reusable patterns like an event bus, signal/slot system, typed config values, damage ring, and promise-based async IPC. It is actively maintained with frequent commits and a large community.
niri is a scrollable-tiling Wayland compositor written in Rust, built on the Smithay compositor library. It provides a dynamic workspace model with per-monitor vertical workspaces, an always-empty workspace at the bottom, and a tiling layout that supports floating windows, fullscreen, maximized, and tabbed modes. The compositor features a rich animation system (springs, easing curves), custom GLSL shaders for borders, shadows, blur, and window effects, and a comprehensive IPC interface for external tooling. It integrates with GNOME via D-Bus (screencasting, display config, accessibility) and supports PipeWire-based screencasting. Configuration is done via KDL files with live reload, includes, and merging semantics. The codebase is modular with separate crates for config parsing (niri-config), IPC protocol (niri-ipc), and visual tests (niri-visual-tests). It includes extensive unit, integration, snapshot, and property-based tests, as well as a visual test suite using GTK4. The architecture is a monolith compositor with well-defined subsystems for input handling, layout management, rendering, and protocol implementation.
This repository is a community distribution and feature-extension framework for OpenAI's ChatGPT desktop application on Linux. It does not contain the core ChatGPT application itself; instead, it verifies, repackages, and patches the official signed upstream .deb package to produce customized builds for multiple Linux package formats (deb, RPM, pacman, AppImage, Nix, Gentoo ebuild). The system adds over 40 optional Linux-specific features—such as system tray integration, global dictation, computer-use automation (window management, accessibility, screenshots), desktop recording/replay, text-to-speech, proxy authentication, and UI tweaks—each gated behind a declarative feature manifest and applied via a sophisticated patch engine that modifies the Electron app bundle at build time. Architecturally, the project is a build/packaging/update framework. The core is a patch engine (scripts/patches/) that applies declarative descriptors to the upstream app.asar in phases (main-bundle, webview-asset, extracted-app). Features live under linux-features/ with standardized manifests (feature.json), patch scripts (patch.js), stage hooks, and tests. Performance-critical subsystems are implemented in Rust: a computer-use backend (window management, input simulation, accessibility tree), a record-replay backend (desktop session capture, timeline events, skill drafting), a text-to-speech MCP server, a global dictation helper, and a self-updating package manager daemon. The launcher (start.sh.template) orchestrates environment setup, feature hooks, and CLI dispatch. Key entry points include the installer (install.sh), the feature picker GUI (scripts/feature-picker.py), the patch runner (scripts/patches/runner.js), and the updater daemon (updater/src/main.rs). Data flows are primarily build-time: the upstream .deb is downloaded, verified via GPG/SHA256, extracted, patched, and repackaged. At runtime, features like computer-use and record-replay communicate with native Rust backends over MCP/JSON-RPC. The updater daemon runs as a systemd user service, polling signed APT metadata and performing transactional rebuilds with rollback support. External dependencies include the upstream OpenAI .deb package (the sole ground-truth source), Node.js for patching, Rust for native components, and various Linux system tools (systemd, D-Bus, GNOME Shell, X11/Wayland utilities, ydotool, wmctrl, xdotool, secret-tool). The build system uses Make, Docker for CI, and supports multiple package managers. The project is heavily dependent on the upstream bundle's minified JavaScript structure, which it manages through contract-based patching with drift detection.
RustDesk is a full-featured, open-source remote desktop application written primarily in Rust with a Flutter frontend. In production, it enables remote control, file transfer, clipboard synchronization, audio/video streaming, TCP tunneling, printer sharing, and camera streaming across Windows, macOS, Linux, Android, and iOS. The architecture is a client-server model with a rendezvous/relay server for NAT traversal, a plugin system for extensibility, and platform-specific backends for screen capture (DXGI, X11, Wayland, Quartz, Android MediaProjection), input simulation (enigo), and clipboard file transfer (RDP-based protocol with FUSE on Unix). Key entry points include `src/main.rs` (CLI), `src/server.rs` (host service), `src/client.rs` (remote session), and the Flutter UI in `flutter/`. Data flows involve encrypted peer-to-peer connections (NaCl), adaptive video codec selection (VP8/VP9/AV1/H264/H265 with hardware acceleration), and IPC via named pipes with OS-level authentication. External dependencies include libvpx, libyuv, FFmpeg, Opus, and platform-specific SDKs (Windows IddCx, macOS CoreGraphics, Linux Wayland/D-Bus). The codebase is actively maintained with frequent commits, CI/CD pipelines, and a large community (120k+ stars).
Vesktop is a custom Discord desktop client built with Electron. It wraps the Discord web app and pre-integrates the Vencord mod, providing a lighter, faster alternative to the official client with enhanced features like Linux screenshare with audio, Wayland support, and better privacy. The architecture follows a standard Electron pattern: a main process (src/main) handles window management, IPC, settings, updates, and platform-specific integrations (D-Bus, venmic for audio, Steam Deck), while preload and renderer scripts patch Discord's web code at runtime. The codebase is well-structured with TypeScript, strict linting, and a modular design. Notable reusable components include a generic SettingsStore with proxy-based change listeners and a C++ NAPI module for D-Bus integration.
Deskflow is a free and open-source keyboard and mouse sharing utility (software KVM without video) that allows one computer's keyboard, mouse, and trackpad to control multiple computers over a network. It uses a client-server architecture with a core process handling input forwarding and network protocol, a daemon for Windows service/UAC support, and a Qt-based GUI for configuration. The system supports TLS encryption, clipboard sharing, and multiple platforms including Windows, macOS, Linux (X11 and Wayland). It implements a custom binary protocol with version negotiation (1.0-1.8) and provides platform-specific backends for input capture and injection. The codebase is well-structured with clean abstractions, extensive unit tests, and CI/CD pipelines, though it carries some legacy code from its Synergy/Barrier origins.
wl-clipboard-rs is a Rust library providing safe access to the Wayland clipboard through the ext-data-control and wlr-data-control protocols. It consists of a library crate (wl-clipboard-rs) that handles clipboard operations and a tools crate (wl-clipboard-rs-tools) providing terminal utilities: wl-copy (copy to clipboard), wl-paste (paste from clipboard), and wl-clip (xclip-like utility). The library abstracts over different Wayland clipboard protocol versions, manages connections to the compositor, handles MIME type negotiation, and serves clipboard requests. The architecture separates concerns into copy, paste, utils, common connection logic, data control abstraction, and seat data management modules.
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.
HyprQuickFrame is a native screenshot utility for Hyprland built using the Quickshell framework. It provides an overlay-based UI for capturing screenshots in region, window, or full-screen modes, with options to edit, save to disk, copy to clipboard, or share via KDE Connect. The application features shader-based dimming, animated transitions, and dynamic theme synchronization with wallpapers via Noctalia. The architecture centers around a QML application shell that manages state and delegates to specialized UI components (RegionSelector, WindowSelector, ControlBar, etc.). Screenshot capture is performed by spawning external processes (grim, wl-clipboard, editors) based on the selected mode. The theme system allows users to customize colors and animations via a TOML file, with a Python script available to sync colors from Noctalia-generated palettes. Key reusable components include a custom animated toggle button (QuickToggle.qml), a segmented control bar (ControlBar.qml), a TOML-based theme parser (Theme.qml), and a Noctalia theme synchronization script (sync_theme.py). These components are designed with minimal dependencies and demonstrate advanced QML animation techniques and configuration patterns.
Cocoa-Way is a macOS-native Wayland compositor that runs Linux GUI applications inside container runtimes (Apple Container, Docker, OrbStack, or via SSH/Waypipe) and renders them to macOS windows using Metal. The core architecture consists of a Rust binary that serves as both a desktop compositor (single window with tiled layout) and a rootless mode that maps each xdg-toplevel to a native macOS window. It features bidirectional clipboard relay (text and PNG, up to 64 MiB), CoreAudio forwarding, a control API over Unix sockets, and an optional MCP server for AI-assisted diagnostics and onboarding. The project demonstrates high craftsmanship in its Metal renderer with texture caching and damage-coalescing, as well as in its container session management, which handles multiple runtime backends and complex lifecycle orchestration. The codebase is well-structured but contains a few monolithic files (e.g., main.rs, container_mode.rs) that handle a large amount of state and UI logic.
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.
Weylus is a cross-platform application that turns tablets and smartphones into graphic tablets/touch screens for computers. It operates by running a local web server that serves a web page to the tablet's browser. The web page captures pointer, touch, stylus, keyboard, and wheel events via JavaScript PointerEvents and sends them over a WebSocket connection to the server. The server then simulates these input events on the host machine using platform-specific mechanisms: on Linux it uses the uinput kernel module for full stylus/touch/mouse/keyboard support; on macOS and Windows it falls back to the autopilot library for mouse/keyboard simulation and Windows-specific synthetic pointer injection for touch/pen. Simultaneously, Weylus captures the screen (or a selected window/monitor) using platform-native APIs: X11 shared memory (XShm) on Linux X11, PipeWire/GStreamer on Wayland, CoreGraphics on macOS, and DirectX via captrs on Windows. The captured frames are encoded into a fragmented MP4 H.264 video stream using a statically linked ffmpeg (libx264) with optional hardware acceleration (VAAPI, NVENC, VideoToolbox, MediaFoundation). The video stream is sent to the browser via the same WebSocket connection and played using the Media Source Extensions API. The application provides a GUI (built with FLTK) for configuration and a headless mode for automation. It supports access codes, custom input areas, and multiple simultaneous clients.
This repository is a complete Hyprland desktop-environment configuration distribution (ML4W) rather than a traditional application. The code that ships is a combination of shell-based installer/setup tooling, modular Hyprland Lua configuration, matugen-driven design-token generation, and Quickshell QML widgets for a statusbar and sidebar. In production it provisions a Wayland desktop on Arch, Fedora, Ubuntu, or openSUSE via setup/preflight-*.sh, setup/post-*.sh, and .dotinst manifests; at runtime hyprland.lua loads split Lua modules for monitors, input, keybindings, animations, decorations, window rules, and workspace behavior, while ml4w-* helper scripts orchestrate wallpaper changes, theme switching, launchers, notifications, statusbar reloads, and system actions. Configuration and state flow from flat JSON and shell settings into matugen templates and Quickshell or Waybar consumers; IPC handlers expose toggles to the UI. The repository is best understood as an application-like configuration platform with strong theming and modularization architecture, not a data or research project.
Wolf is a production-grade game streaming server that implements the Moonlight (NVIDIA GameStream) protocol. It allows multiple remote clients to play games or run applications on a single Linux host, sharing a GPU and input devices. The system runs games in isolated Docker containers, captures their output via a custom headless Wayland compositor, encodes video/audio using hardware-accelerated GStreamer pipelines (NVIDIA NVENC, Intel QSV, AMD VA-API), and streams the result over RTP with forward error correction (Reed-Solomon) and AES encryption. Input from Moonlight clients is injected into containers via virtual uinput devices, and audio is routed through PulseAudio virtual sinks. The server provides a REST API for Moonlight client pairing/control, a Unix socket management API for a companion web UI, and supports multi-session lobbies. The architecture is monolithic but modular, using an event bus for decoupling, immutable state with `immer`, and a plugin system for GStreamer video/audio payloaders. The codebase demonstrates strong C++20 practices, portability across Linux distributions, and deep integration with kernel and GPU subsystems. It is not a data research project; it is a low-latency streaming application.
This repository repackages Anthropic's official Claude Desktop Linux .deb with a comprehensive set of Linux-native enhancements and community features. It applies 48 surgical JavaScript patches (compiled from Nim sources) to the minified Electron bundle, adding custom theme engine with 97 bundled dual light/dark palettes, multi-profile isolation, Quick Entry global hotkey, Computer Use desktop automation backends (X11, wlroots, GNOME, KWin portals), and an in-app Extra settings panel for themes, feature flags, and third-party inference configuration. The project produces packages for Arch (pacman), Debian/Ubuntu (APT), Fedora/RHEL (RPM), NixOS (flake), and AppImage, with automated CI that polls upstream every 2 hours, validates patch integrity, and publishes signed repositories. The architecture is a patch overlay on a third-party Electron desktop app. Patches are organized into three groups: linux (31 patches, always-on), core (7 patches, infrastructure), and community (10 patches, opt-in). A Nim-based build system compiles each patch into a native binary that performs regex-based transformations on the minified JS, with strict idempotency checks that fail the build if any pattern doesn't match. The patching system also handles upstream code-split chunks and concatenates/splits them as needed. The theme engine injects CSS custom properties via Electron's insertCSS, supports live reload via file watcher, and includes a full browser UI (theme picker SPA) with search, keyboard navigation, and wallpaper-driven generation via matugen. While the codebase demonstrates high engineering craftsmanship—consistent IPC validation, atomic config writes, robust fallback chains for Computer Use backends, and a reproducible build workflow with byte-identical artifact checks—it is tightly coupled to a single upstream app's minified bundle shape and DOM structure. The 48 patches are a significant maintenance burden that must be re-validated on every upstream release. However, the project is actively maintained, with automated CI catching most regressions, and several patterns (spinner injector, theme engine, config utilities) could be extracted for reuse in other Electron or web applications.
HyDE is a configuration management framework and dotfiles distribution for the Hyprland Wayland compositor. It functions as an automated installer, runtime environment, and dynamic theming engine for a complete Linux desktop experience. The system's core innovation is the 'wallbash' pipeline, which extracts color palettes from wallpapers and propagates them into dozens of application configurations via template substitution. The codebase is a polyglot of Bash, Lua, and Python, reflecting an ongoing architectural migration from shell scripts to structured Lua/Python modules. While tightly coupled to the Hyprland ecosystem and carrying significant technical debt from its rapid evolution (duplicate code, hardcoded paths, overlapping implementations), it demonstrates high craftsmanship in specific areas: a pure-Lua TOML parser, a plugin-based package manager abstraction, versioned migration scripts, and a Unix socket-based IPC pattern for audio visualization. Maintenance is active with a defined release cadence, but the project is in a state of active refactoring, meaning users should expect breaking changes and incomplete migrations between versions.
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.
This repository is the KDE Plasma Mobile shell, a full-featured mobile desktop environment for Linux phones and tablets. It provides a touch-optimized user interface including homescreens (Folio and Halcyon), a status bar, navigation panel, quick settings drawer, lock screen, notification system, volume OSD, and system settings modules. The architecture is a Plasma shell containment built on Qt 6, KDE Frameworks 6, and Wayland, with C++ backends for hardware interaction (sensors, display power management, flashlight, screen brightness) and QML frontends for all UI components. Key entry points include the shell package (org.kde.plasma.mobileshell), homescreen containments, KWin effects for task switching, KDED modules for APN autodetection and session startup, and an initial setup wizard. External dependencies include KDE Plasma libraries (plasma-workspace, kwin, plasma-nano, Kirigami), Qt 6, KWayland, NetworkManager, ModemManager, PulseAudio, and Solid. The codebase is actively developed with a large translation footprint and two parallel homescreen implementations, indicating ongoing feature work and some technical debt.
XCap is a cross-platform screen capture library written in Rust, supporting Linux (X11, Wayland), macOS, Windows, and HarmonyOS (OHOS). It provides a unified API for capturing images of monitors and windows, as well as video recording (currently work-in-progress). The library abstracts platform-specific implementations behind common `Monitor`, `Window`, and `VideoRecorder` structs, using native APIs such as XCB, PipeWire, CoreGraphics, AVFoundation, GDI, Windows Graphics Capture, and OHOS PixelMap. It is well-structured with clean error handling and modular platform modules, though some features like Wayland capture and window recording are still incomplete. The codebase demonstrates solid Rust engineering practices and is actively maintained.