Hyprland: Difference between revisions
m Add links to display manager wiki pages (but only greetd exists right now) |
m Updates |
||
| (2 intermediate revisions by the same user not shown) | |||
| Line 1: | Line 1: | ||
[https://hyprland.org/ Hyprland] is an independent, extensible, bleeding-edge [[Wayland]] compositor written in modern C++ with an emphasis on looks. In addition, Hyprland also offers a number of first-party tools as well as a custom plugin system. The most up-to-date and complete documentation | [https://hyprland.org/ Hyprland] is an independent, extensible, bleeding-edge [[Wayland]] compositor written in modern C++ with an emphasis on looks. In addition, Hyprland also offers a number of first-party tools as well as a custom plugin system. The most up-to-date and complete documentation may be found on the project's own [https://wiki.hyprland.org/ wiki]. | ||
Some of the most notable features of Hyprland are: | Some of the most notable features of Hyprland are: | ||
* '''Independent Wayland implementation''': | * '''Independent Wayland implementation''': Does not rely on wlroots or other external libraries, and provides an in-house alternatives to common components (screen locking, idle daemon, etc). | ||
* '''Easy to configure''': | * '''Easy to configure''': Uses a live reloading config file in plain-text with useful defaults. | ||
* '''Dynamic tiling support''': | * '''Dynamic tiling support''': Supports both automatic tiling and floating mode with multiple layouts. | ||
* '''Socket-based IPC''': | * '''Socket-based IPC''': Allows controlling the compositor at runtime via UNIX socket. | ||
* '''Global shortcuts''': | * '''Global shortcuts''': Permits setting global keybinds for any application (for apps such as [[OBS Studio]]). | ||
* '''Window/Workspace Rules''': | * '''Window/Workspace Rules''': Set special behaviors for certain windows and workspaces. | ||
== Installation == | == Installation == | ||
NixOS 24.11 added support for launching Hyprland with [https://github.com/Vladimir-csp/uwsm Universal Wayland Session Manager] (UWSM) and is the recommended way to launch Hyprland as it neatly integrates with [[Systemd]]. | NixOS 24.11 added support for launching Hyprland with [https://github.com/Vladimir-csp/uwsm Universal Wayland Session Manager] (UWSM) and is the recommended way to launch Hyprland as it neatly integrates with [[Systemd]]. [[UWSM|Options for configuring UWSM may be found here]]. Also see the Hyprland wiki [https://wiki.hypr.land/Useful-Utilities/Systemd-start/#uwsm page for UWSM here]. | ||
{{file| | {{file|||<nowiki> | ||
{ | { | ||
programs.hyprland = { | programs.hyprland = { | ||
| Line 20: | Line 20: | ||
}; | }; | ||
} | } | ||
</nowiki>}} | </nowiki>|name=/etc/nixos/configuration.nix|lang=nix}}{{Warning|If you use the Home Manager module, make sure to disable systemd integration, as it conflicts with UWSM. | ||
</br> | |||
{{File|3=wayland.windowManager.hyprland.systemd.enable = false; | |||
|name=/etc/nixos/home.nix|lang=nix}}}} | |||
=== Nix on Non-NixOS Systems === | === Nix on Non-NixOS Systems === | ||
| Line 138: | Line 141: | ||
=== Using [[Home Manager]] === | === Using [[Home Manager]] === | ||
Home Manager allows for | Home Manager allows for declarative configuration of Hyprland using Nix syntax. Entries with the same key should be written as lists. Variables’ and colors’ names should be quoted. | ||
Find additional options under [https://home-manager.dev/manual/23.11/options.xhtml#opt-wayland.windowManager.hyprland.enable Home Manager - wayland.windowManager.hyprland]. Also, see the [https://wiki.hypr.land/Nix/Hyprland-on-Home-Manager/ Hyprland Page for Home Manager] for more examples. | |||
{{ | {{File|3=wayland.windowManager.hyprland = { | ||
{ | systemd.enable = false; | ||
settings = { | |||
decoration = { | decoration = { | ||
shadow_offset = "0 5"; | shadow_offset = "0 5"; | ||
| Line 149: | Line 154: | ||
"$mod" = "SUPER"; | "$mod" = "SUPER"; | ||
bind = [ | |||
# Execute Rofi with only the SUPER key | |||
"$mod, Super_L, exec, pkill rofi {{!}}{{!}} rofi -show drun" | |||
"$mod, F, exec, librewolf" | |||
"CONTROL ALT, T, exec, wezterm" | |||
]; | |||
# Startup Apps | |||
exec-once = [ | |||
"hyprpanel" | |||
]; | |||
bindm = [ | bindm = [ | ||
| Line 157: | Line 176: | ||
]; | ]; | ||
}; | }; | ||
};|name=/etc/nixos/home.nix|lang=nix}} | |||
} | |||
== Plugin Support == | == Plugin Support == | ||
| Line 166: | Line 183: | ||
The [[Home Manager]] module for Hyprland should be used instead: | The [[Home Manager]] module for Hyprland should be used instead: | ||
{{ | {{File|3={ | ||
{ | |||
wayland.windowManager.hyprland.plugins = [ | wayland.windowManager.hyprland.plugins = [ | ||
pkgs.hyprlandPlugins.PLUGIN_NAME | pkgs.hyprlandPlugins.PLUGIN_NAME | ||
]; | ]; | ||
} | }|name=/etc/nixos/home.nix|lang=nix}} | ||
[https://github.com/hyprwm/hyprland-plugins hyprland-plugins] is a repository of first-party plugins. If you wish to use these plugins it is recommended to use the Hyprland flake instead of the Nixpkgs version, and to use the [[Home Manager]] module for configuration. | |||
[https://github.com/hyprwm/hyprland-plugins hyprland-plugins] is a repository of first-party plugins. If you wish to use these plugins | |||
Add the flake | Add the flake into your flake inputs: | ||
{{file|flake.nix|nix|<nowiki> | {{file|flake.nix|nix|<nowiki> | ||
{ | { | ||
| Line 193: | Line 207: | ||
</nowiki>}} | </nowiki>}} | ||
Then, add the plugin using the hyprland-plugins input: | |||
{{file|/etc/nixos/home.nix or ~/.config/home-manager/home.nix|nix|<nowiki> | {{file|/etc/nixos/home.nix or ~/.config/home-manager/home.nix|nix|<nowiki> | ||