@@ -18,151 +18,117 @@ cat > /usr/local/bin/bwos-session-profile-apply <<'EOF2'
1818#!/bin/sh
1919set -eu
2020
21- LIVE_USER="phoenix"
22- if id -u arc >/dev/null 2>&1; then
23- LIVE_USER="arc"
24- fi
25- LIVE_HOME="/home/${LIVE_USER}"
26- PROFILE="x11"
27- CMDLINE="$(cat /proc/cmdline 2>/dev/null || true)"
28-
29- log() {
30- /usr/local/bin/bwos-session-log "$@"
21+ LOG_FILE="/run/arcwyre-flex-session-profile.log"
22+ LOG_TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S')
23+
24+ # Logging function: write to file and journal
25+ log_info() {
26+ MSG="[${LOG_TIMESTAMP}] [INFO] $*"
27+ echo "$MSG" >> "$LOG_FILE"
28+ logger -t bwos-session-profile -p info "$MSG" 2>/dev/null || true
3129}
3230
33- first_existing() {
34- for candidate in "$@"; do
35- if [ -f "$candidate" ]; then
36- printf '%s\n' "$candidate"
37- return 0
38- fi
39- done
40- return 1
31+ log_success() {
32+ MSG="[${LOG_TIMESTAMP}] [SUCCESS] $*"
33+ echo "$MSG" >> "$LOG_FILE"
34+ logger -t bwos-session-profile -p info "$MSG" 2>/dev/null || true
4135}
4236
43- session_exec() {
44- path="$1"
45- if [ -f "$path" ]; then
46- awk -F= '/^Exec=/ { print $2; exit }' "$path"
47- fi
37+ log_fail() {
38+ MSG="[${LOG_TIMESTAMP}] [FAIL] $*"
39+ echo "$MSG" >> "$LOG_FILE"
40+ logger -t bwos-session-profile -p err "$MSG" 2>/dev/null || true
4841}
4942
50- case " $CMDLINE " in
51- *" bwos.session=wayland "*) PROFILE="wayland" ;;
52- *" bwos.session=x11 "*) PROFILE="x11" ;;
53- esac
43+ # Initialize log file
44+ {
45+ echo "[${LOG_TIMESTAMP}] ARCWYRE Flex SDDM Autologin Profile Apply - START"
46+ } >> "$LOG_FILE"
5447
55- log "BWOS_KERNEL_CMDLINE ${CMDLINE}"
48+ # Detect live user
49+ LIVE_USER="phoenix"
50+ if id -u arc >/dev/null 2>&1; then
51+ LIVE_USER="arc"
52+ fi
53+ log_info "Detected live user: $LIVE_USER"
5654
57- WAYLAND_SESSION="$(first_existing \
58- /usr/share/wayland-sessions/plasmawayland.desktop \
59- /usr/share/wayland-sessions/plasma.desktop \
60- /usr/share/wayland-sessions/org.kde.plasma.desktop || true)"
55+ # Get home directory
56+ LIVE_HOME="/home/${LIVE_USER}"
57+ log_info "Live home directory: $LIVE_HOME"
6158
62- X11_SESSION="$(first_existing \
59+ # Find X11 session
60+ X11_SESSION=""
61+ for candidate in \
6362 /usr/share/xsessions/plasmax11.desktop \
64- /usr/share/xsessions/plasma.desktop || true)"
65-
66- if [ -n "$X11_SESSION" ]; then
67- X11_EXEC="$(session_exec "$X11_SESSION" || true)"
68- log "BWOS_SESSION_FILE_X11_EXISTS path=${X11_SESSION} exec=${X11_EXEC}"
69- if [ -n "$X11_EXEC" ] && command -v ${X11_EXEC%% *} >/dev/null 2>&1; then
70- log "BWOS_SESSION_EXEC_X11_EXISTS command=${X11_EXEC%% *}"
71- else
72- log "BWOS_SESSION_EXEC_X11_MISSING command=${X11_EXEC%% *}"
63+ /usr/share/xsessions/plasma.desktop \
64+ /usr/share/xsessions/xfce.desktop
65+ do
66+ if [ -f "$candidate" ]; then
67+ X11_SESSION="$(basename "$candidate")"
68+ break
7369 fi
74- else
75- log "BWOS_SESSION_FILE_X11_MISSING"
76- fi
70+ done
71+ log_info "Detected X11 session: ${X11_SESSION:-NONE}"
7772
78- if [ -n "$WAYLAND_SESSION" ]; then
79- WAYLAND_EXEC="$(session_exec "$WAYLAND_SESSION" || true)"
80- log "BWOS_SESSION_FILE_WAYLAND_EXISTS path=${WAYLAND_SESSION} exec=${WAYLAND_EXEC}"
81- if [ -n "$WAYLAND_EXEC" ] && command -v ${WAYLAND_EXEC%% *} >/dev/null 2>&1; then
82- log "BWOS_SESSION_EXEC_WAYLAND_EXISTS command=${WAYLAND_EXEC%% *}"
83- else
84- log "BWOS_SESSION_EXEC_WAYLAND_MISSING command=${WAYLAND_EXEC%% *}"
73+ # Find Wayland session
74+ WAYLAND_SESSION=""
75+ for candidate in \
76+ /usr/share/wayland-sessions/plasmawayland.desktop \
77+ /usr/share/wayland-sessions/plasma.desktop \
78+ /usr/share/wayland-sessions/xfce-wayland.desktop
79+ do
80+ if [ -f "$candidate" ]; then
81+ WAYLAND_SESSION="$(basename "$candidate")"
82+ break
8583 fi
86- else
87- log "BWOS_SESSION_FILE_WAYLAND_MISSING"
88- fi
84+ done
85+ log_info "Detected Wayland session: ${WAYLAND_SESSION:-NONE}"
8986
90- if [ "$PROFILE" = "wayland" ]; then
91- SELECTED_SESSION="$WAYLAND_SESSION"
92- else
93- SELECTED_SESSION="$X11_SESSION"
94- fi
87+ # Choose session (prefer X11)
88+ SELECTED_SESSION="${X11_SESSION:-${WAYLAND_SESSION:-}}"
89+ log_info "Chosen session: ${SELECTED_SESSION:-EMPTY}"
9590
91+ # FAIL if no session found
9692if [ -z "$SELECTED_SESSION" ]; then
97- log "BWOS_SESSION_CONFIG_FAIL selected_session_missing profile=${PROFILE}"
98- exit 0
93+ log_fail "ARCWYRE_FLEX_SDDM_SESSION_EMPTY_FAIL - no valid session found"
94+ echo "[${LOG_TIMESTAMP}] ARCWYRE Flex SDDM Profile Apply - END (FAILED)" >> "$LOG_FILE"
95+ exit 1
9996fi
10097
101- SELECTED_SESSION_NAME="$(basename "$SELECTED_SESSION")"
102- install -d -m 0755 /etc/sddm.conf.d /run
103-
104- cat > /etc/sddm.conf.d/autologin.conf <<EOF_CONF
105- [Autologin]
106- User=${LIVE_USER}
107- Session=${SELECTED_SESSION_NAME}
108- Relogin=true
109- EOF_CONF
98+ # Remove stale conf.d autologin configs
99+ if [ -f /etc/sddm.conf.d/autologin.conf ]; then
100+ log_info "Removing stale /etc/sddm.conf.d/autologin.conf"
101+ rm -f /etc/sddm.conf.d/autologin.conf
102+ fi
110103
111- cat > /etc/sddm.conf.d/default-session.conf <<EOF_CONF
112- [General]
113- DefaultSession=${SELECTED_SESSION_NAME}
114- EOF_CONF
104+ # Create directories
105+ install -d -m 0755 /etc/sddm.conf.d /run
115106
116- # /etc/sddm.conf is read LAST by SDDM and overrides conf.d values.
117- # Write here to guarantee the runtime session selection takes effect.
118- SDDM_THEME="$(awk -F= '/^Current=/ {print $2; exit}' /etc/sddm.conf.d/phoenix.conf 2>/dev/null || echo phoenix)"
107+ # Write final SDDM autologin config to /etc/sddm.conf (highest precedence)
119108cat > /etc/sddm.conf <<EOF_CONF
120109[Autologin]
121- User=${ LIVE_USER}
122- Session=${SELECTED_SESSION_NAME}
110+ User=$LIVE_USER
111+ Session=$SELECTED_SESSION
123112Relogin=true
124113
125114[General]
126- DefaultSession=${SELECTED_SESSION_NAME}
115+ DefaultSession=$SELECTED_SESSION
127116
128117[Theme]
129- Current=${SDDM_THEME}
118+ Current=phoenix
130119EOF_CONF
131120
132- printf '%s\n' "$PROFILE" > /run/bwos-session-profile
133- printf '%s\n' "$SELECTED_SESSION_NAME" > /run/bwos-selected-session
134-
135- log "BWOS_SDDM_SERVICE_PRESTART"
136- log "BWOS_SDDM_AUTOLOGIN_CONFIGURED user=${LIVE_USER} session=${SELECTED_SESSION_NAME} profile=${PROFILE}"
137- log "BWOS_SELECTED_SESSION_FILE=${SELECTED_SESSION_NAME}"
121+ log_info "Wrote /etc/sddm.conf with User=$LIVE_USER Session=$SELECTED_SESSION"
138122
139- if [ "$PROFILE" = "x11" ]; then
140- log "BWOS_X11_SESSION_ATTEMPTED"
141- else
142- log "BWOS_WAYLAND_SESSION_ATTEMPTED"
143- fi
144-
145- if id "$LIVE_USER" >/dev/null 2>&1 && [ -d "$LIVE_HOME" ]; then
146- owner="$(stat -c '%U:%G' "$LIVE_HOME" 2>/dev/null || stat -f '%Su:%Sg' "$LIVE_HOME" 2>/dev/null || echo unknown)"
147- mode="$(stat -c '%a' "$LIVE_HOME" 2>/dev/null || stat -f '%Lp' "$LIVE_HOME" 2>/dev/null || echo unknown)"
148- log "BWOS_USER_PROVISIONING_OK user=${LIVE_USER} home=${LIVE_HOME} owner=${owner} mode=${mode}"
149- else
150- log "BWOS_USER_PROVISIONING_FAIL user=${LIVE_USER} home=${LIVE_HOME}"
151- fi
123+ # Log final config contents
124+ {
125+ echo "[INFO] Final /etc/sddm.conf contents:"
126+ cat /etc/sddm.conf | sed 's/^/ /'
127+ } >> "$LOG_FILE"
152128
153- if [ -f "${LIVE_HOME}/.config/plasma-org.kde.plasma.desktop-appletsrc" ]; then
154- log "BWOS_PLASMA_CONFIG_READABLE"
155- else
156- log "BWOS_PLASMA_CONFIG_MISSING"
157- fi
158-
159- if [ -f "${LIVE_HOME}/.config/autostart/bwos-desktop-session-marker.desktop" ] || [ -f /etc/xdg/autostart/bwos-desktop-session-marker.desktop ]; then
160- log "BWOS_AUTOSTART_MARKER_PRESENT"
161- else
162- log "BWOS_AUTOSTART_MARKER_MISSING"
163- fi
164-
165- groups "$LIVE_USER" 2>/dev/null | sed 's/^/BWOS_USER_GROUPS /' > /dev/ttyS0 2>/dev/null || true
129+ # Emit success marker
130+ log_success "ARCWYRE_FLEX_SDDM_AUTOLOGIN_CONFIGURED user=$LIVE_USER session=$SELECTED_SESSION"
131+ echo "[${LOG_TIMESTAMP}] ARCWYRE Flex SDDM Profile Apply - END (SUCCESS)" >> "$LOG_FILE"
166132EOF2
167133chmod 0755 /usr/local/bin/bwos-session-profile-apply
168134
@@ -266,16 +232,19 @@ chmod 0755 /usr/local/bin/bwos-session-diagnostics-dump
266232
267233cat > /etc/systemd/system/bwos-session-profile.service << 'EOF2 '
268234[Unit]
269- Description=BWOS Session Profile Selection
270- Before=sddm.service
271- After=systemd-user-sessions.service local-fs.target
235+ Description=BWOS Session Profile Selection (SDDM Autologin)
236+ Before=display-manager.service sddm.service
237+ After=local-fs.target systemd-user-sessions.service
272238
273239[Service]
274240Type=oneshot
275241ExecStart=/usr/local/bin/bwos-session-profile-apply
242+ StandardOutput=journal+console
243+ StandardError=journal+console
244+ SyslogIdentifier=bwos-session-profile
276245
277246[Install]
278- WantedBy=graphical.target
247+ WantedBy=display-manager.service
279248EOF2
280249
281250cat > /etc/systemd/system/bwos-session-diagnostics.service << 'EOF2 '
0 commit comments