A generic greeter daemon
README.md

sessiond-greetd #

sessiond-greetd is a fork of greetd that mainly introduces two changes:

  • uses hyprwire for ipc instead of raw sockets
  • uses nix lang for configuration

Use a graphical greeter to launch hyprland 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, sessiond-greetd can start it. If it can be taught to speak hyprwire IPC protocol, then it can be a greeter.

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

List of known sessiond-greetd greeters #

  • agreety - The simple, text-based greeter living in this repo is a simple example.

Patches expanding the list welcome.

Installation #

The below will install sessiond-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 #

NixOs #

TODO

Manually from source #

# Compile sessiond-greetd and agreety.
cargo build --release

# Put things into place
sudo cp target/release/{sessiond-greetd,agreety} /usr/local/bin/
sudo cp sessiond-greetd.service /etc/systemd/system/sessiond-greetd.service
install -D -m 0644 config.nix /etc/sessiond-greetd/default.nix

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

# Look in the configuration file `/etc/sessiond-greetd/default.nix` and edit camelCase keys as appropriate.
# When done, enable and start sessiond-greetd
systemctl enable --now sessiond-greetd

How do I write my own greeter? #

All you need is an application that can speak the Hyprwire IPC protocol. The protocol XML can be found at ./protocols/sessiond_greetd_core_v1.xml.

The protocols/ specifications are intended to be MIT-licensed so they can be reused by greeters and external clients more easily, while the sessiond-greetd project itself remains GPLv3 under the repository top-level license.