EMPTTY(1)
๐ 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โ startsempttyas a daemon, which does not requireagetty. ๐ฆ-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 defineddefaultUser. ๐-a,--autologin [session]โ overrides the loaded configuration by enabling autologin. Ifsessionis 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 whereempttywill start. ๐ฅ๏ธSWITCH_TTYโ enables switching to the defined TTY number. Default istrue. ๐PRINT_ISSUEโ enables printing of/etc/issuein 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. fromempttyfile). Possible values are"xorg"and"wayland". The default of the default isxorg. ๐ฑDEFAULT_USERโ preselected user. IfAUTOLOGINis enabled, this user is logged in. ๐คDEFAULT_SESSIONโ preselected desktop session, if the user does not use theempttyfile. Has lower priority thanAUTOLOGIN_SESSION. ๐ฏDEFAULT_SESSION_ENVโ optional environment of the preselected desktop session, if the user does not use theempttyfile. Possible values are"xorg"and"wayland". ๐งAUTOLOGINโ enables autologin ifDEFAULT_USERis defined. Possible values are"true"or"false". Default value isfalse.
NOTE: to enable autologin,DEFAULT_USERmust be in groupnopasswdlogin; 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.-1is for infinite retries,0is for no retry. Default value is2. ๐ฎโ๐จAUTOLOGIN_RETRY_PERIODโ time period in seconds that is used for checking session login retries. Default value is2. โฑ๏ธLANGโ defines locale for all users. Default value is"en_US.UTF-8". ๐DBUS_LAUNCHโ startsdbus-launchbefore the desktop command. After the end of the session,dbus-daemonis interrupted. Default value istrue. If the user config is handled as a script (does not containExecoption), this config is overridden tofalse. ๐ALWAYS_DBUS_LAUNCHโ startsdbus-launchbefore the desktop command in any case; theDBUS_LAUNCHvalue is ignored. It also starts even ifXINITRC_LAUNCHis set totrue. After the end of the session,dbus-daemonis interrupted. Default value isfalse. ๐ซXINITRC_LAUNCHโ starts an Xorg desktop by calling the~/.xinitrcscript with session exec as an argument. If it istrue, the file exists, and the selected WM/DE is an Xorg session, it overridesDBUS_LAUNCH. If the user config is handled as a script (does not containExecoption), this config is overridden tofalse. ๐ช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 isfalse.
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 isfalse. ๐ข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 isfalse.
NOTE: be aware that setting it to "true" could lead to unexpected behaviour. ๐ญ
DEFAULT_XAUTHORITYโ if settrue, it will not use the.emptty-xauthfile, but the standard~/.Xauthorityfile. This allows handling xauth issues. Possible values are"true"or"false". Default value isfalse. ๐ROOTLESS_XORGโ if settrue, Xorg will be started as rootless, if the system allows andempttyis running in daemon mode. Possible values are"true"or"false". Default value isfalse. ๐๏ธIDENTIFY_ENVSโ if settrue, environmental groups are printed to differ Xorg/Wayland/Custom/UserCustom desktops. Possible values are"true"or"false". Default value isfalse. ๐ท๏ธHIDE_ENTER_LOGINโ if settrue,"hostname login:"is not displayed. Possible values are"true"or"false". Default value isfalse. ๐HIDE_ENTER_PASSWORDโ if settrue,"Password:"is not displayed. Possible values are"true"or"false". Default value isfalse. ๐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 isfalse. ๐ซถ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 isfalse. ๐ฏ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 istrue. โจ๏ธ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 beforeempttyautomatically exits. If the value is0or 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 thanLANGfrom the global configuration. Respect the hierarchy ๐Selectionโ requires selection of desktop, and basically turns the emptty file into.xinitrcfor Xorg and Wayland. In this caseExecis 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 isfalse.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 intoXDG_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 is3.
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*.desktopfiles.Environmentโ selects which environment should be defined for the following command. Possible values are"xorg"and"wayland";"xorg"is the default.DesktopNamesโ value passed intoXDG_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,WHITELIGHT_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
- alpine 3.24: emptty-doc 0.16.1-r4 ยท MIT
- arch rolling: emptty 0.16.1-1 ยท MIT
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms