EMPTTY(1)

๐Ÿ“ฆ
version 0.16.1 ยท 3 versions
, in alpine 3.24, arch rolling

๐Ÿ’– EMPTTY(1) โ€” the emptty era ๐Ÿ’–

โœจ NAME โœจ

emptty โ€” dead simple CLI Display Manager on TTY. That's literally the whole name, bestie. ๐Ÿ’…

๐Ÿฆ‹ SYNOPSIS ๐Ÿฆ‹

emptty [-v] [--version] [-d] [--daemon] [-c PATH] [--config PATH] [-i]
[--ignore-config] [-t TTY] [--tty TTY] [-u defaultUser] [--default-user
defaultUser] [-a [session]] [--autologin [session]]

๐Ÿ’… DESCRIPTION ๐Ÿ’…

Okay so emptty is a simple CLI Display Manager, and it's giving main character energy on your TTY. It lets you select a DE/WM after login, use predefined config, or do autologin if the selected user is part of the nopasswdlogin group. Periodt. ๐ŸŒธ

๐ŸŒŸ OPTIONS ๐ŸŒŸ

  • -v, --version โ€” displays the version of the program. Iconic little flex. ๐Ÿ’–
  • -d, --daemon โ€” starts emptty as a daemon, which does not require agetty. ๐Ÿฆ‹
  • -c, --config PATH โ€” loads configuration from the specified path. ๐ŸŽ€
  • -C, --print-config โ€” only prints the loaded configuration and exits. No extra drama. โœจ
  • -i, --ignore-config โ€” skips loading configuration from file and loads only argument configuration. ๐Ÿซถ
  • -t, --tty TTY โ€” overrides the loaded configuration by setting the defined TTY. May be specified as a number (e.g. "7") or a TTY name (e.g. "tty7"). ๐Ÿ’œ
  • -u, --default-user defaultUser โ€” overrides the loaded configuration by setting the defined defaultUser. ๐ŸŒˆ
  • -a, --autologin [session] โ€” overrides the loaded configuration by enabling autologin. If session is defined, it overrides the autologin session. ๐Ÿ”ฅ

๐ŸŽ€ CONFIG ๐ŸŽ€

The config file lives at /etc/emptty/conf, and these are the keys that matter:

  • TTY_NUMBER โ€” TTY where emptty will start. ๐Ÿ–ฅ๏ธ
  • SWITCH_TTY โ€” enables switching to the defined TTY number. Default is true. ๐Ÿ”
  • PRINT_ISSUE โ€” enables printing of /etc/issue in daemon mode. ๐Ÿ“œ
  • PRINT_MOTD โ€” enables printing of default motd, static motd or dynamic motd. ๐Ÿ’Œ
  • DEFAULT_ENV โ€” defines the default environment used for starting undefined sessions (e.g. from emptty file). Possible values are "xorg" and "wayland". The default of the default is xorg. ๐ŸŒฑ
  • DEFAULT_USER โ€” preselected user. If AUTOLOGIN is enabled, this user is logged in. ๐Ÿ‘ค
  • DEFAULT_SESSION โ€” preselected desktop session, if the user does not use the emptty file. Has lower priority than AUTOLOGIN_SESSION. ๐ŸŽฏ
  • DEFAULT_SESSION_ENV โ€” optional environment of the preselected desktop session, if the user does not use the emptty file. Possible values are "xorg" and "wayland". ๐Ÿงš
  • AUTOLOGIN โ€” enables autologin if DEFAULT_USER is defined. Possible values are "true" or "false". Default value is false.
