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' - - - - - - foot - - - - - - rofi -show drun - - - - - - - - - - - - - - -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