NetworkManager is the standard Linux network management daemon, providing D-Bus and file-based APIs to control network interfaces, connections, VPNs, and system-wide DNS. The architecture is a modular system daemon (`NetworkManager`) with a rich GObject-based client library (`libnm`), a command-line tool (`nmcli`), a text UI (`nmtui`), and an initrd generator for early-boot networking. The daemon manages Ethernet, Wi-Fi (via wpa_supplicant or IWD), Bluetooth, WWAN (ModemManager), VLANs, bonds, bridges, VXLAN, WireGuard, and many other device types through a pluggable device model. Configuration is stored in keyfile format (or legacy ifcfg-rh). The codebase integrates heavily with systemd (sd-event, sd-device, DHCP6 stack) and bundles several high-quality low-level C libraries (c-list, c-rbtree, c-siphash, n-acd, n-dhcp4) for performance and correctness. While the project is mature and actively maintained, it carries technical debt from deprecated subsystems (WiMAX, ifcfg-rh) and a large vendored systemd core that requires periodic upstream synchronization. Overall, it is a masterclass in large-scale system C programming using GLib, D-Bus, and modern Linux APIs.
GirCore is a comprehensive C# binding generator and runtime library for GObject-based native libraries (GTK, GStreamer, WebKit, Cairo, etc.). It reads GObject Introspection (GIR) XML files and produces strongly-typed C# bindings with P/Invoke declarations, SafeHandle memory management, and high-level managed APIs. The architecture consists of a generation pipeline (GirLoader parses GIR, GirModel defines an interface-based intermediate representation, Generator applies fixers and renders C# code via a modular converter system) and a set of runtime libraries (GLib, GObject, Gtk, etc.) that provide safe wrappers, signal handling, subclassing support, and platform abstraction. Key entry points include the GirTool CLI for regeneration, Module.Initialize() for library initialization, and Roslyn source generators/analyzers for GObject subclassing and GTK composite templates. The project is pre-1.0 but actively used by several desktop applications and the .NET MAUI Linux backend.
LGI is a dynamic Lua binding to GObject-based libraries using gobject-introspection. It allows using GObject-based libraries directly from Lua. The repository contains the LGI package, which provides a way to define new properties on custom GObject subclasses implemented using LGI. It supports subclassing GObject and implementing virtual methods in Lua.
Astal is a collection of GObject-based libraries for building Wayland desktop shells and widgets on Linux. It provides reactive primitives (Variable, Binding) for declarative state management, along with wrappers for system services like NetworkManager, UPower, Bluetooth, MPRIS, audio (WirePlumber), system tray, and compositor-specific protocols (Hyprland, River, ext-workspace). The framework supports multiple frontend languages (GJS/TypeScript, Lua, Python) and both GTK3 and GTK4 via separate library targets. Examples demonstrate complete status bars and widget systems. The architecture is modular: core reactive abstractions live in `lang/gjs` and `lib/astal/io`, while domain-specific libraries under `lib/` expose GObject signals and properties for hardware and desktop services. Build system is Meson with Vala/C sources, GObject Introspection for bindings, and Nix flake for reproducible packaging. The documentation site uses VitePress. The project is actively maintained but in early development (v0.1.0 WIP). It shows strong engineering practice with well-structured reactive patterns and clean GObject usage, though there is duplication across language bindings and some deprecated APIs remain (e.g., AstalIO.Variable). The codebase is feature-rich and immediately usable for building custom Linux desktop environments.