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.
- 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
andsway
)
Patches expanding the list welcome.
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.
greetd and a few greeters are available in AUR for Arch Linux.
emerge gui-libs/greetd
# 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
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.
Go to #kennylevinsen @ irc.libera.chat to discuss, or use ~kennylevinsen/[email protected].