diff --git a/alphine b/alphine
index 3a27b7c..d9bf66b 100644
--- a/alphine
+++ b/alphine
@@ -130,3 +130,35 @@ if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then
exec labwc
fi
+
+
+apk update
+apk upgrade
+
+setup-wayland-base
+
+apk add labwc labwc-doc \
+ dbus dbus-x11 \
+ foot \
+ rofi \
+ swaybg \
+ swayidle \
+ swaylock \
+ font-dejavu
+
+adduser ivan
+
+dbus-launch labwc
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/alpine_install.sh b/alpine_install.sh
index 86ce437..bf9701e 100644
--- a/alpine_install.sh
+++ b/alpine_install.sh
@@ -1,909 +1,528 @@
#!/bin/sh
# ============================================================
-# LabWC Alpine Setup Script
-# Version 11
-#
-# Запуск:
-#
-# ./setup.sh
-# ./setup.sh ivan
-#
-# Можно запускать от root ИЛИ обычного пользователя.
-#
-# Скрипт автоматически использует sudo.
-#
+# Alpine Linux + labwc Desktop Installer
+# Wayland / labwc / seatd / greetd / NetworkManager / PipeWire
# ============================================================
-set -eu
+echo "=============================================="
+echo " Alpine Linux -> labwc Desktop"
+echo "=============================================="
+echo
-USER_NAME="${1:-ivan}"
-
-HOME_DIR="/home/$USER_NAME"
-PROFILE="$HOME_DIR/.profile"
-
-ZENITH_REPO="https://zenithcode.duckdns.org/s13bby/zenith-cli.git"
-ZENITH_DIR="$HOME_DIR/zenith-cli"
-LOCAL_BIN="$HOME_DIR/.local/bin"
-
-# ============================================================
-# Абсолютный путь к скрипту
-# ============================================================
-
-case "$0" in
- /*)
- SCRIPT_PATH="$0"
- ;;
- *)
- SCRIPT_PATH="$(pwd)/$0"
- ;;
-esac
-
-# ============================================================
-# Проверка имени
-# ============================================================
-
-case "$USER_NAME" in
- ""|*[!a-zA-Z0-9_-]*)
- echo "[!] Некорректное имя пользователя: $USER_NAME"
- exit 1
- ;;
-esac
-
-# ============================================================
-# Автоматический sudo
-# ============================================================
-
-if [ "$(id -u)" -ne 0 ]; then
-
- echo
- echo "=================================================="
- echo "[*] Запущено от пользователя: $(id -un)"
- echo "[*] Нужны root-права."
- echo "=================================================="
- echo
-
- if ! command -v sudo >/dev/null 2>&1; then
-
- echo "[!] sudo не установлен."
- echo
- echo "[!] Выполните один раз от root:"
- echo
- echo " apk add sudo"
- echo
- exit 1
-
- fi
-
- exec sudo sh "$SCRIPT_PATH" "$@"
+# ------------------------------------------------------------
+# Check root
+# ------------------------------------------------------------
+if [ "$(id -u)" != "0" ]; then
+ echo "ERROR: run this script as root."
+ exit 1
fi
-# ============================================================
-# Информация
-# ============================================================
-
-echo
-echo "=================================================="
-echo " LabWC Alpine Setup Script v11"
-echo "=================================================="
-echo
-echo "[*] User: $USER_NAME"
-echo "[*] Home: $HOME_DIR"
-echo "[*] Alpine: $(cat /etc/alpine-release 2>/dev/null || echo unknown)"
-echo
-
-# ============================================================
-# Проверка Alpine
-# ============================================================
+# ------------------------------------------------------------
+# Check Alpine
+# ------------------------------------------------------------
if [ ! -f /etc/alpine-release ]; then
-
- echo "[!] Это не Alpine Linux."
+ echo "ERROR: this script is intended for Alpine Linux."
exit 1
-
fi
-# ============================================================
-# Проверка repositories
-# ============================================================
-
-if [ ! -f /etc/apk/repositories ]; then
-
- echo "[!] /etc/apk/repositories отсутствует."
- exit 1
-
-fi
-
-# ============================================================
-# Функции
-# ============================================================
-
-package_exists() {
- PACKAGE="$1"
-
- apk search -x "$PACKAGE" 2>/dev/null |
- grep -Eq "^${PACKAGE}(-[0-9].*)?$"
-}
-
-
-install_required() {
- PACKAGE="$1"
-
- echo
- echo "[*] Проверка обязательного пакета: $PACKAGE"
-
- if apk info -e "$PACKAGE" >/dev/null 2>&1; then
-
- echo "[+] $PACKAGE уже установлен."
- return 0
-
- fi
-
- if ! package_exists "$PACKAGE"; then
-
- echo
- echo "=================================================="
- echo "[!!!] ОШИБКА"
- echo "=================================================="
- echo
- echo "[!] Обязательный пакет отсутствует:"
- echo
- echo " $PACKAGE"
- echo
- echo "[!] Alpine:"
- cat /etc/alpine-release
- echo
- echo "[!] Репозитории:"
- cat /etc/apk/repositories
- echo
-
- exit 1
-
- fi
-
- apk add "$PACKAGE"
-}
-
-
-install_optional() {
- PACKAGE="$1"
-
- echo
- echo "[*] Необязательный пакет: $PACKAGE"
-
- if apk info -e "$PACKAGE" >/dev/null 2>&1; then
-
- echo "[+] Уже установлен."
- return 0
-
- fi
-
- if package_exists "$PACKAGE"; then
-
- apk add "$PACKAGE"
-
- echo "[+] Установлен."
-
- else
-
- echo "[!] Пакет отсутствует."
- echo "[!] Пропускаем."
-
- fi
-}
-
-
-add_user_group() {
- GROUP_NAME="$1"
-
- # Создаём группу, если её нет
- if ! getent group "$GROUP_NAME" >/dev/null 2>&1; then
-
- echo "[*] Создание группы $GROUP_NAME..."
- addgroup "$GROUP_NAME"
-
- fi
-
- if id -nG "$USER_NAME" 2>/dev/null |
- tr ' ' '\n' |
- grep -qx "$GROUP_NAME"
- then
-
- echo "[+] $USER_NAME уже в группе $GROUP_NAME."
-
- else
-
- echo "[*] Добавление $USER_NAME в группу $GROUP_NAME..."
-
- addgroup "$USER_NAME" "$GROUP_NAME"
-
- fi
-}
-
-
-enable_service() {
- SERVICE="$1"
-
- echo
- echo "[*] Служба: $SERVICE"
-
- if ! command -v rc-service >/dev/null 2>&1; then
-
- echo "[!] OpenRC недоступен."
- return 0
-
- fi
-
- if rc-service "$SERVICE" status >/dev/null 2>&1; then
-
- echo "[+] $SERVICE уже запущен."
-
- else
-
- echo "[*] Запуск $SERVICE..."
-
- rc-service "$SERVICE" start 2>/dev/null || true
-
- fi
-
- rc-update add "$SERVICE" default 2>/dev/null || true
-}
-
-
-check_command() {
- NAME="$1"
- COMMAND="$2"
-
- printf '%-25s' "$NAME:"
-
- if command -v "$COMMAND" >/dev/null 2>&1; then
- echo "OK"
- else
- echo "ERROR"
- fi
-}
-
-# ============================================================
-# Community
-# ============================================================
+ALPINE_VERSION="$(cut -d'.' -f1,2 /etc/alpine-release)"
+echo "Alpine version: $ALPINE_VERSION"
echo
-echo "=================================================="
-echo "[*] Репозиторий community"
-echo "=================================================="
-if grep -qE '^[[:space:]]*[^#[:space:]].*/community/?[[:space:]]*$' \
- /etc/apk/repositories
-then
+# ------------------------------------------------------------
+# Repositories
+# ------------------------------------------------------------
- echo "[+] community уже включён."
+echo "➜ Configure Alpine repositories"
-elif grep -qE '^[[:space:]]*#.*\/community/?[[:space:]]*$' \
- /etc/apk/repositories
-then
-
- echo "[*] Раскомментирование community..."
-
- sed -i \
- 's|^[[:space:]]*#\(.*\/community/?[[:space:]]*\)$|\1|' \
- /etc/apk/repositories
-
-else
-
- echo "[!] community не найден."
- echo
- cat /etc/apk/repositories
- echo
-
- exit 1
-
-fi
-
-# ============================================================
-# APK update
-# ============================================================
-
-echo
-echo "[*] apk update..."
+cat > /etc/apk/repositories << EOF
+https://dl-cdn.alpinelinux.org/alpine/v${ALPINE_VERSION}/main
+https://dl-cdn.alpinelinux.org/alpine/v${ALPINE_VERSION}/community
+EOF
apk update
-# ============================================================
-# Пользователь
-# ============================================================
+# ------------------------------------------------------------
+# Desktop user
+# ------------------------------------------------------------
-echo
-echo "=================================================="
-echo "[*] Пользователь"
-echo "=================================================="
+USER="user"
-if id "$USER_NAME" >/dev/null 2>&1; then
-
- echo "[+] $USER_NAME уже существует."
-
-else
-
- echo "[*] Создание $USER_NAME..."
-
- adduser -D "$USER_NAME"
-
- echo
- echo "[!] Задайте пароль для $USER_NAME вручную:"
- echo " passwd $USER_NAME"
- echo
+echo "➜ Create desktop user: $USER"
+if ! id "$USER" >/dev/null 2>&1; then
+ adduser -D "$USER"
fi
-# ============================================================
-# Базовые пакеты
-# ============================================================
+# sudo
+apk add sudo
-echo
-echo "=================================================="
-echo "[*] Базовые пакеты"
-echo "=================================================="
-
-install_required sudo
-install_required nano
-install_required git
-install_required bash
-install_required build-base
-
-# ============================================================
-# Sudo
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] Настройка sudo"
-echo "=================================================="
-
-if [ -d /etc/sudoers.d ]; then
-
- cat > /etc/sudoers.d/wheel << 'EOF'
-%wheel ALL=(ALL) ALL
+cat > "/etc/sudoers.d/$USER" << EOF
+$USER ALL=(ALL) NOPASSWD: ALL
EOF
- chmod 440 /etc/sudoers.d/wheel
+chmod 0440 "/etc/sudoers.d/$USER"
-else
+echo "✓ User $USER created"
+echo
- if ! grep -qE '^%wheel[[:space:]]+ALL=\(ALL\)[[:space:]]+ALL' \
- /etc/sudoers
- then
+# ------------------------------------------------------------
+# Basic desktop infrastructure
+# ------------------------------------------------------------
- echo '%wheel ALL=(ALL) ALL' >> /etc/sudoers
+echo "➜ Install desktop infrastructure"
+apk add \
+ dbus \
+ dbus-x11 \
+ eudev \
+ seatd \
+ seatd-openrc \
+ polkit \
+ polkit-elogind \
+ font-dejavu \
+ font-noto \
+ font-noto-cjk
+
+# ------------------------------------------------------------
+# User groups
+# ------------------------------------------------------------
+
+echo "➜ Configure user groups"
+
+addgroup "$USER" seat 2>/dev/null || true
+addgroup "$USER" audio 2>/dev/null || true
+addgroup "$USER" video 2>/dev/null || true
+addgroup "$USER" input 2>/dev/null || true
+
+# ------------------------------------------------------------
+# Wayland / labwc
+# ------------------------------------------------------------
+
+echo "★ Install labwc"
+
+apk add \
+ labwc \
+ xwayland
+
+# ------------------------------------------------------------
+# Useful Wayland desktop applications
+# ------------------------------------------------------------
+
+echo "➜ Install Wayland utilities"
+
+apk add \
+ foot \
+ rofi \
+ swaybg \
+ swayidle \
+ swaylock \
+ waybar \
+ wl-clipboard \
+ grim \
+ slurp
+
+# ------------------------------------------------------------
+# File manager / removable devices
+# ------------------------------------------------------------
+
+echo "➜ Install filesystem / removable device support"
+
+apk add \
+ gvfs \
+ gvfs-fuse \
+ gvfs-smb \
+ udisks2 \
+ udisks2-openrc \
+ fuse-openrc
+
+# ------------------------------------------------------------
+# NetworkManager
+# ------------------------------------------------------------
+
+echo "➜ Install NetworkManager"
+
+apk add \
+ networkmanager \
+ networkmanager-openrc \
+ networkmanager-tui
+
+rc-update add networkmanager default
+
+# ------------------------------------------------------------
+# Seat management
+# ------------------------------------------------------------
+
+echo "➜ Configure seatd"
+
+rc-update add seatd default
+
+# ------------------------------------------------------------
+# D-Bus
+# ------------------------------------------------------------
+
+echo "➜ Configure D-Bus"
+
+rc-update add dbus default
+
+# ------------------------------------------------------------
+# PipeWire
+# ------------------------------------------------------------
+
+echo "★ Install PipeWire audio"
+
+apk add \
+ pipewire \
+ pipewire-pulse \
+ pipewire-alsa \
+ pipewire-tools \
+ pipewire-spa-bluez \
+ pipewire-pulse-openrc \
+ wireplumber \
+ wireplumber-openrc
+
+# ------------------------------------------------------------
+# ALSA
+# ------------------------------------------------------------
+
+echo "➜ Install ALSA utilities"
+
+apk add \
+ alsa-utils \
+ alsaconf \
+ alsa-lib
+
+addgroup "$USER" audio 2>/dev/null || true
+
+# ------------------------------------------------------------
+# Bluetooth
+# ------------------------------------------------------------
+
+echo "➜ Install Bluetooth support"
+
+apk add \
+ bluez \
+ bluez-openrc \
+ blueman
+
+rc-update add bluetooth default
+
+# ------------------------------------------------------------
+# Login manager
+# ------------------------------------------------------------
+
+echo "★ Install greetd"
+
+apk add \
+ greetd \
+ greetd-openrc \
+ greetd-agreety
+
+# ------------------------------------------------------------
+# greetd configuration
+# ------------------------------------------------------------
+
+echo "➜ Configure greetd"
+
+mkdir -p /etc/greetd
+
+cat > /etc/greetd/config.toml << EOF
+[terminal]
+vt = 7
+
+[default_session]
+command = "agreety --cmd labwc"
+user = "greetd"
+EOF
+
+# greetd needs access to seatd
+addgroup greetd seat 2>/dev/null || true
+
+# Make greetd wait for seatd
+if [ -f /etc/conf.d/greetd ]; then
+ if ! grep -q '^rc_need=".*seatd' /etc/conf.d/greetd 2>/dev/null; then
+ echo 'rc_need="seatd"' >> /etc/conf.d/greetd
fi
-
fi
-# ============================================================
-# Группы
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] Группы"
-echo "=================================================="
-
-add_user_group wheel
+rc-update add greetd default
# ------------------------------------------------------------
-# seat
-#
-# ВАЖНО:
-# seatd — имя программы/демона.
-# seat — группа.
-#
-# НЕ добавляем пользователя в группу "seatd".
+# XDG user directories
# ------------------------------------------------------------
-if ! getent group seat >/dev/null 2>&1; then
+echo "➜ Create XDG user directories"
- echo "[*] Группа seat отсутствует."
- echo "[*] Создание группы seat..."
+apk add xdg-user-dirs
- addgroup seat
-
-fi
-
-add_user_group seat
-
-# ============================================================
-# Wayland / graphics
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] Wayland / graphics"
-echo "=================================================="
-
-# НЕ используем mesa-dri.
-install_required mesa
-install_required libinput
-install_required seatd
-install_required dbus
-install_required polkit
-
-# ============================================================
-# zenith-cli dependencies
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] zenith-cli dependencies"
-echo "=================================================="
-
-install_required cmake
-install_required curl-dev
-install_required opencv-dev
-
-# ============================================================
-# Desktop
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] Desktop"
-echo "=================================================="
-
-install_required labwc
-install_required alacritty
-install_required waybar
-install_required mako
-install_required swaybg
-install_required wofi
-install_required font-noto
-install_required font-dejavu
-install_required wl-clipboard
-install_required xdg-desktop-portal
-install_required pipewire
-install_required wireplumber
-install_required alsa-utils
-install_required networkmanager
-install_required pcmanfm
-install_required firefox
-install_required swaylock
-
-# ============================================================
-# SDDM (Display Manager)
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] SDDM"
-echo "=================================================="
-
-install_required sddm
-
-# ============================================================
-# Необязательные пакеты
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] Необязательные пакеты"
-echo "=================================================="
-
-# GTK portal может отсутствовать в некоторых конфигурациях.
-install_optional xdg-desktop-portal-gtk
-
-# network-manager-applet может отсутствовать в текущей ветке.
-#
-# Он НЕ нужен для работы NetworkManager.
-# Поэтому не ломаем установку из-за него.
-install_optional network-manager-applet
-
-# ============================================================
-# OpenRC
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] OpenRC"
-echo "=================================================="
-
-enable_service seatd
-enable_service dbus
-enable_service networkmanager
-enable_service sddm
-
-# ============================================================
-# LabWC configuration
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] Конфигурация LabWC"
-echo "=================================================="
-
-mkdir -p "$HOME_DIR/.config/labwc"
+su - "$USER" -c "xdg-user-dirs-update" 2>/dev/null || true
# ------------------------------------------------------------
-# environment
+# labwc configuration
# ------------------------------------------------------------
-cat > "$HOME_DIR/.config/labwc/environment" << 'EOF'
-XDG_CURRENT_DESKTOP=labwc
-XDG_SESSION_DESKTOP=labwc
-XDG_SESSION_TYPE=wayland
+echo "➜ Create labwc configuration"
-MOZ_ENABLE_WAYLAND=1
-QT_QPA_PLATFORM=wayland
-SDL_VIDEODRIVER=wayland
+mkdir -p "/home/$USER/.config/labwc"
-LIBSEAT_BACKEND=seatd
-EOF
-
-# ------------------------------------------------------------
-# autostart
-# ------------------------------------------------------------
-
-cat > "$HOME_DIR/.config/labwc/autostart" << 'EOF'
+cat > "/home/$USER/.config/labwc/autostart" << 'EOF'
#!/bin/sh
-# ============================================================
-# Runtime directory
-# ============================================================
-
-if [ -z "${XDG_RUNTIME_DIR:-}" ]; then
- export XDG_RUNTIME_DIR="/tmp/user-$(id -u)"
+# D-Bus user session
+if command -v dbus-update-activation-environment >/dev/null 2>&1; then
+ dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP
fi
-if [ ! -d "$XDG_RUNTIME_DIR" ]; then
- mkdir -p "$XDG_RUNTIME_DIR"
- chmod 700 "$XDG_RUNTIME_DIR"
+# Wallpaper
+if command -v swaybg >/dev/null 2>&1; then
+ swaybg -c 202020 &
fi
-# ============================================================
-# NetworkManager applet
-#
-# Запускаем ТОЛЬКО если он реально установлен.
-# ============================================================
-
-if command -v nm-applet >/dev/null 2>&1; then
- nm-applet &
-fi
-
-# ============================================================
-# Waybar
-# ============================================================
-
+# Panel
if command -v waybar >/dev/null 2>&1; then
waybar &
fi
-# ============================================================
-# Mako
-# ============================================================
-
-if command -v mako >/dev/null 2>&1; then
- mako &
-fi
-
-# ============================================================
-# PipeWire
-# ============================================================
-
-if command -v pipewire >/dev/null 2>&1; then
-
- if ! pgrep -x pipewire >/dev/null 2>&1; then
- pipewire &
- fi
-
-fi
-
-# ============================================================
-# WirePlumber
-# ============================================================
-
-if command -v wireplumber >/dev/null 2>&1; then
-
- if ! pgrep -x wireplumber >/dev/null 2>&1; then
- wireplumber &
- fi
-
-fi
-EOF
-
-chmod +x "$HOME_DIR/.config/labwc/autostart"
-
-# ============================================================
-# zenith-cli
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] zenith-cli"
-echo "=================================================="
-
-if [ -d "$ZENITH_DIR/.git" ]; then
-
- echo "[+] Репозиторий уже существует."
-
- su - "$USER_NAME" -c "
- set -eu
- cd '$ZENITH_DIR'
- git pull
- "
-
-else
-
- echo "[*] Клонирование..."
-
- su - "$USER_NAME" -c "
- set -eu
- git clone '$ZENITH_REPO' '$ZENITH_DIR'
- "
-
-fi
-
-# ============================================================
-# Проверка исходников
-# ============================================================
-
-if [ ! -f "$ZENITH_DIR/build.sh" ]; then
-
- echo
- echo "[!] build.sh не найден:"
- echo " $ZENITH_DIR/build.sh"
- exit 1
-
-fi
-
-if [ ! -f "$ZENITH_DIR/CMakeLists.txt" ]; then
-
- echo
- echo "[!] CMakeLists.txt не найден:"
- echo " $ZENITH_DIR/CMakeLists.txt"
- exit 1
-
-fi
-
-# ============================================================
-# Сборка
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] Сборка zenith-cli"
-echo "=================================================="
-
-su - "$USER_NAME" -c "
- set -eu
-
- cd '$ZENITH_DIR'
-
- chmod +x build.sh
-
- ./build.sh
-
- if [ ! -f ./zenith-cli ]; then
-
- echo '[!] zenith-cli не найден после сборки.'
-
- exit 1
-
- fi
-
- chmod +x ./zenith-cli
-
- mkdir -p '$LOCAL_BIN'
-
- cp ./zenith-cli '$LOCAL_BIN/zenith-cli'
-
- chmod +x '$LOCAL_BIN/zenith-cli'
-
- echo '[+] zenith-cli установлен.'
-"
-
-# ============================================================
-# PATH
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] PATH"
-echo "=================================================="
-
-touch "$PROFILE"
-
-if ! grep -qF 'export PATH="$HOME/.local/bin:$PATH"' "$PROFILE"; then
-
- cat >> "$PROFILE" << 'EOF'
-
-# User local binaries
-export PATH="$HOME/.local/bin:$PATH"
-EOF
-
-fi
-
-# ============================================================
-# XDG_RUNTIME_DIR
-# ============================================================
-
-if ! grep -qF '# XDG-RUNTIME-DIR' "$PROFILE"; then
-
- cat >> "$PROFILE" << 'EOF'
-
-# XDG-RUNTIME-DIR
-
-if [ -z "${XDG_RUNTIME_DIR:-}" ]; then
- export XDG_RUNTIME_DIR="/tmp/user-$(id -u)"
-fi
-
-if [ ! -d "$XDG_RUNTIME_DIR" ]; then
- mkdir -p "$XDG_RUNTIME_DIR"
- chmod 700 "$XDG_RUNTIME_DIR"
-fi
-EOF
-
-fi
-
-# ============================================================
-# SDDM configuration
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] Настройка SDDM"
-echo "=================================================="
-
-mkdir -p /etc/sddm.conf.d
-
-cat > /etc/sddm.conf.d/wayland.conf << 'EOF'
-[Wayland]
-Compositor=labwc
-
-[General]
-GreeterEnvironment=MOZ_ENABLE_WAYLAND=1,QT_QPA_PLATFORM=wayland,SDL_VIDEODRIVER=wayland
-EOF
-
-echo "[+] SDDM настроен для использования LabWC."
-
-# ============================================================
-# Права
-# ============================================================
-
-echo
-echo "=================================================="
-echo "[*] Права"
-echo "=================================================="
-
-if [ -d "$HOME_DIR/.config" ]; then
-
- chown -R "$USER_NAME:$USER_NAME" \
- "$HOME_DIR/.config"
-
-fi
-
-if [ -f "$PROFILE" ]; then
-
- chown "$USER_NAME:$USER_NAME" \
- "$PROFILE"
-
-fi
-
-if [ -d "$HOME_DIR/.local" ]; then
-
- chown -R "$USER_NAME:$USER_NAME" \
- "$HOME_DIR/.local"
-
-fi
-
-if [ -d "$ZENITH_DIR" ]; then
-
- chown -R "$USER_NAME:$USER_NAME" \
- "$ZENITH_DIR"
-
-fi
-
-# ============================================================
-# Финальная проверка
-# ============================================================
-
-echo
-echo "=================================================="
-echo " ФИНАЛЬНАЯ ПРОВЕРКА"
-echo "=================================================="
-echo
-
-echo "[*] Пользователь:"
-id "$USER_NAME"
-
-echo
-
-printf '%-25s' "wheel:"
-if id -nG "$USER_NAME" |
- tr ' ' '\n' |
- grep -qx wheel
-then
- echo "OK"
-else
- echo "ERROR"
-fi
-
-printf '%-25s' "seat:"
-if id -nG "$USER_NAME" |
- tr ' ' '\n' |
- grep -qx seat
-then
- echo "OK"
-else
- echo "ERROR"
-fi
-
-echo
-
-check_command "seatd" "seatd"
-check_command "LabWC" "labwc"
-check_command "Waybar" "waybar"
-check_command "PipeWire" "pipewire"
-check_command "WirePlumber" "wireplumber"
-check_command "NetworkManager" "nmcli"
-check_command "D-Bus" "dbus-run-session"
-check_command "Bash" "bash"
-check_command "CMake" "cmake"
-check_command "SDDM" "sddm"
-
-echo
-
-printf '%-25s' "OpenCV:"
-if apk info -e opencv-dev >/dev/null 2>&1; then
- echo "OK"
-else
- echo "ERROR"
-fi
-
-printf '%-25s' "nm-applet:"
+# NetworkManager tray
if command -v nm-applet >/dev/null 2>&1; then
- echo "OK"
-else
- echo "OPTIONAL / SKIPPED"
+ nm-applet &
fi
-printf '%-25s' "zenith-cli:"
-if [ -x "$LOCAL_BIN/zenith-cli" ]; then
- echo "OK"
-else
- echo "ERROR"
+# Bluetooth tray
+if command -v blueman-applet >/dev/null 2>&1; then
+ blueman-applet &
fi
+EOF
+
+chmod +x "/home/$USER/.config/labwc/autostart"
+
+# ------------------------------------------------------------
+# Basic labwc menu
+# ------------------------------------------------------------
+
+cat > "/home/$USER/.config/labwc/menu.xml" << 'EOF'
+
+
+
+
+
+EOF
+
+# ------------------------------------------------------------
+# Basic keyboard shortcuts
+# ------------------------------------------------------------
+
+cat > "/home/$USER/.config/labwc/rc.xml" << 'EOF'
+
+
+
+
+
+
+
+
+
+ foot
+
+
+
+
+
+ rofi -show drun
+
+
+
+
+
+ swaylock
+
+
+
+
+
+
+
+
+
+
+EOF
+
+# ------------------------------------------------------------
+# Waybar configuration
+# ------------------------------------------------------------
+
+mkdir -p "/home/$USER/.config/waybar"
+
+cat > "/home/$USER/.config/waybar/config" << 'EOF'
+[
+ {
+ "layer": "top",
+ "position": "top",
+ "modules-left": [
+ "wlr/workspaces"
+ ],
+ "modules-center": [
+ "clock"
+ ],
+ "modules-right": [
+ "network",
+ "pulseaudio",
+ "battery"
+ ]
+ }
+]
+EOF
+
+cat > "/home/$USER/.config/waybar/style.css" << 'EOF'
+* {
+ border: none;
+ border-radius: 0;
+ font-family: sans-serif;
+ font-size: 13px;
+}
+
+window#waybar {
+ background: rgba(30, 30, 30, 0.95);
+ color: #ffffff;
+}
+
+#workspaces button {
+ padding: 0 8px;
+ color: #aaaaaa;
+}
+
+#workspaces button.active {
+ color: #ffffff;
+ background: #444444;
+}
+
+#clock,
+#network,
+#pulseaudio,
+#battery {
+ padding: 0 10px;
+}
+EOF
+
+# ------------------------------------------------------------
+# Permissions
+# ------------------------------------------------------------
+
+echo "➜ Fix user permissions"
+
+chown -R "$USER:$USER" "/home/$USER/.config"
+
+# ------------------------------------------------------------
+# Useful software
+# ------------------------------------------------------------
+
+echo "★ Install basic software"
+
+apk add \
+ htop \
+ neofetch \
+ curl \
+ wget \
+ git \
+ nano \
+ less \
+ file \
+ unzip \
+ zip
+
+# ------------------------------------------------------------
+# Optional browser
+# ------------------------------------------------------------
+
+# Uncomment if required:
+#
+# apk add firefox
+#
+# or:
+#
+# apk add chromium
+
+# ------------------------------------------------------------
+# Enable services
+# ------------------------------------------------------------
+
+echo "➜ Enable desktop services"
+
+rc-update add dbus default
+rc-update add seatd default
+rc-update add networkmanager default
+rc-update add bluetooth default
+rc-update add greetd default
+
+# ------------------------------------------------------------
+# Start services when possible
+# ------------------------------------------------------------
+
+echo "➜ Start services"
+
+rc-service dbus start 2>/dev/null || true
+rc-service seatd start 2>/dev/null || true
+rc-service networkmanager start 2>/dev/null || true
+rc-service bluetooth start 2>/dev/null || true
+
+# Do NOT start greetd here.
+# It will start automatically after reboot.
+
+# ------------------------------------------------------------
+# Final information
+# ------------------------------------------------------------
echo
-echo "=================================================="
-echo " УСТАНОВКА ЗАВЕРШЕНА"
-echo "=================================================="
+echo "=============================================="
+echo " ★★★ Alpine + labwc installation complete ★★★"
+echo "=============================================="
echo
-echo "[+] Пользователь: $USER_NAME"
-echo "[+] LabWC установлен."
-echo "[+] NetworkManager установлен."
-echo "[+] seatd установлен."
-echo "[+] PipeWire установлен."
-echo "[+] SDDM установлен."
-echo "[+] zenith-cli установлен."
+echo "Desktop user: $USER"
echo
-echo "[!] network-manager-applet не является обязательным."
-echo "[!] Если его нет — NetworkManager всё равно работает."
+echo "IMPORTANT:"
echo
-echo "[!] Перезагрузка:"
+echo "Set a password for the desktop user:"
+echo
+echo " passwd $USER"
+echo
+echo "Then reboot:"
echo
echo " reboot"
echo
-echo "После перезагрузки:"
+echo "After reboot:"
echo
-echo " 1. SDDM запустится автоматически"
-echo " 2. Выберите пользователя: $USER_NAME"
-echo " 3. Введите пароль"
-echo " 4. Сессия LabWC (Wayland) запустится"
-echo " 5. Waybar"
-echo " 6. Mako"
-echo " 7. PipeWire / WirePlumber"
-echo " 8. NetworkManager"
+echo " greetd -> labwc"
echo
-echo "zenith-cli:"
+echo "Wayland compositor : labwc"
+echo "Seat manager : seatd"
+echo "Login manager : greetd"
+echo "Audio : PipeWire + WirePlumber"
+echo "Network : NetworkManager"
echo
-echo " zenith-cli"
-echo
-echo "=================================================="
\ No newline at end of file
+echo "=============================================="
\ No newline at end of file