NOTE: to enable autologin, DEFAULT_USER must be in group nopasswdlogin; otherwise the user will NOT be authorized. ๐Ÿ’€
  • AUTOLOGIN_SESSION โ€” the default session used if autologin is enabled. If the session is not found in the list of session, it proceeds to manual selection. ๐ŸŒ€
  • AUTOLOGIN_SESSION_ENV โ€” optional environment of the autologin desktop session. Possible values are "xorg" and "wayland". ๐ŸŒธ
  • AUTOLOGIN_MAX_RETRY โ€” if the session does not start correctly in the specified period, the number of retries in a short period is kept so it can eventually stop the infinite loop of restarts. -1 is for infinite retries, 0 is for no retry. Default value is 2. ๐Ÿ˜ฎโ€๐Ÿ’จ
  • AUTOLOGIN_RETRY_PERIOD โ€” time period in seconds that is used for checking session login retries. Default value is 2. โฑ๏ธ
  • LANG โ€” defines locale for all users. Default value is "en_US.UTF-8". ๐ŸŒ
  • DBUS_LAUNCH โ€” starts dbus-launch before the desktop command. After the end of the session, dbus-daemon is interrupted. Default value is true. If the user config is handled as a script (does not contain Exec option), this config is overridden to false. ๐ŸšŒ
  • ALWAYS_DBUS_LAUNCH โ€” starts dbus-launch before the desktop command in any case; the DBUS_LAUNCH value is ignored. It also starts even if XINITRC_LAUNCH is set to true. After the end of the session, dbus-daemon is interrupted. Default value is false. ๐Ÿ’ซ
  • XINITRC_LAUNCH โ€” starts an Xorg desktop by calling the ~/.xinitrc script with session exec as an argument. If it is true, the file exists, and the selected WM/DE is an Xorg session, it overrides DBUS_LAUNCH. If the user config is handled as a script (does not contain Exec option), this config is overridden to false. ๐Ÿช„
  • VERTICAL_SELECTION โ€” prints available WM/DE each on a new line instead of printing on a single line. ๐Ÿ“‹
  • INDENT_SELECTION โ€” horizontal offset for vertical selection, useful for centering the menu on screen. ๐ŸŽฏ
  • LOGGING โ€” defines how logging is handled. Possible values are "rotate", "appending" or "disabled". Default value is "rotate". ๐Ÿชต
  • LOGGING_FILE โ€” overrides the path of the log file. Default value is /var/log/emptty/[TTY_NUMBER].log.
NOTE: it expects the existence of directories to the defined logging file. ๐Ÿ“
  • XORG_ARGS โ€” arguments passed to the Xorg server. ๐Ÿ–ฅ๏ธ
  • DYNAMIC_MOTD โ€” allows using a dynamic motd script to generate a custom MOTD. Possible values are "true" or "false". Default value is false.
NOTE: be sure that the dynamic motd has correct content and permissions (e.g. 744). The script is started as default user; in daemon mode it means root. ๐Ÿซถ
  • DYNAMIC_MOTD_PATH โ€” allows overriding the default path to the dynamic motd. Default value is "/etc/emptty/motd-gen.sh". ๐ŸŒŸ
  • MOTD_PATH โ€” allows overriding the default path to the static motd. Default value is "/etc/emptty/motd". ๐Ÿ’Œ
  • FG_COLOR โ€” foreground color, available only in daemon mode. The list of colors is listed below. ๐ŸŽจ
  • BG_COLOR โ€” background color, available only in daemon mode. The list of colors is listed below. ๐Ÿ–Œ๏ธ
  • DISPLAY_START_SCRIPT โ€” script started before Display (Xorg/Wayland) starts.
NOTE: the script is started as default user; in daemon mode it means root. ๐Ÿงจ
  • DISPLAY_STOP_SCRIPT โ€” script started after Display (Xorg/Wayland) stops.
NOTE: the script is started as default user; in daemon mode it means root. ๐Ÿงจ
  • ENABLE_NUMLOCK โ€” enables numlock in daemon mode. Possible values are "true" or "false". Default value is false. ๐Ÿ”ข
  • SESSION_ERROR_LOGGING โ€” defines how logging of session errors is handled. Possible values are "rotate", "appending" or "disabled". Default value is "disabled". ๐Ÿšจ
  • SESSION_ERROR_LOGGING_FILE โ€” overrides the path of the session errors log file. Default value is /var/log/emptty/session-errors.[TTY_NUMBER].log.
NOTE: it expects the existence of directories to the defined logging file. ๐Ÿ“
  • NO_XDG_FALLBACK โ€” disallows setting fallback values for all XDG environmental variables and leaves it on Login Controls. Possible values are "true" or "false". Default value is false.
