Skip to content

kennylevinsen/greetd

Repository files navigation

greetd

greetd is a minimal and flexible login manager daemon that makes no assumptions about what you want to launch.

Use gtkgreet to launch sway if you want a fully graphical session, or use agreety to launch a shell if you want a drop-in replacement for agetty(8) and login(1).

If you can run it from your shell in a TTY, greetd can start it. If it can be taught to speak a simple JSON-based IPC protocol, then it can be a greeter.

See the wiki for FAQ, guides for common configurations, and troubleshooting information.

List of known greetd greeters

  • agreety - The simple, text-based greeter living in this repo is a simple example.
  • gtkgreet - The flagship graphical, GTK based greeter (xdg-shell or wlr-layer-shell, to be used with something like sway)
  • qtgreet - Qt-based greeter (using wlr-layer-shell, to be used with something like sway)
  • dlm - Dumb Login Manager (using fbdev)
  • ddlm - Deathowl's dummy login manager (using fbdev)
  • wlgreet - Wayland greeter (using wlr-layer-shell, to be used with something like sway)
  • tuigreet - Console UI greeter (using tui-rs)
  • ReGreet - Clean and customizable GTK4 based greeter (to be used with something like sway)
  • marine_greetdm - A cli greeter, by rustyline and without gui. It can configure enviroment variables for special desktops.
  • greetd-qmlgreet - Qt6 qml greetd (using ext-session-shell, to be used with something like river and sway)
  • Phog - A greetd-compatible greeter for mobile devices like Purism's Librem 5 and Pine64's PinePhone.

Patches expanding the list welcome.

Installation

The below will install greetd, agreety and the default configuration. This looks just like agetty(8) and login(1). See the manpages and the wiki for information on how to do more interesting things.

From packages

Arch Linux

greetd and a few greeters are available in AUR for Arch Linux.

Gentoo

emerge gui-libs/greetd

Manually from source

# Compile greetd and agreety.
cargo build --release

# Put things into place
sudo cp target/release/{greetd,agreety} /usr/local/bin/
sudo cp greetd.service /etc/systemd/system/greetd.service
mkdir /etc/greetd
cp config.toml /etc/greetd/config.toml

# Create the greeter user
sudo useradd -M -G video greeter
sudo chmod -R go+r /etc/greetd/

# Look in the configuration file `/etc/greetd/config.toml` and edit as appropriate.
# When done, enable and start greetd
systemctl enable --now greetd

How do I write my own greeter?

All you need is an application that can speak the greetd IPC protocol, which is documented in greetd-ipc(7). See gtkgreet or agreety for inspiration.

How to discuss

Go to #kennylevinsen @ irc.libera.chat to discuss, or use ~kennylevinsen/greetd-devel@lists.sr.ht.