Greetd: Difference between revisions

From NixOS Wiki
imported>CrunchyFlakes
m Remove "-c sway" from gtkgreet startup, because that functionality is already provided by specified "greetd/environments" file.
Klinger (talk | contribs)
mNo edit summary
 
Line 59: Line 59:
* Sway: https://github.com/swaywm/sway/wiki#gtk-applications-take-20-seconds-to-start
* Sway: https://github.com/swaywm/sway/wiki#gtk-applications-take-20-seconds-to-start
}}
}}
[[Category:Desktop environment]]

Latest revision as of 20:27, 24 April 2024

greetd is a minimal login manager.

Usage

Using this configuration, greetd will use the greeter gtkgreet, asking for user, password and which session to start as defined in the /etc/greetd/environments file:

/etc/nixos/configuration.nix
{ config, lib, pkgs, ... }:
let
  swayConfig = pkgs.writeText "greetd-sway-config" ''
    # `-l` activates layer-shell mode. Notice that `swaymsg exit` will run after gtkgreet.
    exec "${pkgs.greetd.gtkgreet}/bin/gtkgreet -l; swaymsg exit"
    bindsym Mod4+shift+e exec swaynag \
      -t warning \
      -m 'What do you want to do?' \
      -b 'Poweroff' 'systemctl poweroff' \
      -b 'Reboot' 'systemctl reboot'
  '';
in
{
  services.greetd = {
    enable = true;
    settings = {
      default_session = {
        command = "${pkgs.sway}/bin/sway --config ${swayConfig}";
      };
    };
  };

  environment.etc."greetd/environments".text = ''
    sway
    fish
    bash
    startxfce4
  '';
}

In this minimal example, the Wayland compositor Sway automatically gets executed by the user myuser after successfull boot, no password required:

/etc/nixos/configuration.nix
services.greetd = {
  enable = true;
  settings = rec {
    initial_session = {
      command = "${pkgs.sway}/bin/sway";
      user = "myuser";
    };
    default_session = initial_session;
  };
};

initial_session is executed automatically. If you just define default_session, greetd will ask for a password and execute command with user myuser.

Note:

If you're hosting gtkgreet in a Wayland compositor, there is a known issue, between GTK portals and dbus, of a delay before the greeter appears,. There are a couple known workarounds depending on the compositor you're using: