diff --git a/fix.sh b/fix.sh index adf9866..cb4f2a7 100644 --- a/fix.sh +++ b/fix.sh @@ -1,11 +1,11 @@ #!/bin/sh # -# fix-sddm.sh — Alpine: SDDM + LabWC без getty-autologin +# setup-sddm-labwc.sh +# Alpine Linux / OpenRC: SDDM + elogind + LabWC. # -# Запуск: -# su - -# chmod +x fix-sddm.sh -# ./fix-sddm.sh ivan +# Запуск от root: +# chmod +x setup-sddm-labwc.sh +# ./setup-sddm-labwc.sh ivan # set -eu @@ -20,53 +20,55 @@ if [ "$(id -u)" -ne 0 ]; then fi if [ ! -f /etc/alpine-release ]; then - echo "[!] Нужен Alpine Linux." + echo "[!] Этот скрипт только для Alpine Linux." exit 1 fi if ! id "$USER_NAME" >/dev/null 2>&1; then - echo "[!] Пользователь не существует: $USER_NAME" + echo "[!] Пользователь не найден: $USER_NAME" exit 1 fi echo echo "==================================================" -echo " Alpine: настройка SDDM + LabWC" +echo " Alpine: SDDM + elogind + LabWC" echo "==================================================" +echo echo "[*] Пользователь: $USER_NAME" +echo "[*] Alpine: $(cat /etc/alpine-release)" echo # ------------------------------------------------------------ # Пакеты # ------------------------------------------------------------ -echo "[*] Установка SDDM и OpenRC-скриптов..." +echo "[*] Обновление индекса APK..." apk update -apk add sddm sddm-openrc + +echo "[*] Установка зависимостей display manager..." +apk add \ + dbus \ + seatd \ + elogind \ + elogind-openrc \ + sddm \ + sddm-openrc \ + xorg-server \ + mesa \ + mesa-dri-gallium \ + xf86-input-libinput # ------------------------------------------------------------ -# Удаление старого getty-autologin +# Удаление старых/неверных конфигов SDDM # ------------------------------------------------------------ -echo "[*] Удаление старого autologin-wrapper..." -rm -f /usr/local/sbin/autologin-login - -# ВАЖНО: -# /etc/inittab намеренно НЕ меняем. -# kill -HUP 1 намеренно НЕ вызываем. -# Текущий tty остаётся доступным до перезагрузки. - -# ------------------------------------------------------------ -# SDDM config -# ------------------------------------------------------------ - -echo "[*] Настройка SDDM..." +echo "[*] Очистка старой конфигурации SDDM..." mkdir -p /etc/sddm.conf.d -# Убираем созданные ранее ошибочные конфиги. rm -f /etc/sddm.conf.d/wayland.conf rm -f /etc/sddm.conf.d/labwc.conf +rm -f /etc/sddm.conf.d/00-general.conf cat > /etc/sddm.conf.d/00-general.conf << 'EOF' [General] @@ -79,10 +81,20 @@ EOF chmod 644 /etc/sddm.conf.d/00-general.conf # ------------------------------------------------------------ -# Группы +# Удаление старого getty-autologin wrapper # ------------------------------------------------------------ -echo "[*] Проверка групп пользователя..." +echo "[*] Удаление старого getty-autologin wrapper..." +rm -f /usr/local/sbin/autologin-login + +# /etc/inittab намеренно не меняем. +# kill -HUP 1 намеренно не вызываем. + +# ------------------------------------------------------------ +# Группы пользователя +# ------------------------------------------------------------ + +echo "[*] Настройка групп пользователя..." for GROUP_NAME in wheel seat video input; do if ! getent group "$GROUP_NAME" >/dev/null 2>&1; then @@ -93,16 +105,16 @@ for GROUP_NAME in wheel seat video input; do if id -nG "$USER_NAME" | tr ' ' '\n' | grep -qx "$GROUP_NAME"; then echo "[+] $USER_NAME уже в группе $GROUP_NAME." else - echo "[*] Добавление $USER_NAME в $GROUP_NAME..." + echo "[*] Добавление $USER_NAME в группу $GROUP_NAME..." addgroup "$USER_NAME" "$GROUP_NAME" fi done # ------------------------------------------------------------ -# LabWC desktop session +# Сессия LabWC в меню SDDM # ------------------------------------------------------------ -echo "[*] Создание пункта сессии LabWC для SDDM..." +echo "[*] Создание записи LabWC для SDDM..." mkdir -p /usr/share/wayland-sessions @@ -119,7 +131,7 @@ EOF chmod 644 /usr/share/wayland-sessions/labwc.desktop # ------------------------------------------------------------ -# LabWC environment +# Конфигурация LabWC пользователя # ------------------------------------------------------------ echo "[*] Настройка LabWC..." @@ -170,32 +182,29 @@ chmod 755 "$HOME_DIR/.config/labwc/autostart" chown -R "$USER_NAME:$USER_NAME" "$HOME_DIR/.config" # ------------------------------------------------------------ -# Удаление автозапуска LabWC из профиля +# Удаление старого запуска LabWC из login shell # ------------------------------------------------------------ echo "[*] Отключение старого запуска LabWC из .profile..." if [ -f "$PROFILE" ] && grep -qF '# LABWC-AUTOSTART' "$PROFILE"; then - cp "$PROFILE" "$PROFILE.before-sddm-fix.bak" - - # Удаляет блок, начиная с маркера до конца файла. - # В исходном setup.sh этот блок был последним. + cp "$PROFILE" "$PROFILE.before-sddm.bak" sed -i '/^# LABWC-AUTOSTART$/,$d' "$PROFILE" - chown "$USER_NAME:$USER_NAME" "$PROFILE" - echo "[+] Старый блок LABWC-AUTOSTART удалён." + echo "[+] LABWC-AUTOSTART удалён из .profile." else - echo "[+] Старого блока LABWC-AUTOSTART нет." + echo "[+] Блока LABWC-AUTOSTART в .profile нет." fi # ------------------------------------------------------------ -# OpenRC autostart +# OpenRC # ------------------------------------------------------------ -echo "[*] Добавление служб в OpenRC..." +echo "[*] Включение служб OpenRC..." rc-update add dbus default 2>/dev/null || true rc-update add seatd default 2>/dev/null || true +rc-update add elogind default 2>/dev/null || true rc-update add sddm default 2>/dev/null || true echo @@ -204,19 +213,20 @@ echo " Проверка" echo "==================================================" echo -echo "[*] Пакеты:" -apk info -e sddm sddm-openrc || true +echo "[*] Установленные пакеты:" +apk info -e dbus seatd elogind elogind-openrc sddm sddm-openrc \ + xorg-server mesa mesa-dri-gallium xf86-input-libinput || true echo -echo "[*] Пользователь:" +echo "[*] Группы пользователя:" id "$USER_NAME" echo -echo "[*] LabWC session:" -ls -l /usr/share/wayland-sessions/labwc.desktop +echo "[*] Запись LabWC:" +cat /usr/share/wayland-sessions/labwc.desktop echo -echo "[*] DRM-устройства:" +echo "[*] DRM:" ls -la /dev/dri 2>&1 || true echo @@ -224,13 +234,19 @@ echo "==================================================" echo " Готово" echo "==================================================" echo -echo "[!] SDDM НЕ запускается в этом скрипте специально." -echo "[!] Он будет запущен чисто после перезагрузки." +echo "[!] В этом скрипте SDDM специально НЕ запускается." +echo "[!] Это нужно, чтобы не повторять проблему stale-процесса." echo -echo "Выполни:" +echo "Теперь выполни:" echo echo " reboot" echo -echo "После перезагрузки SDDM должен показать окно входа." -echo "В меню сессий выбери: LabWC" +echo "После перезагрузки порядок будет такой:" +echo " 1. dbus" +echo " 2. seatd" +echo " 3. elogind" +echo " 4. sddm" echo +echo "В SDDM войди пользователем $USER_NAME" +echo "и в меню сессий выбери LabWC." +echo \ No newline at end of file