Hyprland: Difference between revisions

Phobos (talk | contribs)
mNo edit summary
Phobos (talk | contribs)
m Updates
 
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 can be found in the project's own [https://wiki.hyprland.org/ wiki].  
[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''': does not rely on wlroots or other external libraries and provides in-house alternatives to common components (screen locking, idle daemon, etc).
* '''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''': uses a live reloading config file in plain-text with useful defaults.
* '''Easy to configure''': Uses a live reloading config file in plain-text with useful defaults.
* '''Dynamic tiling support''': supports both automatic tiling and floating mode with multiple layouts.
* '''Dynamic tiling support''': Supports both automatic tiling and floating mode with multiple layouts.
* '''Socket-based IPC''': allows controlling the compositor at runtime via UNIX socket.
* '''Socket-based IPC''': Allows controlling the compositor at runtime via UNIX socket.
* '''Global shortcuts''': permits setting global keybinds for any application (for apps such as [[OBS Studio]]).
* '''Global shortcuts''': Permits setting global keybinds for any application (for apps such as [[OBS Studio]]).
* '''Window/Workspace Rules''': set special behaviors for certain windows and workspaces.
* '''Window/Workspace Rules''': Set special behaviors for certain windows and workspaces.


== Installation ==
== Installation ==
Line 141: Line 141:


=== Using [[Home Manager]] ===
=== Using [[Home Manager]] ===
Home Manager allows for declarative configuration of Hyprland using Nix syntax.
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.  


{{file|||3={
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.
  wayland.windowManager.hyprland.settings = {
 
{{File|3=wayland.windowManager.hyprland = {
  systemd.enable = false;
  settings = {
     decoration = {
     decoration = {
       shadow_offset = "0 5";
       shadow_offset = "0 5";
Line 151: 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 159: Line 176:
     ];
     ];
   };
   };
  # ...
};|name=/etc/nixos/home.nix|lang=nix}}
}|name=/etc/nixos/home.nix or ~/.config/home-manager/home.nix|lang=nix}}


== Plugin Support ==
== Plugin Support ==
Line 167: Line 183:
The [[Home Manager]] module for Hyprland should be used instead:
The [[Home Manager]] module for Hyprland should be used instead:


{{file|/etc/nixos/home.nix or ~/.config/home-manager/home.nix|nix|<nowiki>
{{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}}
</nowiki>}}


=== hyprland-plugins ===
[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 then it's recommended to use the Hyprland flake instead of the Nixpkgs version as well as using the [[Home Manager]] module.


Add the flake to your flake inputs:
Add the flake into your flake inputs:
{{file|flake.nix|nix|<nowiki>
{{file|flake.nix|nix|<nowiki>
{
{
Line 194: Line 207:
</nowiki>}}
</nowiki>}}


And then add the plugin using the hyprland-plugins input:
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>