Niri: Difference between revisions

Zimward (talk | contribs)
The gnome desktop portal does get installed by the nixos module already. installing them into system/user path was never correct to begin with too.
m Fixed typo: may unable -> may be unable
 
(9 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{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.
[https://github.com/YaLTeR/niri Niri] is a scrollable-tiling [[Wayland]] compositor.


Line 11: Line 23:
{{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 29: Line 41:
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 41: Line 60:
];
];
|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.


== 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]]