feat: ship Rust login manager and GitLab release pipeline

Replace the legacy Go implementation as the production path, quarantine the reference tree, add deterministic release packaging and version metadata, and run verification through GitLab CI.
This commit is contained in:
2026-09-25 21:33:46 +05:30
parent 1723ab53b8
commit faf5b27328
49 changed files with 6795 additions and 747 deletions

View File

@@ -1,13 +1,46 @@
# latchd config — see src/config/config.go for all defaults.
# only include values you want to override.
# latchd configuration. All paths are validated before the login screen starts.
# tty = 2
# pam_service = "latchd"
# system_shell = "/bin/sh"
# focus_behaviour = "default"
tty = 2
main_log_path = "/var/log/latchd.log"
client_log_path = "/var/log/latchd.client.log"
pam_service = "latchd"
system_shell = "/bin/sh"
initial_path = "/usr/local/sbin:/usr/local/bin:/usr/bin"
[x11]
display = ":1"
server_path = "/usr/bin/X"
xauth_path = "/usr/bin/xauth"
server_timeout_secs = 60
server_log_path = "/var/log/latchd.xorg.log"
sessions_path = "/usr/share/xsessions"
scripts_path = "/etc/latchd/wms"
[wayland]
sessions_path = "/usr/share/wayland-sessions"
scripts_path = "/etc/latchd/wayland"
[environment_switcher]
include_tty_shell = false
max_display_length = 18
# Power actions use an executable path and argv, never a shell command string.
# Keep this section empty unless the installation explicitly wants console
# power controls.
[power_controls]
# [[power_controls.entries]]
# hint = "Hibernate"
# key = "F3"
# cmd = "systemctl hibernate"
entries = []
[accounts]
minimum_uid = 1000
excluded_users = []
enumerate = true
faillock_path = "/usr/sbin/faillock"
faillock_config = "/etc/security/faillock.conf"
[visual]
background_enabled = true
animations = true
notifications = true
reduced_motion = false
max_wallpaper_bytes = 8388608
# wallpaper_path = "/etc/latchd/wallpaper.png"

View File

@@ -2,3 +2,4 @@
auth include login
account include login
password include login
session include login

View File

@@ -9,6 +9,10 @@ StandardInput=tty
TTYPath=/dev/tty2
TTYReset=yes
TTYVHangup=yes
KillMode=control-group
Restart=on-failure
RestartSec=2s
UMask=0077
Type=idle
[Install]

View File

@@ -1,41 +0,0 @@
#!/bin/sh
# sourced by latchd before starting an X11 session.
# runs the user's xprofile, xinitrc fragments, and xsession.
_xexec="$1"
shift
# source shell profiles
if [ -f /etc/profile ]; then
. /etc/profile
fi
shell="${SHELL##*/}"
case "$shell" in
zsh) [ -f "$HOME/.zprofile" ] && . "$HOME/.zprofile" ;;
bash) [ -f "$HOME/.bash_profile" ] && . "$HOME/.bash_profile" ;;
*) [ -f "$HOME/.profile" ] && . "$HOME/.profile" ;;
esac
# source x profiles
[ -f /etc/xprofile ] && . /etc/xprofile
[ -f "$HOME/.xprofile" ] && . "$HOME/.xprofile"
# run xinitrc.d scripts
for _f in /etc/X11/xinit/xinitrc.d/*; do
[ -x "$_f" ] && . "$_f"
done
# run Xsession.d scripts
for _f in /etc/X11/Xsession.d/*; do
[ -x "$_f" ] && . "$_f"
done
# load xresources
if [ -f "$HOME/.Xresources" ]; then
xrdb -merge "$HOME/.Xresources"
fi
# run xsession
[ -f "$HOME/.xsession" ] && . "$HOME/.xsession"
exec $_xexec "$@"