Hyprland: Difference between revisions
imported>Niahex m Clarification of requires / add links to list of modules |
m Proper way to write in XDG config directory |
||
(15 intermediate revisions by 9 users not shown) | |||
Line 1: | Line 1: | ||
{{Expansion|Incomplete (reason: (Adding incrementally through testing and verification.))}} | {{Expansion|Incomplete (reason: (Adding incrementally through testing and verification.))}} | ||
{{Warning|At the moment, [https://wiki.hyprland.org/Nix/ upstream] provides a better documentation regarding installation and configuration. Please refer to it instead.}} | |||
[https://hyprland.org/ Hyprland] is a wlroots-based tiling [[Wayland]] compositor written in C++. Noteworthy features of Hyprland include dynamic tiling, tabbed windows, a clean and readable C++ code-base, and a custom renderer that provides window animations, rounded corners, and Dual-Kawase Blur on transparent windows. General usage and configuration is thoroughly documented at [https://wiki.hyprland.org/ Hyprland wiki]. | [https://hyprland.org/ Hyprland] is a wlroots-based tiling [[Wayland]] compositor written in C++. Noteworthy features of Hyprland include dynamic tiling, tabbed windows, a clean and readable C++ code-base, and a custom renderer that provides window animations, rounded corners, and Dual-Kawase Blur on transparent windows. General usage and configuration is thoroughly documented at [https://wiki.hyprland.org/ Hyprland wiki]. | ||
== Installation == | == Installation == | ||
{{Note|The respective modules should already take care of the majority of mentioned items in this list. }} | |||
To run Hyprland properly you need to enables critical components, such as: | |||
* [[polkit]] | * [[polkit]] | ||
* | * xdg-desktop-portal-hyprland | ||
* graphics drivers : [[Nvidia]], [[ | * graphics drivers : [[Nvidia]], [[AMD_GPU|AMD]] | ||
* [[fonts]] | * [[fonts]] | ||
* [[dconf]] | * [[dconf]] | ||
* [[xwayland]] | * [[xwayland]] | ||
If you use [[gdm]] or [[ldm]]: add a proper [[Desktop Entry]] to your | * [[display manager]] | ||
If you use [[gdm]] or [[ldm]]: add a proper [[Desktop Entry]] to your [[display manager]]. | |||
=== Using [[NixOS]] === | === Using [[NixOS]] === | ||
{{file|/etc/nixos/ | {{file|/etc/nixos/configuration.nix|nix|<nowiki> | ||
{pkgs, ...}: | {pkgs, ...}: | ||
{ | { | ||
Line 22: | Line 25: | ||
enable = true; | enable = true; | ||
# Whether to enable XWayland | # Whether to enable XWayland | ||
xwayland | xwayland.enable = true; | ||
}; | }; | ||
# ... | |||
} | } | ||
</nowiki>}} | </nowiki>}} | ||
Line 34: | Line 34: | ||
=== Using [[Home Manager]] === | === Using [[Home Manager]] === | ||
{{file|/etc/nixos/ | {{file|/etc/nixos/home.nix or ~/.config/home-manager/home.nix|nix|<nowiki> | ||
{config, pkgs, ... }: | {config, pkgs, ... }: | ||
{ | { | ||
Line 48: | Line 48: | ||
# Whether to enable hyprland-session.target on hyprland startup | # Whether to enable hyprland-session.target on hyprland startup | ||
systemd.enable = true; | systemd.enable = true; | ||
}; | |||
# ... | |||
} | |||
</nowiki>}} | |||
[https://mipmip.github.io/home-manager-option-search/?query=hyprland See all modules for Home Manager] | |||
=== Using [[Flake]] === | |||
== Configuration == | |||
=== Using [[Home Manager]] === | |||
You have two options for configuring the settings: | |||
1. Compose the configuration using Nix syntax: | |||
{{file|/etc/nixos/home.nix or ~/.config/home-manager/home.nix|nix|<nowiki> | |||
{config, pkgs, ... }: | |||
{ | |||
wayland.windowManager.hyprland.settings = { | |||
decoration = { | |||
shadow_offset = "0 5"; | |||
"col.shadow" = "rgba(00000099)"; | |||
}; | |||
"$mod" = "SUPER"; | |||
bindm = [ | |||
# mouse movements | |||
"$mod, mouse:272, movewindow" | |||
"$mod, mouse:273, resizewindow" | |||
"$mod ALT, mouse:272, resizewindow" | |||
]; | ]; | ||
}; | |||
# ... | |||
} | |||
</nowiki>}} | |||
2. You can also use Hyprland's syntax to write the file like this: : | |||
{{file|/etc/nixos/home.nix or ~/.config/home-manager/home.nix|nix|<nowiki> | |||
{config, pkgs, ... }: | |||
{ | |||
xdg.configFile."hypr/hyprland.conf".text = '' | |||
decoration { | |||
shadow_offset = 0 5 | |||
col.shadow = rgba(00000099) | |||
} | |||
$mod = SUPER | |||
bindm = $mod, mouse:272, movewindow | |||
bindm = $mod, mouse:273, resizewindow | |||
bindm = $mod ALT, mouse:272, resizewindow | |||
''; | |||
# ... | |||
} | |||
</nowiki>}} | |||
== Plugin == | |||
You need use flake for her, example: | |||
put this in your flake.nix | |||
{{file|/etc/nixos/flake.nix or ~/.config/home-manager/flake.nix|nix|<nowiki> | |||
{ | |||
" | inputs = { | ||
" | # ... | ||
hyprland.url = "github:hyprwm/Hyprland"; | |||
plugin_name = { | |||
url = "github:maintener/plugin_name"; | |||
inputs.hyprland.follows = "hyprland"; # IMPORTANT | |||
}; | }; | ||
}; | }; | ||
} | } | ||
</nowiki>}} | </nowiki>}} | ||
then, inside your home-manager module: | |||
{{file|/etc/nixos/flake.nix or ~/.config/home-manager/flake.nix|nix|<nowiki> | |||
{ | |||
wayland.windowManager.hyprland = { | |||
plugins = [ | |||
inputs.plugin_name.packages.${pkgs.system}.default | |||
]; | |||
}; | |||
} | |||
</nowiki>}} | |||
[https://github.com/hyprland-community/awesome-hyprland#plugins List of plugins] | |||
== Usage == | |||
== Troubleshooting == | == Troubleshooting == | ||
=== Swaylock === | |||
If swaylock cannot be unlocked with the correct password: | |||
<code> | |||
security.pam.services.swaylock = {}; | |||
</code> | |||
== See also == | |||
* [https://hyprland.org/ Hyprland Website] | |||
* [https://wiki.hyprland.org/ The official documentation] | |||
* [https://github.com/hyprwm/Hyprland/ Hyprland Github Page] | |||
* [https://github.com/hyprland-community/awesome-hyprland Community-maintained list of tools, plugins and extensions] | |||
[[Category:Window managers]] | [[Category:Window managers]] | ||
[[Category:Applications]] | [[Category:Applications]] |
Latest revision as of 08:45, 30 August 2024
Hyprland is a wlroots-based tiling Wayland compositor written in C++. Noteworthy features of Hyprland include dynamic tiling, tabbed windows, a clean and readable C++ code-base, and a custom renderer that provides window animations, rounded corners, and Dual-Kawase Blur on transparent windows. General usage and configuration is thoroughly documented at Hyprland wiki.
Installation
To run Hyprland properly you need to enables critical components, such as:
- polkit
- xdg-desktop-portal-hyprland
- graphics drivers : Nvidia, AMD
- fonts
- dconf
- xwayland
- display manager
If you use gdm or ldm: add a proper Desktop Entry to your display manager.
Using NixOS
/etc/nixos/configuration.nix
{pkgs, ...}:
{
programs.hyprland = {
# Install the packages from nixpkgs
enable = true;
# Whether to enable XWayland
xwayland.enable = true;
};
# ...
}
Using Home Manager
/etc/nixos/home.nix or ~/.config/home-manager/home.nix
{config, pkgs, ... }:
{
wayland.windowManager.hyprland = {
# Whether to enable Hyprland wayland compositor
enable = true;
# The hyprland package to use
package = pkgs.hyprland;
# Whether to enable XWayland
xwayland.enable = true;
# Optional
# Whether to enable hyprland-session.target on hyprland startup
systemd.enable = true;
};
# ...
}
See all modules for Home Manager
Using Flake
Configuration
Using Home Manager
You have two options for configuring the settings:
1. Compose the configuration using Nix syntax:
/etc/nixos/home.nix or ~/.config/home-manager/home.nix
{config, pkgs, ... }:
{
wayland.windowManager.hyprland.settings = {
decoration = {
shadow_offset = "0 5";
"col.shadow" = "rgba(00000099)";
};
"$mod" = "SUPER";
bindm = [
# mouse movements
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
"$mod ALT, mouse:272, resizewindow"
];
};
# ...
}
2. You can also use Hyprland's syntax to write the file like this: :
/etc/nixos/home.nix or ~/.config/home-manager/home.nix
{config, pkgs, ... }:
{
xdg.configFile."hypr/hyprland.conf".text = ''
decoration {
shadow_offset = 0 5
col.shadow = rgba(00000099)
}
$mod = SUPER
bindm = $mod, mouse:272, movewindow
bindm = $mod, mouse:273, resizewindow
bindm = $mod ALT, mouse:272, resizewindow
'';
# ...
}
Plugin
You need use flake for her, example:
put this in your flake.nix
/etc/nixos/flake.nix or ~/.config/home-manager/flake.nix
{
inputs = {
# ...
hyprland.url = "github:hyprwm/Hyprland";
plugin_name = {
url = "github:maintener/plugin_name";
inputs.hyprland.follows = "hyprland"; # IMPORTANT
};
};
}
then, inside your home-manager module:
/etc/nixos/flake.nix or ~/.config/home-manager/flake.nix
{
wayland.windowManager.hyprland = {
plugins = [
inputs.plugin_name.packages.${pkgs.system}.default
];
};
}
Usage
Troubleshooting
Swaylock
If swaylock cannot be unlocked with the correct password:
security.pam.services.swaylock = {};