Go to file
Colin 208cd4a687 call pam_end from within the child session, not the parent
this allows modules like pam_cap to configure the capability bits of the
session process, particularly the ambient capability set.

further details/precedent can be found here:
- <https://github.com/shadow-maint/shadow/pull/408>
- <https://bugzilla.kernel.org/show_bug.cgi?id=214377>
2024-01-30 09:17:13 +00:00
.builds ci: Disable automatic github mirroring 2020-12-22 12:29:48 +01:00
agreety Use strip_prefix to strip prefix 2023-06-23 22:10:09 +02:00
fakegreet Remove references that are implicitly dereferenced 2023-06-23 22:10:09 +02:00
greetd call pam_end from within the child session, not the parent 2024-01-30 09:17:13 +00:00
greetd_ipc Update deprecated SPDX identifier for GPL-3.0-only 2023-06-19 16:01:14 +02:00
inish Remove references that are implicitly dereferenced 2023-06-23 22:10:09 +02:00
man Revert "Remove 'env' from start_session" 2022-08-13 21:48:55 +02:00
.gitignore Initial commit 2019-09-11 17:32:42 +02:00
Cargo.lock cargo update 2023-06-23 22:07:29 +02:00
Cargo.toml Share inish with agreety, kill last rust-ini use 2020-05-15 20:50:12 +02:00
LICENSE license: Add GPLv3 license 2020-01-28 22:28:09 +01:00
README.md Add ReGreet to list of known greetd greeters 2023-02-13 12:13:01 +01:00
config.toml Use /bin/sh instead of $SHELL 2022-02-15 14:55:16 +01:00
greetd.service systemd: Attempt to improve shutdown behavior 2020-01-28 22:57:36 +01:00
rustfmt.toml rustfmt: Change merge_imports to imports_granularity 2021-08-02 22:01:13 +02:00

README.md

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)

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.