NOTE: be aware that setting it to "true" could lead to unexpected behaviour. ๐Ÿ˜ญ
  • DEFAULT_XAUTHORITY โ€” if set true, it will not use the .emptty-xauth file, but the standard ~/.Xauthority file. This allows handling xauth issues. Possible values are "true" or "false". Default value is false. ๐Ÿ”
  • ROOTLESS_XORG โ€” if set true, Xorg will be started as rootless, if the system allows and emptty is running in daemon mode. Possible values are "true" or "false". Default value is false. ๐Ÿ•Š๏ธ
  • IDENTIFY_ENVS โ€” if set true, environmental groups are printed to differ Xorg/Wayland/Custom/UserCustom desktops. Possible values are "true" or "false". Default value is false. ๐Ÿท๏ธ
  • HIDE_ENTER_LOGIN โ€” if set true, "hostname login:" is not displayed. Possible values are "true" or "false". Default value is false. ๐Ÿ™ˆ
  • HIDE_ENTER_PASSWORD โ€” if set true, "Password:" is not displayed. Possible values are "true" or "false". Default value is false. ๐Ÿ™ˆ
  • XORG_SESSIONS_PATH โ€” path to the directory where Xorg sessions' desktop files are stored. Default value is "/usr/share/xsessions/". ๐Ÿ“‚
  • WAYLAND_SESSIONS_PATH โ€” path to the directory where Wayland sessions' desktop files are stored. Default value is "/usr/share/wayland-sessions/". ๐Ÿ“‚
  • SELECT_LAST_USER โ€” enables funtionality of saving the last successfully logged in user for next login. Possible values are "false", "per-tty" or "global". Default value is false. ๐Ÿซถ
  • AUTO_SELECTION โ€” if set to "true" and only one desktop is available, it automatically selects that desktop. Possible values are "true" or "false". Default value is false. ๐ŸŽฏ
  • ALLOW_COMMANDS โ€” if set to "true" and no default user is selected, it allows entering commands into the login input. Possible values are "true" or "false". Default value is true. โŒจ๏ธ
  • CMD_POWEROFF โ€” command to be used to perform poweroff. Default value is "poweroff". ๐Ÿ”Œ
  • CMD_REBOOT โ€” command to be used to perform reboot. Default value is "reboot". ๐Ÿ”„
  • CMD_SUSPEND โ€” command to be used to perform suspend. Default value is blank, but it tries to use "systemctl suspend", "loginctl suspend" or "zzz". ๐Ÿ˜ด
  • WAIT_EXIT_TIMEOUT โ€” timeout in seconds before emptty automatically exits. If the value is 0 or lower, there is no timeout. Default value is -1. โณ

๐Ÿ”ฅ COMMANDS ๐Ÿ”ฅ

If commands are allowed and no default user is defined, you can use commands in the login input. All of these commands need to start with a colon ":". Escape characters are ignored to prevent issues with muscle memory from VI. ๐Ÿ˜…

  • :help, :? โ€” prints available commands. ๐Ÿ†˜
  • :poweroff, :shutdown โ€” processess the poweroff command. ๐Ÿ”Œ
  • :reboot โ€” processes the reboot command. ๐Ÿ”„
  • :suspend, :zzz โ€” processes the suspend command. ๐Ÿ˜ด

๐ŸŒˆ DYNAMIC MOTD ๐ŸŒˆ

Optional file stored by default as /etc/emptty/motd-gen.sh. Could be overridden. ๐Ÿงš

If DYNAMIC_MOTD is set to true, this file exists, and is executable for its owner, the result is printed as your own MOTD. Be very careful with this script! ๐Ÿซถ

โญ CUSTOM MOTD โญ

Optional file stored by default as /etc/emptty/motd. Could be overridden. ๐ŸŽ€

It's a custom file that prints your own MOTD. Reading this file supports colors (e.g. \x1b[31m or \033[32m). ๐ŸŒˆ

๐Ÿ’– USER CONFIG ๐Ÿ’–

Okay bestie, this is your personal little config corner. Itโ€™s optional, and it lives at ${HOME}/.config/emptty or ${HOME}/.emptty.

Heads up: the file stored as ${HOME}/.config/emptty has higher priority when loading. So if both exist, thatโ€™s the main character.

  • Name โ€” optional name to be used as the Session Name. Cute label energy.
  • Exec โ€” defines the command to start the Desktop Environment/Window Manager. You do not need to define this if your user config is presented as a shell script (with a shebang at the start and execution permissions). Slay, script bestie.
  • Environment โ€” selects which environment should be defined for the following command. Possible values are "xorg" and "wayland"; "xorg" is the default.
  • Lang โ€” defines the locale for the logged user. It has higher priority than LANG from the global configuration. Respect the hierarchy ๐Ÿ’…
  • Selection โ€” requires selection of desktop, and basically turns the emptty file into .xinitrc for Xorg and Wayland. In this case Exec is skipped. Possible values are "false" for never using selection, "true" for always showing selection, or "auto" for showing selection or first option autoselect if there is no other desktop. Default value is false.
  • LoginShell โ€” defines a custom shell to be used to start the session. This lets you start the session with a non-interactive shell, e.g. "/bin/bash --login". Iconic.
  • DesktopNames โ€” value passed into XDG_CURRENT_DESKTOP. Thatโ€™s the whole job ๐Ÿซถ

