Ulauncher is a fast, GTK3-based application launcher for Linux, primarily written in Python. It provides real-time fuzzy search across applications, calculator, extensions, file browser, and user-defined shortcuts. The architecture follows a multi-process model: the core UI runs in the main process, while extensions are spawned as subprocesses communicating via Unix sockets over a JSON-line protocol. The system integrates deeply with the Linux desktop via D-Bus, systemd user services, and desktop environment-specific hotkey configuration (GNOME, XFCE, Plasma). The CLI entry point (`bin/ulauncher`) and Python module (`ulauncher/__main__.py`) support commands for starting the app, managing extensions and themes, and toggling visibility. The codebase is well-structured, with clear separation between UI (`ulauncher/ui`), core logic (`ulauncher/core.py`), modes (apps, calc, extensions, file browser, shortcuts), IPC (`ulauncher/internals/ipc.py`), and utilities (`ulauncher/utils`). It features a robust event bus, file-backed configuration with lazy loading (`JsonConf`, `JsonKeyValueConf`), a custom dict-based dataclass (`BaseDataClass`), and a `Fallible` (Ok/Err) pattern for predictable error handling. The extension system is fully documented with dedicated architecture docs. However, the repository is in pre-release state (v6.0.0-beta35), carries a significant v2 extension API compatibility layer, and relies on several GLib/PyGObject version workarounds, indicating moderate technical drift.