Niri: Difference between revisions

34j (talk | contribs)
Add more Additional Setup
Axka (talk | contribs)
m Typo + keyboard shortcut with <kbd> element
 
(11 intermediate revisions by 5 users not shown)
Line 1: Line 1:
[https://github.com/YaLTeR/niri Niri] is a scrollable tiling [[Wayland]] compositor.
{{infobox application
  |name=Niri
  |type=Wayland compositor
  |initialRelease=2023-11-26
  |status=Active
  |license=GNU General Public License v3.0 only
  |os=Linux, FreeBSD
  |programmingLanguage=Rust, GLSL
  |github=YaLTeR/niri
  |documentation=[https://github.com/YaLTeR/niri/wiki Official wiki], [https://github.com/sodiboo/niri-flake/blob/main/docs.md niri-flake]
}}
 
[https://github.com/YaLTeR/niri Niri] is a scrollable-tiling [[Wayland]] compositor.


== Installation ==
== Installation ==
Line 9: Line 21:
}}
}}


{{Note|Niri can be enabled <strong>without installing custom flake</strong> such as [https://github.com/sodiboo/niri-flake niri-flake]. It is only necessary if you want to use a very recent version of Niri or if you want to write configurations in the Nix language, although as of 2025 this repository is listed near the top in search engines.}}
{{Note|Niri can be enabled <strong>without installing a custom flake</strong> such as [https://github.com/sodiboo/niri-flake niri-flake]. {{ic|niri-flake}} is only necessary if you want to use a very recent version of Niri or if you want to write configurations in the Nix language, although as of 2025 this repository is listed near the top in search engines.}}


{{Warning|Without [[#Configuration]] or [[#Additional Setup]], or in other words after fresh installation, you may unable to launch apps because of missing Alacricity and fuzzel. Press {{ic|Super + Shift + E}} to exit Niri and proceed to one of them.}}
{{Warning|Without [[#Configuration]] or [[#Additional Setup]], or in other words after fresh installation, you may unable to launch apps because of missing Alacritty and fuzzel. Press <kbd>Super</kbd>+<kbd>Shift</kbd>+<kbd>E</kbd> to exit Niri and proceed to one of them.}}


== Configuration ==
== Configuration ==
Line 27: Line 39:
== Additional Setup ==
== Additional Setup ==


As described in [https://github.com/YaLTeR/niri/wiki/Example-systemd-Setup Example systemd Setup (Niri wiki)], you might want to set up some additional services including [[Swayidle]], [[Swaylock]], [[Waybar]] abd [[Secret Service]] as follows to complement the functionality of a regular window manager. Some of the these settings are also required to enable all the features of [https://github.com/YaLTeR/niri/blob/main/resources/default-config.kdl the default configuration file].
As described in [https://github.com/YaLTeR/niri/wiki/Example-systemd-Setup Example systemd Setup (Niri wiki)], you might want to set up some additional services including [[Swayidle]], [[Swaylock]], [[Waybar]], [[Polkit]] and [[Secret Service]] as follows to complement the functionality of a regular window manager. Some of the these settings are also required to enable all the features of [https://github.com/YaLTeR/niri/blob/main/resources/default-config.kdl the default configuration file].
 
{{file|3=
security.polkit.enable = true; # polkit
services.gnome.gnome-keyring.enable = true; # secret service
security.pam.services.swaylock = {};


{{file|~/.config/home-manager/home.nix|nix|3=
programs.waybar.enable = true; # top bar
environment.systemPackages = with pkgs; [ alacritty fuzzel swaylock mako swayidle ]
|name=/etc/nixos/configuration.nix|lang=nix}}Or using [[Home Manager]]:{{file|~/.config/home-manager/home.nix|nix|3=
programs.alacritty.enable = true; # Super+T in the default setting (terminal)
programs.alacritty.enable = true; # Super+T in the default setting (terminal)
programs.fuzzel.enable = true; # Super+D in the default setting (app launcher)
programs.fuzzel.enable = true; # Super+D in the default setting (app launcher)
programs.swaylock.enable = true; # Super+Alt+L in the default setting (screen locker)
programs.swaylock.enable = true; # Super+Alt+L in the default setting (screen locker)
programs.mako.enable = true; # notification daemon
programs.waybar.enable = true; # launch on startup in the default setting (bar)
programs.waybar.enable = true; # launch on startup in the default setting (bar)
services.mako.enable = true; # notification daemon
services.swayidle.enable = true; # idle management daemon
services.swayidle.enable = true; # idle management daemon
services.polkit-gnome.enable = true; # polkit
home.packages = with pkgs; [
home.packages = with pkgs; [
  xdg-desktop-portal-gnome
   swaybg # wallpaper
   swaybg # wallpaper
];
];
}}
|name=~/.config/home-manager/home.nix|lang=nix}}
 
== Troubleshooting ==
 
=== IME not working on Electron apps ===
 
There is a general workaround to set {{ic|NIXOS_OZONE_WL}} as described in [[Wayland#Electron_and_Chromium]]:


{{file|/etc/nixos/configuration.nix|nix|3=
{{file|/etc/nixos/configuration.nix|nix|3=
services.gnome.gnome-keyring.enable = true; # secret service
environment.sessionVariables.NIXOS_OZONE_WL = "1";
security.pam.services.swaylock = {};
}}
}}
However, since Niri does not support text-input-v1, sometimes enabling text-input-v3 by manually adding {{ic|<nowiki>--wayland-text-input-version=3</nowiki>}} flag is necessary for IME to work:
{{code|<nowiki>slack --wayland-text-input-version=3</nowiki>}}
Alternatively, if the package supports {{ic|commandLineArgs}}, the following may be used instead:
{{code|<nowiki>(pkgs.vscode.override {
  commandLineArgs = [
    "--wayland-text-input-version=3"
  ];
});</nowiki>}}


== See Also ==
== See Also ==


* [[Wayland]]
* [[Sway]]
* [[Sway]]
* [[Wallpapers for Wayland]]
* [[Wallpapers for Wayland]]
* https://github.com/sodiboo/niri-flake#additional-notes
* [https://github.com/sodiboo/niri-flake/ niri-flake]


[[Category:Window managers]]
[[Category:Window managers]]
[[Category:Applications]]
[[Category:Applications]]