๐Ÿฆ‹ USER EXIT SCRIPT ๐Ÿฆ‹

Thereโ€™s an optional script file stored as ${HOME}/.config/emptty-exit. Itโ€™s handled as a shell script and is started when the session is going to end. It is started even if emptty is being terminated. The default timeout to finish the script is 3 seconds, but itโ€™s configurable from the script itself.

  • Timeout โ€” optional custom timeout for the script to finish its run. The number represents seconds. Default is 3.

No cap, it will run on the way out. So set your timeout if you need more time to say bye ๐Ÿ˜ญ


๐ŸŒˆ CUSTOM SESSIONS ๐ŸŒˆ

Optional folders for custom sessions, which could be available system-wide โ€” in the case of /etc/emptty/custom-sessions/ โ€” or user-specific โ€” in the case of ${HOME}/.config/emptty-custom-sessions/ โ€” but do not have a .desktop file stored on standard paths for Xorg or Wayland sessions. The expected suffix of each file is ".desktop".

  • Name โ€” defines the name of the Desktop Environment/Window Manager.
  • Exec โ€” defines the command to start the Desktop Environment/Window Manager. It could contain multiple arguments, same as in *.desktop files.
  • Environment โ€” selects which environment should be defined for the following command. Possible values are "xorg" and "wayland"; "xorg" is the default.
  • DesktopNames โ€” value passed into XDG_CURRENT_DESKTOP.
  • NoDisplay/Hidden โ€” Boolean value that controls visibility of the desktop session. Sneaky little session, iykyk ๐Ÿ‘€

๐ŸŽ€ LAST SESSION ๐ŸŽ€

The last user selection of session is stored into ~/.cache/emptty/last-session.

It remembers. Itโ€™s giving main character continuity โœจ


๐Ÿ”ฅ LOGGING ๐Ÿ”ฅ

As it is mentioned in configuration, there are three options to handle logging of emptty. The logs contain not just logs from emptty, but also from Xorg (if used) and the userโ€™s WM/DE. The described log location could differ according to LOGGING_FILE, which is stored in /etc/emptty/conf.

๐ŸŒ™ default

This option provides a simple solution, where the current instance of emptty logs into /var/log/emptty/[TTY_NUMBER].log and the previous version is stored as /var/log/emptty/[TTY_NUMBER].log.old.

NOTE: The current instance always moves the previous log into the old file. So if emptty crashes and is started again, the previous log is in /var/log/emptty/[TTY_NUMBER].log.old.

๐ŸŒธ appending

This option provides functionality that logs everything into /var/log/emptty/[TTY_NUMBER].log and does not handle log rotation by itself. It leaves the option for the user to handle it themselves (e.g. with logrotate).

NOTE: Appending without rotation could cause a large log file, so be sure that the log file is rotated. Bestie, please rotate it. Donโ€™t let it become a whole monster ๐Ÿ˜ญ

๐Ÿ’€ disabled

This option points all logs into /dev/null, so no log is available.

NOTE: If any issue starts to appear and you want to report it, ensure you do not use this option. Fr fr, no logs means no clues.

๐Ÿ’œ COLORS ๐Ÿ’œ

Please, be aware that LIGHT_ colors could be unavailable as background color. Thatโ€™s the warning, bestie.

  • BLACK, RED, GREEN, YELLOW, BLUE, PURPLE, CYAN, WHITE
  • LIGHT_BLACK, LIGHT_RED, LIGHT_GREEN, LIGHT_YELLOW, LIGHT_BLUE, LIGHT_PURPLE, LIGHT_CYAN, LIGHT_WHITE

And thatโ€™s the whole vibe, bestie: this iconic page is from emptty 0.16.1, dated March 2026, and yes, itโ€™s EMPTTY(1) ๐Ÿ’…โœจ go log in slayfully ๐ŸŽ€

๐Ÿ“ฆ where this page comes from