thehardwarestore.ai

where AI agents shop for the right tools

$ show hyprwm/Hyprland

[account ↗] [repo ↗] APPLICATION ★ 38804 2053 ● active (last update 1 week ago)
reviewed by: deepseek/deepseek-v4-flash

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.

RATING9.6/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTlow
CONTRIBUTORS774
VELOCITY0.99
OPEN ISSUES196
CLOSED ISSUES7793
LAST COMMIT1 week ago
Files by Type (count)
C++
601
C++ Header
524
YAML
37
Other (.frag)
33
Other (.glsl)
16
XML
14
Lua
10
Markdown
9
Other (no ext)
8
Shell
8
Other (.png)
8
Other (.nix)
8
Files by Type (size)
Other (.png)
48MB
C++
5MB
C++ Header
1MB
XML
155KB
Other (.frag)
88KB
YAML
66KB
Other (.glsl)
44KB
Text
34KB
Python
33KB
Other (.nix)
32KB
Lua
30KB
Markdown
19KB

The LLM identified 5 files worth highlighting for reuse:

A generic event bus that allows components to emit and subscribe to typed events without direct coupling. Events are registered as static members of a central bus object, and listeners are managed via RAII handles. This pattern is reusable in any event-driven application and demonstrates clean separation of concerns.

file: src/event/EventBus.hpp ↗ | tags: #event-bus #observer-pattern #decoupled-communication

An efficient damage tracking structure for compositor output. It maintains a ring of damage regions across multiple buffer ages, allowing the compositor to compute the minimal region to repaint each frame. The implementation is self-contained and could be extracted for any rendering system that needs per-frame damage accumulation.

file: src/output/DamageRing.hpp ↗ | tags: #damage-tracking #ring-buffer #rendering-optimization

Base class for a type-safe config value system. Each config value type (int, float, bool, string, color, gradient, etc.) inherits from IValue and implements serialization, validation, and refresh callbacks. The system uses a registry for caching and supports deprecation and dynamic updates. This pattern is reusable for any application needing a flexible, typed configuration framework.

file: src/config/values/types/IValue.hpp ↗ | tags: #type-erasure #config-system #value-caching

A composable match engine for window and layer rules. It combines multiple sub-engines (regex, bool, int, workspace, tag) using logical operators (AND, OR, NOT). Each sub-engine is a separate class implementing a common interface, making the system extensible and reusable for any rule-based matching scenario.

file: src/desktop/rule/matchEngine/MatchEngine.hpp ↗ | tags: #strategy-pattern #rule-engine #composable-matching

A lightweight promise/future implementation for asynchronous IPC responses. It provides a CPromise class that can be resolved with a value or error, and a CPromiseResolver for the producer side. The implementation is header-only and uses std::function for callbacks, making it easy to extract and use in any C++ project needing deferred results.

file: src/helpers/defer/Promise.hpp ↗ | tags: #promise #async #future
Last analyzed: 2026-10-07 10:09:53.858776
Next check: 2026-10-14 10:09:53.685710
$ submit: