From ee6b6236c7fb4f9cb8add95179357705c4bc4dba Mon Sep 17 00:00:00 2001 From: s13bby Date: Sun, 6 Sep 2026 14:24:56 +0600 Subject: [PATCH] another one update --- alpine_install.sh | 679 ++++++++++++++++++++++++---------------------- 1 file changed, 360 insertions(+), 319 deletions(-) diff --git a/alpine_install.sh b/alpine_install.sh index ea65b05..5a3431a 100644 --- a/alpine_install.sh +++ b/alpine_install.sh @@ -1,35 +1,28 @@ #!/bin/sh +# ============================================================ # LabWC Alpine Setup Script -# Version 6 +# Version 8 # -# Запускать от имени root! +# Запуск: # -# Использование: # ./setup.sh -# ./setup.sh username +# ./setup.sh ivan # -# Устанавливает: -# - LabWC + Wayland -# - Waybar / Mako / Wofi -# - PipeWire + WirePlumber -# - NetworkManager -# - Firefox -# - zenith-cli -# - seatd -# - автоматический вход на tty1 -# - автоматический запуск LabWC +# Можно запускать: +# - от root +# - от обычного пользователя # -# ВАЖНО: -# zenith-cli использует build.sh на Bash, -# поэтому bash устанавливается явно. +# Если запущено не от root, скрипт автоматически использует sudo. +# ============================================================ set -eu -# ================================================== -# 0. Основные параметры -# ================================================== +# ============================================================ +# 0. Параметры +# ============================================================ USER_NAME="${1:-ivan}" + HOME_DIR="/home/$USER_NAME" PROFILE="$HOME_DIR/.profile" @@ -37,25 +30,11 @@ ZENITH_REPO="https://zenithcode.duckdns.org/s13bby/zenith-cli.git" ZENITH_DIR="$HOME_DIR/zenith-cli" LOCAL_BIN="$HOME_DIR/.local/bin" -echo "==================================================" -echo "[*] LabWC Alpine Setup" -echo "==================================================" -echo "[*] Пользователь: $USER_NAME" -echo "[*] Домашний каталог: $HOME_DIR" -echo "==================================================" +SCRIPT_PATH="$0" -# ================================================== -# 1. Проверка root -# ================================================== - -if [ "$(id -u)" -ne 0 ]; then - echo "[!] Этот скрипт необходимо запускать от root." - exit 1 -fi - -# ================================================== -# 2. Проверка имени пользователя -# ================================================== +# ============================================================ +# 1. Проверка имени пользователя +# ============================================================ case "$USER_NAME" in ""|*[!a-zA-Z0-9_-]*) @@ -64,24 +43,75 @@ case "$USER_NAME" in ;; esac -# ================================================== -# 3. Проверка repositories -# ================================================== +# ============================================================ +# 2. Автоматический переход в root +# +# Если скрипт запущен от ivan: +# +# ./setup.sh +# +# он сам выполнит: +# +# sudo ./setup.sh +# +# ============================================================ + +if [ "$(id -u)" -ne 0 ]; then + + echo "==================================================" + echo "[*] Скрипт запущен от пользователя: $(id -un)" + echo "[*] Требуются root-права." + echo "==================================================" + + if ! command -v sudo >/dev/null 2>&1; then + echo + echo "[!] sudo не установлен." + echo + echo "[!] Один раз выполните от root:" + echo + echo " apk add sudo" + echo + exit 1 + fi + + echo "[*] Перезапуск через sudo..." + + exec sudo "$SCRIPT_PATH" "$@" + +fi + +# ============================================================ +# 3. Root +# ============================================================ + +echo +echo "==================================================" +echo "[*] LabWC Alpine Setup" +echo "==================================================" +echo "[*] Root: OK" +echo "[*] User: $USER_NAME" +echo "[*] Home: $HOME_DIR" +echo "==================================================" +echo + +# ============================================================ +# 4. Проверка repositories +# ============================================================ if [ ! -f /etc/apk/repositories ]; then - echo "[!] Файл /etc/apk/repositories не найден." + echo "[!] /etc/apk/repositories не найден." exit 1 fi -# ================================================== -# 4. Вспомогательные функции -# ================================================== +# ============================================================ +# 5. Функции +# ============================================================ add_user_group() { GROUP_NAME="$1" if ! getent group "$GROUP_NAME" >/dev/null 2>&1; then - echo "[!] Группа $GROUP_NAME не существует — пропуск." + echo "[!] Группа '$GROUP_NAME' отсутствует." return 0 fi @@ -89,65 +119,98 @@ add_user_group() { tr ' ' '\n' | grep -qx "$GROUP_NAME" then - echo "[+] $USER_NAME уже состоит в группе $GROUP_NAME." + echo "[+] $USER_NAME уже в группе $GROUP_NAME." else echo "[*] Добавление $USER_NAME в группу $GROUP_NAME..." addgroup "$USER_NAME" "$GROUP_NAME" fi } + enable_service() { SERVICE="$1" echo "[*] Настройка службы $SERVICE..." - if ! rc-service "$SERVICE" status >/dev/null 2>&1; then + if rc-service "$SERVICE" status >/dev/null 2>&1; then + echo "[+] $SERVICE уже запущен." + else echo "[*] Запуск $SERVICE..." rc-service "$SERVICE" start 2>/dev/null || true - else - echo "[+] $SERVICE уже запущен." fi rc-update add "$SERVICE" default 2>/dev/null || true } -# ================================================== -# 5. Репозитории -# ================================================== -echo "[*] Проверка репозитория community..." +package_exists() { + PACKAGE="$1" -if ! grep -qE '^[[:space:]]*[^#[:space:]].*/community/?[[:space:]]*$' \ + apk search -x "$PACKAGE" 2>/dev/null | + grep -qx "$PACKAGE" +} + + +install_optional() { + PACKAGE="$1" + + if package_exists "$PACKAGE"; then + echo "[*] Установка дополнительного пакета: $PACKAGE" + apk add "$PACKAGE" + else + echo "[!] Дополнительный пакет $PACKAGE отсутствует." + echo "[!] Пропуск." + fi +} + +# ============================================================ +# 6. Community +# ============================================================ + +echo "[*] Проверка community..." + +if grep -qE '^[[:space:]]*[^#[:space:]].*/community/?[[:space:]]*$' \ /etc/apk/repositories then - if grep -qE '^[[:space:]]*#.*\/community/?[[:space:]]*$' \ + echo "[+] community уже включён." + +elif grep -qE '^[[:space:]]*#.*\/community/?[[:space:]]*$' \ + /etc/apk/repositories +then + + echo "[*] Раскомментирование community..." + + sed -i \ + 's|^[[:space:]]*#\(.*\/community/?[[:space:]]*\)$|\1|' \ /etc/apk/repositories - then - echo "[*] Раскомментирование community..." +else - sed -i \ - 's|^[[:space:]]*#\(.*\/community/?[[:space:]]*\)$|\1|' \ - /etc/apk/repositories + echo "[!] Репозиторий community не найден." + echo + echo "Проверьте:" + echo + echo " cat /etc/apk/repositories" + echo + exit 1 - else - - echo "[!] Репозиторий community не найден." - echo "[!] Добавьте community в /etc/apk/repositories." - exit 1 - - fi fi -echo "[*] Обновление индекса пакетов..." +# ============================================================ +# 7. APK update +# ============================================================ + +echo +echo "[*] Обновление индексов APK..." apk update -# ================================================== -# 6. Базовые инструменты -# ================================================== +# ============================================================ +# 8. Базовые инструменты +# ============================================================ +echo echo "[*] Установка базовых инструментов..." apk add \ @@ -157,96 +220,87 @@ apk add \ bash \ build-base -# ================================================== -# 7. Пользователь -# ================================================== +# ============================================================ +# 9. Пользователь +# ============================================================ -echo "[*] Настройка пользователя $USER_NAME..." +echo +echo "[*] Проверка пользователя $USER_NAME..." if id "$USER_NAME" >/dev/null 2>&1; then - echo "[+] Пользователь $USER_NAME уже существует." + echo "[+] Пользователь существует." else - echo "[*] Создание пользователя $USER_NAME..." + echo "[*] Создание пользователя..." adduser -D "$USER_NAME" echo - echo "[!] Сейчас необходимо задать пароль пользователя $USER_NAME." + echo "[!] Установите пароль для $USER_NAME." passwd "$USER_NAME" - echo fi -# ================================================== -# 8. Wayland / seatd / системные компоненты +# ============================================================ +# 10. Wayland / seatd # # ВАЖНО: -# seatd устанавливается ДО добавления пользователя -# в группу seat. -# ================================================== +# +# НЕ используем mesa-dri. +# +# mesa-dri отсутствует в некоторых версиях Alpine. +# Пакет mesa сам подтягивает необходимые компоненты. +# ============================================================ -echo "[*] Установка Wayland и системных компонентов..." +echo +echo "[*] Установка Wayland / seatd..." apk add \ mesa \ - mesa-dri \ libinput \ seatd \ - seatd-openrc \ dbus \ - dbus-openrc \ polkit -# ================================================== -# 9. Группы -# ================================================== +# ============================================================ +# 11. Группы +# ============================================================ -echo "[*] Настройка групп пользователя..." +echo +echo "[*] Настройка групп..." -# Sudo add_user_group wheel -# seatd -# -# Alpine использует группу "seat". -# "seatd" — это имя демона/пакета, НЕ имя группы. -# -# Документация Alpine: -# adduser $USER seat +# seat — группа для seatd/libseat. # +# seatd — это демон. +# seat — Unix-группа. + if getent group seat >/dev/null 2>&1; then - add_user_group seat + + echo "[+] Группа seat существует." + else - echo "[!] Группа seat отсутствует." - echo "[!] Создаю группу seat..." + + echo "[*] Группа seat отсутствует." + echo "[*] Создание группы seat..." addgroup seat - add_user_group seat fi -# Для seatd обычно НЕ нужны input/video. -# -# video можно добавить отдельно, если PipeWire -# должен напрямую работать с веб-камерой: -# -# add_user_group video +add_user_group seat -# ================================================== -# 10. Sudo -# ================================================== +# ============================================================ +# 12. Sudo +# ============================================================ +echo echo "[*] Настройка sudo..." -if [ -d /etc/sudoers.d ] && - grep -qE '^[[:space:]]*#?[[:space:]]*includedir[[:space:]]+/etc/sudoers\.d' \ - /etc/sudoers -then - - echo "[+] Используется /etc/sudoers.d." +if [ -d /etc/sudoers.d ]; then cat > /etc/sudoers.d/wheel << 'EOF' %wheel ALL=(ALL) ALL @@ -256,33 +310,21 @@ EOF else - echo "[*] sudoers.d не подключен." - - if grep -qE '^%wheel[[:space:]]+ALL=\(ALL\)[[:space:]]+ALL' \ + if ! grep -qE '^%wheel[[:space:]]+ALL=\(ALL\)[[:space:]]+ALL' \ /etc/sudoers then - echo "[+] Правило wheel уже существует." - - elif grep -qE '^#[[:space:]]*%wheel[[:space:]]+ALL=\(ALL\)[[:space:]]+ALL' \ - /etc/sudoers - then - - sed -i \ - 's/^#[[:space:]]*\(%wheel[[:space:]]*ALL=(ALL)[[:space:]]*ALL\)/\1/' \ - /etc/sudoers - - else - echo '%wheel ALL=(ALL) ALL' >> /etc/sudoers fi + fi -# ================================================== -# 11. Зависимости zenith-cli -# ================================================== +# ============================================================ +# 13. zenith-cli dependencies +# ============================================================ +echo echo "[*] Установка зависимостей zenith-cli..." apk add \ @@ -290,10 +332,11 @@ apk add \ curl-dev \ opencv-dev -# ================================================== -# 12. Desktop environment -# ================================================== +# ============================================================ +# 14. Desktop +# ============================================================ +echo echo "[*] Установка рабочего окружения..." apk add \ @@ -307,7 +350,6 @@ apk add \ font-dejavu \ wl-clipboard \ xdg-desktop-portal \ - xdg-desktop-portal-gtk \ pipewire \ wireplumber \ alsa-utils \ @@ -317,58 +359,73 @@ apk add \ firefox \ swaylock -# ================================================== -# 13. OpenRC -# ================================================== +# ============================================================ +# 15. GTK portal — необязательный +# ============================================================ -echo "[*] Настройка системных служб..." +echo +echo "[*] Проверка xdg-desktop-portal-gtk..." + +if package_exists xdg-desktop-portal-gtk; then + + apk add xdg-desktop-portal-gtk + +else + + echo "[!] xdg-desktop-portal-gtk отсутствует." + echo "[!] Продолжаем без него." + +fi + +# ============================================================ +# 16. OpenRC +# ============================================================ + +echo +echo "[*] Настройка OpenRC..." enable_service seatd enable_service dbus enable_service networkmanager -# ================================================== -# 14. Конфигурация LabWC -# ================================================== +# ============================================================ +# 17. LabWC config +# ============================================================ +echo echo "[*] Создание конфигурации LabWC..." mkdir -p "$HOME_DIR/.config/labwc" -# -------------------------------------------------- -# LabWC environment -# -------------------------------------------------- +# ------------------------------------------------------------ +# environment +# ------------------------------------------------------------ cat > "$HOME_DIR/.config/labwc/environment" << 'EOF' XDG_CURRENT_DESKTOP=labwc XDG_SESSION_DESKTOP=labwc XDG_SESSION_TYPE=wayland -# Runtime directory для Wayland/seatd -XDG_RUNTIME_DIR=/tmp/user-1000 - MOZ_ENABLE_WAYLAND=1 QT_QPA_PLATFORM=wayland SDL_VIDEODRIVER=wayland -# Явно использовать seatd LIBSEAT_BACKEND=seatd EOF -# -------------------------------------------------- -# LabWC autostart -# -------------------------------------------------- +# ------------------------------------------------------------ +# autostart +# ------------------------------------------------------------ cat > "$HOME_DIR/.config/labwc/autostart" << 'EOF' #!/bin/sh -# ================================================== +# ============================================================ # XDG_RUNTIME_DIR -# ================================================== +# ============================================================ if [ -z "${XDG_RUNTIME_DIR:-}" ]; then - XDG_RUNTIME_DIR="/tmp/user-$(id -u)" - export XDG_RUNTIME_DIR + export XDG_RUNTIME_DIR="/tmp/user-$(id -u)" fi if [ ! -d "$XDG_RUNTIME_DIR" ]; then @@ -376,68 +433,75 @@ if [ ! -d "$XDG_RUNTIME_DIR" ]; then chmod 700 "$XDG_RUNTIME_DIR" fi -# ================================================== +# ============================================================ # NetworkManager applet -# ================================================== +# ============================================================ if command -v nm-applet >/dev/null 2>&1; then nm-applet & fi -# ================================================== +# ============================================================ # Waybar -# ================================================== +# ============================================================ if command -v waybar >/dev/null 2>&1; then waybar & fi -# ================================================== -# Notification daemon -# ================================================== +# ============================================================ +# Mako +# ============================================================ if command -v mako >/dev/null 2>&1; then mako & fi -# ================================================== +# ============================================================ # PipeWire -# ================================================== +# ============================================================ -if ! pgrep -x pipewire >/dev/null 2>&1; then - pipewire & +if command -v pipewire >/dev/null 2>&1; then + if ! pgrep -x pipewire >/dev/null 2>&1; then + pipewire & + fi fi -# ================================================== +# ============================================================ # WirePlumber -# ================================================== +# ============================================================ -if ! pgrep -x wireplumber >/dev/null 2>&1; then - wireplumber & +if command -v wireplumber >/dev/null 2>&1; then + if ! pgrep -x wireplumber >/dev/null 2>&1; then + wireplumber & + fi fi -# ================================================== +# ============================================================ # Wallpaper -# ================================================== +# ============================================================ if [ -f /usr/share/backgrounds/alpine/alpine-wallpaper.png ]; then + swaybg \ -i /usr/share/backgrounds/alpine/alpine-wallpaper.png \ -m fill & + fi EOF chmod +x "$HOME_DIR/.config/labwc/autostart" -# ================================================== -# 15. zenith-cli -# ================================================== +# ============================================================ +# 18. zenith-cli +# ============================================================ +echo echo "[*] Установка zenith-cli..." if [ -d "$ZENITH_DIR/.git" ]; then - echo "[*] Репозиторий zenith-cli уже существует." + echo "[+] Репозиторий уже существует." su - "$USER_NAME" -c " set -eu @@ -456,34 +520,31 @@ else fi -# ================================================== -# 16. Проверка build.sh -# ================================================== - -echo "[*] Проверка build.sh..." +# ============================================================ +# 19. Проверка файлов zenith-cli +# ============================================================ if [ ! -f "$ZENITH_DIR/build.sh" ]; then - echo "[!] build.sh не найден:" + + echo "[!] Не найден:" echo " $ZENITH_DIR/build.sh" exit 1 + fi -# ================================================== -# 17. Проверка CMakeLists.txt -# ================================================== - -echo "[*] Проверка CMakeLists.txt..." - if [ ! -f "$ZENITH_DIR/CMakeLists.txt" ]; then - echo "[!] CMakeLists.txt не найден:" + + echo "[!] Не найден:" echo " $ZENITH_DIR/CMakeLists.txt" exit 1 + fi -# ================================================== -# 18. Сборка zenith-cli -# ================================================== +# ============================================================ +# 20. Сборка zenith-cli +# ============================================================ +echo echo "[*] Сборка zenith-cli..." su - "$USER_NAME" -c " @@ -494,18 +555,15 @@ su - "$USER_NAME" -c " chmod +x build.sh echo '[*] Запуск build.sh...' + ./build.sh - echo '[*] Проверка результата сборки...' - if [ ! -f './zenith-cli' ]; then - echo '[!] ./zenith-cli не найден после сборки.' + echo '[!] zenith-cli не найден после сборки.' exit 1 fi - if [ ! -x './zenith-cli' ]; then - chmod +x './zenith-cli' - fi + chmod +x './zenith-cli' mkdir -p '$LOCAL_BIN' @@ -513,25 +571,14 @@ su - "$USER_NAME" -c " chmod +x '$LOCAL_BIN/zenith-cli' - echo '[+] zenith-cli успешно собран.' - echo '[+] Установлен в: $LOCAL_BIN/zenith-cli' + echo '[+] zenith-cli установлен.' " -# ================================================== -# 19. Проверка бинарника -# ================================================== - -echo "[*] Проверка zenith-cli..." - -if [ ! -x "$LOCAL_BIN/zenith-cli" ]; then - echo "[!] Бинарник zenith-cli не установлен." - exit 1 -fi - -# ================================================== -# 20. PATH -# ================================================== +# ============================================================ +# 21. PATH +# ============================================================ +echo echo "[*] Настройка PATH..." touch "$PROFILE" @@ -546,20 +593,16 @@ EOF fi -# ================================================== -# 21. XDG_RUNTIME_DIR -# ================================================== - -echo "[*] Настройка XDG_RUNTIME_DIR..." +# ============================================================ +# 22. XDG_RUNTIME_DIR +# ============================================================ if ! grep -qF '# XDG-RUNTIME-DIR' "$PROFILE"; then cat >> "$PROFILE" << 'EOF' # XDG-RUNTIME-DIR -# -# seatd/Wayland требует XDG_RUNTIME_DIR. -# + if [ -z "${XDG_RUNTIME_DIR:-}" ]; then export XDG_RUNTIME_DIR="/tmp/user-$(id -u)" fi @@ -572,16 +615,16 @@ EOF fi -# ================================================== -# 22. Автологин tty1 -# ================================================== +# ============================================================ +# 23. Автологин tty1 +# ============================================================ -echo "[*] Настройка автоматического входа..." +echo +echo "[*] Настройка автологина tty1..." if [ -f /etc/inittab ]; then if [ ! -f /etc/inittab.bak ]; then - echo "[*] Создание резервной копии /etc/inittab..." cp /etc/inittab /etc/inittab.bak fi @@ -593,8 +636,6 @@ if [ -f /etc/inittab ]; then elif ! grep -q '^tty1::respawn:' /etc/inittab; then - echo "[*] Добавление tty1..." - echo \ "tty1::respawn:/sbin/getty -a $USER_NAME 38400 tty1" \ >> /etc/inittab @@ -603,25 +644,23 @@ if [ -f /etc/inittab ]; then else - echo "[!] /etc/inittab не найден." + echo "[!] /etc/inittab отсутствует." echo "[!] Автологин не настроен." fi -# ================================================== -# 23. Автозапуск LabWC -# ================================================== +# ============================================================ +# 24. Автозапуск LabWC +# ============================================================ -echo "[*] Настройка запуска LabWC..." +echo +echo "[*] Настройка автозапуска LabWC..." if ! grep -qF '# LABWC-AUTOSTART' "$PROFILE"; then cat >> "$PROFILE" << 'EOF' # LABWC-AUTOSTART -# -# Запуск LabWC только на tty1. -# if [ "$(tty 2>/dev/null)" = "/dev/tty1" ] && [ -z "${WAYLAND_DISPLAY:-}" ]; then @@ -638,11 +677,12 @@ EOF fi -# ================================================== -# 24. Права -# ================================================== +# ============================================================ +# 25. Права +# ============================================================ -echo "[*] Настройка владельцев файлов..." +echo +echo "[*] Настройка владельцев..." if [ -d "$HOME_DIR/.config" ]; then chown -R "$USER_NAME:$USER_NAME" "$HOME_DIR/.config" @@ -660,112 +700,112 @@ if [ -d "$ZENITH_DIR" ]; then chown -R "$USER_NAME:$USER_NAME" "$ZENITH_DIR" fi -# ================================================== -# 25. Проверка групп -# ================================================== +# ============================================================ +# 26. Финальная проверка +# ============================================================ echo echo "==================================================" -echo "[*] Группы пользователя" +echo "[*] ФИНАЛЬНАЯ ПРОВЕРКА" echo "==================================================" +echo +echo "[*] Пользователь:" id "$USER_NAME" echo -if id -nG "$USER_NAME" | tr ' ' '\n' | grep -qx seat; then - echo "[+] seat: OK" -else - echo "[!] seat: НЕ НАЙДЕНА" -fi - -# ================================================== -# 26. Финальная проверка -# ================================================== - -echo -echo "==================================================" -echo "[*] Финальная проверка" -echo "==================================================" - -printf '%-20s' "LabWC:" -if command -v labwc >/dev/null 2>&1; then +printf '%-25s' "wheel:" +if id -nG "$USER_NAME" | + tr ' ' '\n' | + grep -qx wheel +then echo "OK" else echo "ERROR" fi -printf '%-20s' "Waybar:" -if command -v waybar >/dev/null 2>&1; then +printf '%-25s' "seat:" +if id -nG "$USER_NAME" | + tr ' ' '\n' | + grep -qx seat +then echo "OK" else echo "ERROR" fi -printf '%-20s' "PipeWire:" -if command -v pipewire >/dev/null 2>&1; then - echo "OK" -else - echo "ERROR" -fi - -printf '%-20s' "WirePlumber:" -if command -v wireplumber >/dev/null 2>&1; then - echo "OK" -else - echo "ERROR" -fi - -printf '%-20s' "NetworkManager:" -if command -v nmcli >/dev/null 2>&1; then - echo "OK" -else - echo "ERROR" -fi - -printf '%-20s' "D-Bus:" -if command -v dbus-run-session >/dev/null 2>&1; then - echo "OK" -else - echo "ERROR" -fi - -printf '%-20s' "seatd:" +printf '%-25s' "seatd:" if command -v seatd >/dev/null 2>&1; then echo "OK" else echo "ERROR" fi -printf '%-20s' "seatd service:" -if rc-service seatd status >/dev/null 2>&1; then - echo "RUNNING" +printf '%-25s' "LabWC:" +if command -v labwc >/dev/null 2>&1; then + echo "OK" else - echo "NOT RUNNING" + echo "ERROR" fi -printf '%-20s' "Bash:" +printf '%-25s' "Waybar:" +if command -v waybar >/dev/null 2>&1; then + echo "OK" +else + echo "ERROR" +fi + +printf '%-25s' "PipeWire:" +if command -v pipewire >/dev/null 2>&1; then + echo "OK" +else + echo "ERROR" +fi + +printf '%-25s' "WirePlumber:" +if command -v wireplumber >/dev/null 2>&1; then + echo "OK" +else + echo "ERROR" +fi + +printf '%-25s' "NetworkManager:" +if command -v nmcli >/dev/null 2>&1; then + echo "OK" +else + echo "ERROR" +fi + +printf '%-25s' "D-Bus:" +if command -v dbus-run-session >/dev/null 2>&1; then + echo "OK" +else + echo "ERROR" +fi + +printf '%-25s' "Bash:" if command -v bash >/dev/null 2>&1; then echo "OK" else echo "ERROR" fi -printf '%-20s' "CMake:" +printf '%-25s' "CMake:" if command -v cmake >/dev/null 2>&1; then echo "OK" else echo "ERROR" fi -printf '%-20s' "OpenCV:" +printf '%-25s' "OpenCV:" if apk info -e opencv-dev >/dev/null 2>&1; then echo "OK" else echo "ERROR" fi -printf '%-20s' "zenith-cli:" +printf '%-25s' "zenith-cli:" if [ -x "$LOCAL_BIN/zenith-cli" ]; then echo "OK" else @@ -774,22 +814,23 @@ fi echo echo "==================================================" -echo "[+] Установка завершена." +echo "[+] УСТАНОВКА ЗАВЕРШЕНА" echo "==================================================" echo -echo "[!] Следующий шаг:" +echo "Можно перезагрузиться:" echo echo " reboot" echo -echo "После перезагрузки:" +echo "После reboot:" echo -echo " 1. $USER_NAME будет автоматически авторизован на tty1." -echo " 2. seatd будет запущен OpenRC." -echo " 3. LabWC запустится через dbus-run-session." -echo " 4. Waybar, Mako и NetworkManager applet запустятся автоматически." -echo " 5. PipeWire и WirePlumber будут запущены в пользовательской сессии." -echo " 6. zenith-cli будет доступен как:" +echo " $USER_NAME -> автоматический вход tty1" +echo " tty1 -> LabWC" +echo " LabWC -> Waybar / Mako / PipeWire" +echo " Network -> NetworkManager" +echo " seat -> seatd" echo -echo " zenith-cli" +echo "zenith-cli:" +echo +echo " zenith-cli" echo echo "=================================================="