Turns out, some windows weren’t properly cleaning up after themselves, leaving behind undead nested processes lurking in the shadows of our system. To fix this, I’ve introduced proper PID tracking with a shiny new windowIDToPIDMap, facilitating keeping tabs on which windows are still breathing and which need a swift, merciful execution. The new cleanupTerminatedWindows() function patrols for these lost souls, checking if their process is actually terminated using kill(0), and if that’s not convincing enough, windowManager will peek into /proc/[pid]/cmdline to verify if they’re who they say they are. If a process is missing or pretending to be something it's not, it is exorcised from our system. To keep our execution order from turning into a chaotic zombie apocalypse of race conditions, I’ve wrapped windowIDToPIDMap in a std::mutex, ensuring that multiple threads don’t accidentally resurrect the dead while another is trying to bury them. Lastly, because everyone should respect basic survival instincts, I’ve added error handling for directory creation. No more blindly assuming /tmp/hypr exists—we should check before we start dumping files there, because even the undead deserve some proper housekeeping. :) |
||
|---|---|---|
| .github | ||
| example | ||
| src | ||
| .gitignore | ||
| CMakeLists.txt | ||
| CONTRIBUTING.md | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
Hypr is a dynamic Linux tiling window manager for Xorg. It's written in XCB with modern C++ and aims to provide easily readable and expandable code.
For Hypr with land, see Hyprland, the Wayland Compositor.
Hypr is _only_ a window manager. It is not a compositor and does not implement a compositor's functionality. You can run it without one (e.g. Picom) though, since it runs on Xorg, which doesn't require a compositor.
Key Features
- True parabolic animations
- Rounded corners and borders
- Config reloaded instantly upon saving
- A built-in status bar with modules
- Easily expandable and readable codebase
- Pseudotiling
- Multiple tiling modes (dwindling and master)
- Window rules
- Intelligent transients
- Support for EWMH-compatible bars (e.g. Polybar)
- Keybinds config
- Tiling windows
- Floating windows
- Workspaces
- Moving / Fullscreening windows
- Mostly EWMH and ICCCM compliant
Installation
I do not maintain any packages, but some kind people have made them for me. If I missed any, please let me know.
IMPORTANT: Hypr requires xmodmap to correctly apply keybinds. Make sure you have it installed.
For stable releases, use the Releases tab here on github, and follow the instructions to install it in the Wiki
Arch (AUR)
yay -S hypr-git
Void Linux
https://github.com/Flammable-Duck/hypr-template
Manual building
If your distro doesn't have Hypr in its repositories, or you want to modify hypr,
see the Wiki to see build and installation instructions.
Configuring
See the Wiki Page for a detailed overview on the config, or refer to the example config in examples/hypr.conf.
You have to use a config, place it in ~/.config/hypr/hypr.conf
Screenshot Gallery
Known issues
- Picom's shadow and effects do not update for cheap animations while animating
- Non-cheap animations are choppy (duh!)
Contributions
Refer to CONTRIBUTING.md and the Wiki for contributing instructions and guidelines.


