Niri: Difference between revisions

Axka (talk | contribs)
Add infobox
m Fix File language
 
(14 intermediate revisions by 10 users not shown)
Line 1: Line 1:
{{infobox application
{{infobox application
  |name=Niri
| name = Niri
  |type=Wayland compositor
| type = Wayland compositor
  |initialRelease=2023-11-26
| initialRelease = 2023-11-26
  |status=Active
| status = Active
  |license=GNU General Public License v3.0 only
| license = GNU General Public License v3.0 only
  |os=Linux, FreeBSD
| os = Linux, FreeBSD
  |programmingLanguage=Rust, GLSL
| programmingLanguage = Rust, GLSL
  |github=YaLTeR/niri
| github = YaLTeR/niri
  |documentation=[https://github.com/YaLTeR/niri/wiki Official wiki], [https://github.com/sodiboo/niri-flake/blob/main/docs.md niri-flake]
| documentation = [https://yalter.github.io/niri/ Official wiki], [https://github.com/sodiboo/niri-flake/blob/main/docs.md niri-flake]
| image = Niri-icon.svg
| bugTracker = https://github.com/YaLTeR/niri/issues
| latestRelease = 25.11; 29 Nov 2025
}}
}}


Line 23: Line 26:
{{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.}}
{{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 be 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 35: Line 38:
You might want to start from [https://github.com/YaLTeR/niri/blob/main/resources/default-config.kdl the default configuration file] described at [https://github.com/YaLTeR/niri/wiki/Getting-Started#main-default-hotkeys].
You might want to start from [https://github.com/YaLTeR/niri/blob/main/resources/default-config.kdl the default configuration file] described at [https://github.com/YaLTeR/niri/wiki/Getting-Started#main-default-hotkeys].


See [https://github.com/YaLTeR/niri/wiki the wiki] for configuration options for Niri.
See [https://yalter.github.io/niri/ the wiki] for configuration options for Niri.


== Additional Setup ==
== Additional Setup ==
Line 41: Line 44:
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].
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|~/.config/home-manager/home.nix|nix|3=
{{file|3=
security.polkit.enable = true; # polkit
services.gnome.gnome-keyring.enable = true; # secret service
security.pam.services.swaylock = {};
 
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)
Line 53: Line 63:
];
];
|name=~/.config/home-manager/home.nix|lang=nix}}
|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=
security.polkit.enable = true; # polkit
environment.sessionVariables.NIXOS_OZONE_WL = "1";
services.gnome.gnome-keyring.enable = true; # secret service
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>}}
=== XWayland apps not working ===
There is a optional dependency for Niri which is highly recommended to install (you can read [https://github.com/YaLTeR/niri/wiki/Xwayland this] article to learn more about this)
{{File|3=environment.systemPackages = with pkgs; [
    xwayland-satellite # xwayland support
];|name=/etc/nixos/configuration.nix|lang=nix}}
Or using [[Home Manager]]
{{File|3=home.packages = with pkgs; [
  xwayland-satellite # xwayland support
];|name=~/.config/home-manager/home.nix|lang=nix}}
After you installed {{ic|xwayland-satellite}} Niri will integrate it out of the box and all of your XWayland apps will function properly.
=== File picker not working ===
If you are using <code>xdg-desktop-portal-gnome</code>, it will attempt to use Nautilus as the file picker, which will fail if Nautilus is not installed.
To work around this problem, you can force usage of the gtk or kde portals for file picker instead:
{{File|3=xdg.portal.config.niri = {
  "org.freedesktop.impl.portal.FileChooser" = [ "gtk" ]; # or "kde"
};|name=/etc/nixos/configuration.nix|lang=nix}}


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


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


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