Graphical console greeter for greetd.
Usage: tuigreet [OPTIONS]
Options:
-h, --help show this usage information
-v, --version print version information
-c, --cmd COMMAND command to run
-s, --sessions DIRS colon-separated list of session paths
-w, --width WIDTH width of the main prompt (default: 80)
-i, --issue show the host's issue file
-g, --greeting GREETING
show custom text above login prompt
-t, --time display the current date and time
-r, --remember remember last logged-in username
--remember-session
remember last selected session
--asterisks display asterisks when a secret is typed
--asterisks-char CHAR
character to be used to redact secrets (default: *)
--window-padding PADDING
padding inside the terminal area (default: 0)
--container-padding PADDING
padding inside the main prompt container (default: 1)
--prompt-padding PADDING
padding between prompt rows (default: 1)
The default configuration tends to be as minimal as possible, visually speaking, only showing the authentication prompts and some minor information in the status bar. You may print your system's /etc/issue
at the top of the prompt with --issue
and the current date and time with --time
. You may include a custom one-line greeting message instead of /etc/issue
with --greeting
.
The initial prompt container will be 80 column wide. You may change this with --width
in case you need more space (for example, to account for large PAM challenge messages). Please refer to usage information (--help
) for more customizaton options. Various padding settings are availble through the *-padding
options.
You can instruct tuigreet
to remember the last username that successfully opened a session with the --remember
option (that way, the username field will be pre-filled). Similarly, the command and session configuration can be retained between runs with the --remember-session
option (when using this, the --cmd
value is overridden by manual selections).
You may change the command that will be executed after opening a session by hitting F2
and amending the command. Alternatively, you can list the system-declared sessions (or custom ones) by hitting F3
. Power options are available through F12
.
Building from source requires an installation of Rust's stable
toolchain, including cargo
.
$ git clone https://github.com/apognu/tuigreet && cd tuigreet
$ cargo build --release
# mv target/release/tuigreet /usr/local/bin/tuigreet
On ArchLinux, tuigreet
is available on AUR and is installable through your preferred AUR helper:
$ yay -S greetd-tuigreet
Two more distributions are available: greetd-tuigreet-bin
is the precompiled release for the latest tagged release of tuigreet
and greetd-tuigreet-git
is a rolling release always following the master
branch of this repository.
On Gentoo, tuigreet
is available as a package gui-apps/tuigreet
:
$ emerge --ask --verbose gui-apps/tuigreet
On NixOS greetd
and tuigreet
both available via <nixpkgs>
main repository.
Please refer to the snippet below for the minimal tuigreet
configuration:
{ pkgs, lib, ... }:
{
services.greetd = {
enable = true;
settings = {
default_session = {
command = "${lib.makeBinPath [pkgs.greetd.tuigreet] }/tuigreet --time --cmd sway";
user = "greeter";
};
};
};
}
Pre-built binaries of tuigreet
for several architectures can be found in the releases section of this repository. The tip prerelease is continuously built and kept in sync with the master
branch.
Edit /etc/greetd/config.toml
and set the command
setting to use tuigreet
:
[terminal]
vt = 1
[default_session]
command = "tuigreet --cmd sway"
user = "greeter"
Please refer to greetd's wiki for more information on setting up greetd
.
The available sessions are fetched from desktop
files in /usr/share/xsessions
and /usr/share/wayland-sessions
. If you want to provide custom directories, you can set the --sessions
arguments with a colon-separated list of directories for tuigreet
to fetch session definitions some other place.
greetd
only accepts environment-less commands to be used to start a session. Therefore, if your desktop environment requires either arguments or environment variables, you will need to create a wrapper script and refer to it in an appropriate desktop file.
For example, to run X11 Gnome, you may need to start it through startx
and configure your ~/.xinitrc
(or an external xinitrc
with a wrapper script):
exec gnome-session
To run Wayland Gnome, you would need to create a wrapper script akin to the following:
XDG_SESSION_TYPE=wayland dbus-run-session gnome-session
Then refer to your wrapper script in a custom desktop file (in a directory declared with the -s/--sessions
option):
Name=Wayland Gnome
Exec=/path/to/my/wrapper.sh