diff --git a/alphine b/alphine
deleted file mode 100644
index d9bf66b..0000000
--- a/alphine
+++ /dev/null
@@ -1,164 +0,0 @@
-#install guide labwc configure by s13bby
-
-
-#after install needed
-
-#uncomment community repos
-echo "http://dl-cdn.alpinelinux.org/alpine/v3.24/community" >> /etc/apk/repositories
-
-#or
-
-#sed -i 's/#\(.*community\)/\1/' /etc/apk/repositories
-
-apk update
-apk add sudo nano
-adduser ivan wheel
-nano /etc/sudoers
-
-#and uncomment line %wheel ALL=(ALL) ALL
-
-
-#first needed packages
-
-sudo
-nano
-git
-
-#after install this packages
-
-#clone repo ; change directory to clone repo ; add executable flag to install.sh ; execute install.sh
-git clone https://zenithcode.duckdns.org/s13bby/labwc-alpine ; cd labwc-alpine ; chmod +x install.sh ; ./install.sh
-
-#install.sh include all stuff write bellow
-
-
-#install this packages
-gcc
-g++
-curl
-libcurl
-opencv
-
-#prepare before install wayland stack
-
-#install this packages
-
-mesa
-mesa-dri
-libinput
-seatd
-dbus
-polkit
-
-#after install do
-
-addgroup $USER video
-addgroup $USER input
-addgroup $USER seat
-
-rc-update add seatd default
-rc-service seatd start
-
-#after install this packages
-
-labwc
-alacritty (or another terminal emulator what do u like)
-waybar
-mako
-swaybg
-wofi
-font-noto
-font-dejavu
-wl-clipboard
-xdg-desktop-portal
-xdg-desktop-portal-gtk
-pipewire
-wireplumber
-alsa-utils
-networkmanager
-nm-applet
-pcmanfm-gtk3
-firefox
-swaylock
-
-
-#enviroment config labwc
-#
-#XDG_CURRENT_DESKTOP=labwc
-#XDG_SESSION_TYPE=wayland
-#MOZ_ENABLE_WAYLAND=1
-#QT_QPA_PLATFORM=wayland
-#SDL_VIDEODRIVER=wayland
-
-
-#autostart config labwc
-#
-#nm-applet &
-#waybar &
-#wireplumber &
-#pipewire &
-#wofi &
-
-#clone repo ; change directory to clone repo ; add executable flag to build.sh ; execute build.sh
-git clone https://zenithcode.duckdns.org/s13bby/zenith-cli.git ; cd zenith-cli/ ; chmod +x build.sh ; ./build.sh
-
-mkdir -p ~/.local/bin ; cp zenith-cli ~/.local/bin/ ; chmod +x ~/.local/bin/zenith-cli
-
-echo $PATH | grep -o ".local/bin"
-
-#if output in none, do
-
-#export PATH="$HOME/.local/bin:$PATH"
-
-
-#add automatic start labwc
-
-nano /etc/inittab
-
-#find line
-#tty1::respawn:/sbin/getty 38400 tty1
-
-#change to, where "username" is ur username
-#tty1::respawn:/bin/sh -c "while true; do /sbin/getty -a username 38400 tty1; done"
-
-
-nano ~/.profile
-
-#and write this
-
-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 bf9701e..f81474b 100644
--- a/alpine_install.sh
+++ b/alpine_install.sh
@@ -1,528 +1,548 @@
#!/bin/sh
+# =============================================================================
+# Labwc Installer for Alpine Linux (KVM/QEMU)
+# =============================================================================
+# Запускать от root: sh install_labwc.sh [username]
+# Если username не указан — используется текущий не-root пользователь
+# =============================================================================
-# ============================================================
-# Alpine Linux + labwc Desktop Installer
-# Wayland / labwc / seatd / greetd / NetworkManager / PipeWire
-# ============================================================
+set -e
-echo "=============================================="
-echo " Alpine Linux -> labwc Desktop"
-echo "=============================================="
-echo
+# --- Цвета ---
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+NC='\033[0m' # No Color
-# ------------------------------------------------------------
-# Check root
-# ------------------------------------------------------------
+info() { printf "${BLUE}[INFO]${NC} %s\n" "$1"; }
+ok() { printf "${GREEN}[OK]${NC} %s\n" "$1"; }
+warn() { printf "${YELLOW}[WARN]${NC} %s\n" "$1"; }
+error() { printf "${RED}[ERROR]${NC} %s\n" "$1"; }
-if [ "$(id -u)" != "0" ]; then
- echo "ERROR: run this script as root."
+# --- Проверка root ---
+if [ "$(id -u)" -ne 0 ]; then
+ error "Этот скрипт нужно запускать от root (su или sudo)"
exit 1
fi
-# ------------------------------------------------------------
-# Check Alpine
-# ------------------------------------------------------------
-
-if [ ! -f /etc/alpine-release ]; then
- echo "ERROR: this script is intended for Alpine Linux."
- exit 1
-fi
-
-ALPINE_VERSION="$(cut -d'.' -f1,2 /etc/alpine-release)"
-
-echo "Alpine version: $ALPINE_VERSION"
-echo
-
-# ------------------------------------------------------------
-# Repositories
-# ------------------------------------------------------------
-
-echo "➜ Configure Alpine repositories"
-
-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
-# ------------------------------------------------------------
-
-USER="user"
-
-echo "➜ Create desktop user: $USER"
-
-if ! id "$USER" >/dev/null 2>&1; then
- adduser -D "$USER"
-fi
-
-# sudo
-apk add sudo
-
-cat > "/etc/sudoers.d/$USER" << EOF
-$USER ALL=(ALL) NOPASSWD: ALL
-EOF
-
-chmod 0440 "/etc/sudoers.d/$USER"
-
-echo "✓ User $USER created"
-echo
-
-# ------------------------------------------------------------
-# Basic desktop infrastructure
-# ------------------------------------------------------------
-
-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
+# --- Определение пользователя ---
+if [ -n "$1" ]; then
+ TARGET_USER="$1"
+else
+ # Ищем первого не-root пользователя с домашней директорией
+ TARGET_USER=$(awk -F: '$3 >= 1000 && $3 < 65534 {print $1; exit}' /etc/passwd)
+ if [ -z "$TARGET_USER" ]; then
+ error "Не найден обычный пользователь. Создайте пользователя: adduser username"
+ error "Или запустите: sh $0 username"
+ exit 1
fi
fi
-rc-update add greetd default
-
-# ------------------------------------------------------------
-# XDG user directories
-# ------------------------------------------------------------
-
-echo "➜ Create XDG user directories"
-
-apk add xdg-user-dirs
-
-su - "$USER" -c "xdg-user-dirs-update" 2>/dev/null || true
-
-# ------------------------------------------------------------
-# labwc configuration
-# ------------------------------------------------------------
-
-echo "➜ Create labwc configuration"
-
-mkdir -p "/home/$USER/.config/labwc"
-
-cat > "/home/$USER/.config/labwc/autostart" << 'EOF'
-#!/bin/sh
-
-# 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
+if ! id "$TARGET_USER" >/dev/null 2>&1; then
+ error "Пользователь '$TARGET_USER' не существует"
+ exit 1
fi
-# Wallpaper
-if command -v swaybg >/dev/null 2>&1; then
- swaybg -c 202020 &
+USER_UID=$(id -u "$TARGET_USER")
+USER_GID=$(id -g "$TARGET_USER")
+USER_HOME=$(getent passwd "$TARGET_USER" | cut -d: -f6)
+
+info "Целевой пользователь: $TARGET_USER (uid=$USER_UID, home=$USER_HOME)"
+
+# --- Добавление community репозитория ---
+info "Настройка репозиториев..."
+ALPINE_VERSION=$(cat /etc/alpine-release | cut -d'.' -f1,2)
+COMMUNITY_URL="https://dl-cdn.alpinelinux.org/alpine/v${ALPINE_VERSION}/community"
+
+if ! grep -q "$COMMUNITY_URL" /etc/apk/repositories 2>/dev/null; then
+ echo "$COMMUNITY_URL" >> /etc/apk/repositories
+ ok "Добавлен community репозиторий"
+else
+ ok "Community репозиторий уже настроен"
fi
-# Panel
-if command -v waybar >/dev/null 2>&1; then
- waybar &
-fi
+apk update
-# NetworkManager tray
-if command -v nm-applet >/dev/null 2>&1; then
- nm-applet &
-fi
+# --- Установка пакетов ---
+info "Установка labwc и зависимостей..."
-# Bluetooth tray
-if command -v blueman-applet >/dev/null 2>&1; then
- blueman-applet &
+PACKAGES="
+ labwc
+ wlroots
+ seatd
+ seatd-launch
+ elogind
+ polkit-elogind
+ wayland-utils
+ wayland-protocols
+ mesa-dri-gallium
+ mesa-va-gallium
+ libseat
+ xf86-video-qxl
+ xf86-video-virtio
+ xwayland
+ foot
+ waybar
+ wofi
+ swaybg
+ swayidle
+ swaylock
+ mako
+ grim
+ slurp
+ wl-clipboard
+ xdg-utils
+ font-dejavu
+ font-noto
+ adwaita-icon-theme
+ papirus-icon-theme
+ pipewire
+ wireplumber
+ pipewire-pulse
+ pavucontrol
+"
+
+apk add $PACKAGES
+ok "Пакеты установлены"
+
+# --- Настройка служб ---
+info "Настройка служб..."
+
+rc-update add seatd default 2>/dev/null || true
+rc-update add elogind default 2>/dev/null || true
+rc-update add pipewire default 2>/dev/null || true
+
+rc-service seatd start 2>/dev/null || true
+rc-service elogind start 2>/dev/null || true
+
+ok "Службы настроены"
+
+# --- Права пользователя ---
+info "Настройка прав пользователя..."
+
+# Добавляем пользователя в необходимые группы
+for group in seat video audio input; do
+ if getent group "$group" >/dev/null 2>&1; then
+ adduser "$TARGET_USER" "$group" 2>/dev/null || true
+ fi
+done
+
+ok "Пользователь $TARGET_USER добавлен в группы"
+
+# --- Создание XDG_RUNTIME_DIR ---
+info "Настройка XDG_RUNTIME_DIR..."
+
+RUNDIR="/run/user/$USER_UID"
+mkdir -p "$RUNDIR"
+chown "$TARGET_USER:$TARGET_USER" "$RUNDIR"
+chmod 700 "$RUNDIR"
+
+# Добавляем в /etc/profile.d для persistency
+mkdir -p /etc/profile.d
+cat > /etc/profile.d/xdg-runtime.sh << 'EOF'
+if [ -z "$XDG_RUNTIME_DIR" ]; then
+ export XDG_RUNTIME_DIR=/run/user/$(id -u)
+fi
+if [ ! -d "$XDG_RUNTIME_DIR" ]; then
+ mkdir -p "$XDG_RUNTIME_DIR"
+ chmod 700 "$XDG_RUNTIME_DIR"
fi
EOF
+chmod 644 /etc/profile.d/xdg-runtime.sh
+ok "XDG_RUNTIME_DIR настроен"
-chmod +x "/home/$USER/.config/labwc/autostart"
+# --- Конфигурация labwc ---
+info "Создание конфигурации labwc..."
-# ------------------------------------------------------------
-# Basic labwc menu
-# ------------------------------------------------------------
+LABWC_DIR="$USER_HOME/.config/labwc"
+mkdir -p "$LABWC_DIR"
-cat > "/home/$USER/.config/labwc/menu.xml" << 'EOF'
+# rc.xml — только если не существует
+if [ ! -f "$LABWC_DIR/rc.xml" ]; then
+ cat > "$LABWC_DIR/rc.xml" << 'EOF'
-
-
-
-
-EOF
-
-# ------------------------------------------------------------
-# Basic keyboard shortcuts
-# ------------------------------------------------------------
-
-cat > "/home/$USER/.config/labwc/rc.xml" << 'EOF'
-
-
+
+ 8
+ no
+
-
-
+
+ Clearlooks
+ 8
+
+ sans
+ 10
+
+
+ sans
+ 10
+
+
+ sans
+ 10
+
+
-
-
- foot
-
-
-
-
-
- rofi -show drun
-
-
-
-
-
- swaylock
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
EOF
+ ok "Создан $LABWC_DIR/rc.xml"
+else
+ warn "$LABWC_DIR/rc.xml уже существует, пропускаю"
+fi
-# ------------------------------------------------------------
-# Waybar configuration
-# ------------------------------------------------------------
+# autostart — только если не существует
+if [ ! -f "$LABWC_DIR/autostart" ]; then
+ cat > "$LABWC_DIR/autostart" << 'EOF'
+#!/bin/sh
+# Автозапуск labwc
-mkdir -p "/home/$USER/.config/waybar"
+# Фон
+swaybg -c '#2e3440' &
-cat > "/home/$USER/.config/waybar/config" << 'EOF'
-[
- {
- "layer": "top",
- "position": "top",
- "modules-left": [
- "wlr/workspaces"
- ],
- "modules-center": [
- "clock"
- ],
- "modules-right": [
- "network",
- "pulseaudio",
- "battery"
- ]
- }
-]
+# Панель
+waybar &
+
+# Уведомления
+mako &
+
+# Буфер обмена
+wl-paste --watch cliphist store &
+
+# Экранный блокировщик при простое
+swayidle -w \
+ timeout 300 'swaylock -f -c 000000' \
+ timeout 600 'wlopm --off \*' \
+ resume 'wlopm --on \*' \
+ before-sleep 'swaylock -f -c 000000' &
EOF
+ chmod +x "$LABWC_DIR/autostart"
+ ok "Создан $LABWC_DIR/autostart"
+else
+ warn "$LABWC_DIR/autostart уже существует, пропускаю"
+fi
-cat > "/home/$USER/.config/waybar/style.css" << 'EOF'
+# menu.xml — контекстное меню
+if [ ! -f "$LABWC_DIR/menu.xml" ]; then
+ cat > "$LABWC_DIR/menu.xml" << 'EOF'
+
+
+
+
+EOF
+ ok "Создан $LABWC_DIR/menu.xml"
+else
+ warn "$LABWC_DIR/menu.xml уже существует, пропускаю"
+fi
+
+# --- Настройка waybar ---
+info "Настройка waybar..."
+
+WAYBAR_DIR="$USER_HOME/.config/waybar"
+mkdir -p "$WAYBAR_DIR"
+
+if [ ! -f "$WAYBAR_DIR/config" ]; then
+ cat > "$WAYBAR_DIR/config" << 'EOF'
+{
+ "layer": "top",
+ "position": "top",
+ "height": 30,
+ "spacing": 4,
+ "modules-left": ["sway/workspaces", "sway/window"],
+ "modules-center": ["clock"],
+ "modules-right": ["pulseaudio", "network", "cpu", "memory", "tray"],
+
+ "clock": {
+ "format": "{:%Y-%m-%d %H:%M}",
+ "tooltip-format": "{:%Y %B}\n{calendar}",
+ "format-alt": "{:%H:%M:%S}"
+ },
+
+ "cpu": {
+ "format": "CPU {usage}%",
+ "tooltip": false
+ },
+
+ "memory": {
+ "format": "RAM {}%"
+ },
+
+ "network": {
+ "format-wifi": "WiFi {signalStrength}%",
+ "format-ethernet": "Eth {ipaddr}/{cidr}",
+ "tooltip-format": "{ifname} via {gwaddr}",
+ "format-linked": "{ifname} (No IP)",
+ "format-disconnected": "Disconnected",
+ "format-alt": "{ifname}: {ipaddr}/{cidr}"
+ },
+
+ "pulseaudio": {
+ "format": "Vol {volume}%",
+ "format-muted": "Muted",
+ "on-click": "pavucontrol"
+ },
+
+ "tray": {
+ "spacing": 10
+ }
+}
+EOF
+ ok "Создан $WAYBAR_DIR/config"
+else
+ warn "$WAYBAR_DIR/config уже существует, пропускаю"
+fi
+
+if [ ! -f "$WAYBAR_DIR/style.css" ]; then
+ cat > "$WAYBAR_DIR/style.css" << 'EOF'
* {
border: none;
border-radius: 0;
- font-family: sans-serif;
+ font-family: "DejaVu Sans", sans-serif;
font-size: 13px;
+ min-height: 0;
}
window#waybar {
- background: rgba(30, 30, 30, 0.95);
- color: #ffffff;
+ background-color: #2e3440;
+ color: #d8dee9;
+ transition-property: background-color;
+ transition-duration: .5s;
}
#workspaces button {
- padding: 0 8px;
- color: #aaaaaa;
+ padding: 0 10px;
+ color: #d8dee9;
}
-#workspaces button.active {
- color: #ffffff;
- background: #444444;
+#workspaces button.focused {
+ background-color: #4c566a;
+ color: #eceff4;
+}
+
+#workspaces button.urgent {
+ background-color: #bf616a;
}
#clock,
+#cpu,
+#memory,
#network,
#pulseaudio,
-#battery {
+#tray {
padding: 0 10px;
+ margin: 0 4px;
+ color: #d8dee9;
+}
+
+#clock {
+ background-color: #434c5e;
+}
+
+#tray {
+ background-color: #3b4252;
}
EOF
+ ok "Создан $WAYBAR_DIR/style.css"
+else
+ warn "$WAYBAR_DIR/style.css уже существует, пропускаю"
+fi
-# ------------------------------------------------------------
-# Permissions
-# ------------------------------------------------------------
+# --- Настройка foot (терминал) ---
+info "Настройка foot..."
-echo "➜ Fix user permissions"
+FOOT_DIR="$USER_HOME/.config/foot"
+mkdir -p "$FOOT_DIR"
-chown -R "$USER:$USER" "/home/$USER/.config"
+if [ ! -f "$FOOT_DIR/foot.ini" ]; then
+ cat > "$FOOT_DIR/foot.ini" << 'EOF'
+[main]
+font=monospace:size=10
+pad=8x8
-# ------------------------------------------------------------
-# Useful software
-# ------------------------------------------------------------
+[scrollback]
+lines=10000
-echo "★ Install basic software"
+[cursor]
+style=block
+blink=no
-apk add \
- htop \
- neofetch \
- curl \
- wget \
- git \
- nano \
- less \
- file \
- unzip \
- zip
+[colors]
+alpha=0.95
+background=2e3440
+foreground=d8dee9
+regular0=3b4252
+regular1=bf616a
+regular2=a3be8c
+regular3=ebcb8b
+regular4=81a1c1
+regular5=b48ead
+regular6=88c0d0
+regular7=e5e9f0
+EOF
+ ok "Создан $FOOT_DIR/foot.ini"
+else
+ warn "$FOOT_DIR/foot.ini уже существует, пропускаю"
+fi
-# ------------------------------------------------------------
-# Optional browser
-# ------------------------------------------------------------
+# --- Настройка mako (уведомления) ---
+info "Настройка mako..."
-# Uncomment if required:
-#
-# apk add firefox
-#
-# or:
-#
-# apk add chromium
+MAKO_DIR="$USER_HOME/.config/mako"
+mkdir -p "$MAKO_DIR"
-# ------------------------------------------------------------
-# Enable services
-# ------------------------------------------------------------
+if [ ! -f "$MAKO_DIR/config" ]; then
+ cat > "$MAKO_DIR/config" << 'EOF'
+font=DejaVu Sans 10
+background-color=#2e3440
+text-color=#d8dee9
+width=300
+height=100
+margin=10
+padding=10
+border-size=2
+border-color=#4c566a
+border-radius=8
+progress-color=over #88c0d0
+icons=1
+max-icon-size=48
+layer=overlay
+anchor=top-right
+default-timeout=5000
+EOF
+ ok "Создан $MAKO_DIR/config"
+else
+ warn "$MAKO_DIR/config уже существует, пропускаю"
+fi
-echo "➜ Enable desktop services"
+# --- Настройка автозапуска labwc при входе ---
+info "Настройка автозапуска labwc..."
-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
+BASH_PROFILE="$USER_HOME/.bash_profile"
+AUTOSTART_MARKER="# === labwc autostart ==="
-# ------------------------------------------------------------
-# Start services when possible
-# ------------------------------------------------------------
+if [ -f "$BASH_PROFILE" ] && grep -q "$AUTOSTART_MARKER" "$BASH_PROFILE" 2>/dev/null; then
+ warn "Автозапуск labwc уже настроен в .bash_profile"
+else
+ cat >> "$BASH_PROFILE" << EOF
-echo "➜ Start services"
+$AUTOSTART_MARKER
+if [ -z "\$WAYLAND_DISPLAY" ] && [ "\$(tty)" = "/dev/tty1" ]; then
+ exec labwc
+fi
+# === end labwc autostart ===
+EOF
+ ok "Автозапуск labwc добавлен в .bash_profile"
+fi
-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
+# --- Права на конфиги ---
+chown -R "$TARGET_USER:$TARGET_USER" "$USER_HOME/.config"
-# Do NOT start greetd here.
-# It will start automatically after reboot.
+# --- Создание директорий ---
+mkdir -p "$USER_HOME/Pictures" "$USER_HOME/Downloads"
+chown "$TARGET_USER:$TARGET_USER" "$USER_HOME/Pictures" "$USER_HOME/Downloads"
-# ------------------------------------------------------------
-# Final information
-# ------------------------------------------------------------
-
-echo
-echo "=============================================="
-echo " ★★★ Alpine + labwc installation complete ★★★"
-echo "=============================================="
-echo
-echo "Desktop user: $USER"
-echo
-echo "IMPORTANT:"
-echo
-echo "Set a password for the desktop user:"
-echo
-echo " passwd $USER"
-echo
-echo "Then reboot:"
-echo
-echo " reboot"
-echo
-echo "After reboot:"
-echo
-echo " greetd -> labwc"
-echo
-echo "Wayland compositor : labwc"
-echo "Seat manager : seatd"
-echo "Login manager : greetd"
-echo "Audio : PipeWire + WirePlumber"
-echo "Network : NetworkManager"
-echo
-echo "=============================================="
\ No newline at end of file
+# --- Финал ---
+echo ""
+echo "============================================================"
+echo " Labwc установлен и настроен!"
+echo "============================================================"
+echo ""
+echo "Пользователь: $TARGET_USER"
+echo ""
+echo "Горячие клавиши:"
+echo " Win+Enter — Терминал (foot)"
+echo " Win+D — Меню приложений (wofi)"
+echo " Win+Shift+D — Запуск команды (wofi --show run)"
+echo " Win+L — Блокировка экрана"
+echo " Win+Q — Закрыть окно"
+echo " Win+F — Развернуть окно"
+echo " Win+1..4 — Переключение рабочих столов"
+echo " Print — Скриншот области"
+echo " Win+Shift+E — Выход из labwc"
+echo ""
+echo "Действия после установки:"
+echo " 1. Перезагрузитесь: reboot"
+echo " 2. Войдите как $TARGET_USER на tty1"
+echo " 3. Labwc запустится автоматически"
+echo ""
+echo "Если labwc не запустился автоматически:"
+echo " login: $TARGET_USER"
+echo " $ labwc"
+echo ""
+ok "Установка завершена!"
\ No newline at end of file