Hyprland
Applicationhyprwm/Hyprland
Independent dynamic tiling Wayland compositor with extensive eye candy and customization.
Overview
Hyprland is a 100% independent, dynamic tiling Wayland compositor that does not sacrifice on looks. It provides the latest Wayland features, high customizability, eye candy, powerful plugins, and easy IPC, written in C++. Supports gradient borders, blur, animations, shadows, and tearing for gaming.
README Preview
\n\n\n\n\n\n[![Badge Workflow]][Workflow]\n[![Badge License]][License] \n![Badge Language] \n[![Badge Pull Requests]][Pull Requests] \n[![Badge Issues]][Issues] \n![Badge Hi Mom]\n\n\n\nHyprland is a 100% independent, dynamic tiling Wayland compositor that doesn't sacrifice on its looks.\n\nIt provides the latest Wayland features, is highly customizable, has all the eyecandy, the most powerful plugins,\neasy IPC, much more QoL stuff than other compositors and more...\n\n\n\n---\n\n**[ Install ][Install]** \n**[ Quick Start ][Quick Start]** \n**[ Configure ][Configure]** \n**[ Contribute ][Contribute]**\n\n---\n\n\n\n\n\n# Features\n\n- All of the eyecandy: gradient borders, blur, animations, shadows and much more\n- A lot of customization\n- 100% independent, no wlroots, no libweston, no kwin, no mutter.\n- Custom bezier curves for the best animations\n- Powerful plugin support\n- Built-in plugin manager\n- Tearing support for better gaming performance\n- Easily expandable and readable codebase\n- Fast and active development\n- Not afraid to provide bleeding-edge features\n- Config reloaded instantly upon saving\n- Fully dynamic workspaces\n- Two built-in layouts and more available as plugins\n- Global keybinds passed to your apps of choice\n- Tiling/pseudotiling/floating/fullscreen windows\n- Special workspaces (scratchpads)\n- Window groups (tabbed mode)\n- Powerful window/monitor/layer rules\n- Socket-based IPC\n- Native IME and Input Panels Support\n- and much more...\n\n\n\n\n\n\n# Gallery\n\n\n\n![Preview A]\n\n\n\n![Preview B]\n\n\n\n![Preview C]\n\n\n\n\n\n\n# Special Thanks\n\n\n\n**[wlroots]** - *For powering Hyprland in the past*\n\n**[tinywl]** - *For showing how 2 do stuff*\n\n**[Sway]** - *For showing how 2 do stuff the overkill way*\n\n**[Vivarium]** - *For showing how 2 do stuff the simple way*\n\n**[dwl]** - *For showing how 2 do stuff the hacky way*\n\n**[Wayfire]** - *For showing how 2 do some graphics stuff*\n\n\n\n\n[Configure]: https://
FAQ (5)
TroubleshootingHow to fix a duplicate ghost cursor appearing at (0,0) on a second monitor after booting Hyprland?
This multi-monitor cursor rendering bug was fixed in Hyprland 0.38.1. Upgrade Hyprland to 0.38.1 or newer and restart the session. As a temporary workaround on older versions, move the mouse or switch focus to the monitor showing the ghost cursor; the extra cursor at the top-left corner disappears immediately.
TroubleshootingHow to fix the VRAM leak when unplugging and replugging a DRM monitor in Hyprland?
Upgrade Hyprland and Aquamarine to a build containing the fixes: Aquamarine PR #165 drops KMS framebuffer references when a CRTC is disabled or a connector is disconnected, and the associated Hyprland change calls OpenGL destroyMonitorResources on monitor disconnect. This prevents each DRM display replug from retaining GBM/GEM/KMS resources in VRAM. As a temporary workaround on older versions, avoid repeated monitor unplug/replug cycles and restart Hyprland to release the leaked VRAM.
TroubleshootingHow can I explicitly show or hide a Hyprland special workspace instead of only toggling it?
Use a temporary unused special workspace to reset visibility first. To hide the currently visible special workspace, toggle an empty workspace twice:
hyprctl dispatch togglespecialworkspace __TEMP
hyprctl dispatch togglespecialworkspace __TEMP
To deterministically show a specific special workspace, reset visibility first, then toggle it:
hyprctl dispatch togglespecialworkspace __TEMP
hyprctl dispatch togglespecialworkspace __TEMP
hyprctl dispatch togglespecialworkspace <NAME>
Replace <NAME> with your special workspace name. On newer Hyprland builds that include the added dispatcher, you can also hide the current special workspace with:
hyprctl dispatch hidespecialworkspaceTroubleshootingHow do I fix the XF86ScreenSaver keybind not working in Hyprland?
Upgrade Hyprland to a build containing the "Fix keybinds xkb names" fix, then reload:
bind = ,XF86ScreenSaver, exec, hyprctl notify 5 2000 "rgb(22DA6E)" "i am working"
Run:
hyprctl reload
As a workaround on affected versions, bind the physical keycode reported by wev instead of the keysym. In this issue wev reports key 160, so use:
bind = ,code:160, exec, hyprctl notify 5 2000 "rgb(22DA6E)" "i am working"
Then run hyprctl reload. Verify your own keycode with wev because it can differ between keyboards.
TroubleshootingHow to fix Samsung Smart TV briefly flickering black on mouse clicks over HDMI in Hyprland?
There is no confirmed Hyprland/Aquamarine fix in the issue, but a reported workaround for Samsung HDMI black flashes is to keep silent audio playing, which appears to keep the TV's HDMI link active.
Test it with PipeWire/PulseAudio:
pw-cat --playback --raw --rate=48000 --channels=2 --format=s16 /dev/zero
If the flicker stops while the command is running, stop it with Ctrl+C and create a persistent user service:
mkdir -p ~/.config/systemd/user
cat > ~/.config/systemd/user/hdmi-silent-audio.service <<'EOF'
[Unit]
Description=Silent audio keep-alive for Samsung HDMI flicker
[Service]
ExecStart=/usr/bin/pw-cat --playback --raw --rate=48000 --channels=2 --format=s16 /dev/zero
Restart=always
[Install]
WantedBy=default.target
EOF
systemctl --user daemon-reload
systemctl --user enable --now hdmi-silent-audio.service
This workaround is reported for a similar Samsung TV issue and was not specifically confirmed on the M50D. Settings such as disabling blur, animations, hardware cursors, damage tracking, direct scanout, VRR, PSR, FBC, or DC did not resolve the original Hyprland-specific case.