15-08-2026-22:25

This commit is contained in:
2026-08-15 22:25:46 +06:00
parent 65477ea83c
commit 408f76299e
+183
View File
@@ -0,0 +1,183 @@
#!/bin/sh
# =============================================================================
# Void Linux Labwc Stack Installer
# Запуск: sudo sh void-labwc-install.sh
# =============================================================================
set -e # Остановка при ошибке
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log() { printf "${GREEN}[✓]${NC} %s\n" "$1"; }
warn() { printf "${YELLOW}[!]${NC} %s\n" "$1"; }
error() { printf "${RED}[✗]${NC} %s\n" "$1"; exit 1; }
# Проверка root
if [ "$(id -u)" -ne 0 ]; then
error "Скрипт нужно запускать от root: sudo sh $0"
fi
# Определение текущего пользователя (не root)
REAL_USER="${SUDO_USER:-$USER}"
if [ "$REAL_USER" = "root" ]; then
error "Нельзя запускать от root напрямую. Используйте: sudo -u ваш_пользователь sh $0\nИли запустите от обычного пользователя через sudo."
fi
echo ""
echo "========================================="
echo " Void Linux Labwc Stack Installer"
echo " Пользователь: $REAL_USER"
echo "========================================="
echo ""
# ===========================================================================
# ЭТАП 1: Репозитории и базовое обновление
# ===========================================================================
log "Этап 1/4: Обновление репозиториев..."
xbps-install -Sy void-repo-nonfree || error "Не удалось добавить nonfree репозиторий"
xbps-install -Syu base-system || error "Не удалось обновить base-system"
# ===========================================================================
# ЭТАП 2: Установка пакетов
# ===========================================================================
log "Этап 2/4: Установка пакетов..."
PACKAGES="
curl wget tar unar nodejs npm
labwc waybar swaylock swayidle polkit-gnome
dolphin kate firefox pipewire kitty
v2ray v2rayA telegram htop gparted pavucontrol qdirstat
easyeffects lsp-plugins-lv2 obsidian ristretto mpv
wofi cliphist sddm pango xorg-server-xwayland
mesa-dri nvidia-open-dkms wl-clipboard gtk-layer-shell
grim slurp swaybg mako seatd dbus polkit
fontconfig noto-fonts-ttf ttf-dejavu ttf-jetbrains-mono ttf-font-awesome
alsa-pipewire wireplumber
xdg-desktop-portal-wlr xdg-desktop-portal-gtk
qt6-wayland qt5-wayland qt5ct qt6ct
fuse fuse-common ca-certificates xdg-utils
dhcpcd sudo acpid breeze-icons adwaita-icon-theme
ffmpeg libnotify unzip zip p7zip linux-firmware
"
# Убираем пустые строки и устанавливаем
echo "$PACKAGES" | tr '\n' ' ' | xargs xbps-install -Sy || {
warn "Некоторые пакеты не найдены. Попытка установки по одному..."
for pkg in $PACKAGES; do
if ! xbps-install -Sy "$pkg" 2>/dev/null; then
warn "Пропущен пакет: $pkg (не найден в репозитории)"
fi
done
}
log "Все доступные пакеты установлены."
# ===========================================================================
# ЭТАП 3: Настройка сервисов runit
# ===========================================================================
log "Этап 3/4: Настройка сервисов runit..."
enable_service() {
svc="$1"
if [ -d "/etc/sv/$svc" ]; then
if [ ! -L "/var/service/$svc" ]; then
ln -s "/etc/sv/$svc" "/var/service/$svc"
log "Сервис включён: $svc"
else
log "Сервис уже включён: $svc"
fi
else
warn "Сервис не найден: /etc/sv/$svc (пропустим)"
fi
}
enable_service dbus
enable_service seatd
enable_service sddm
enable_service pipewire
enable_service wireplumber
enable_service dhcpcd
enable_service acpid
# Добавление пользователя в необходимые группы
log "Настройка групп пользователя $REAL_USER..."
usermod -aG _seatd,audio,video,wheel "$REAL_USER"
log "Пользователь добавлен в группы: _seatd, audio, video, wheel"
# ===========================================================================
# ЭТАП 4: Пост-установочная настройка
# ===========================================================================
log "Этап 4/4: Пост-установочная настройка..."
# ALSA → PipeWire конфиг
mkdir -p /etc/alsa/conf.d
ln -sf /usr/share/alsa/alsa.conf.d/50-pipewire.conf /etc/alsa/conf.d/
ln -sf /usr/share/alsa/alsa.conf.d/99-pipewire-default.conf /etc/alsa/conf.d/
log "ALSA настроен на использование PipeWire"
# SDDM Wayland сессия для Labwc
SESSION_FILE="/usr/share/wayland-sessions/labwc.desktop"
if [ ! -f "$SESSION_FILE" ]; then
mkdir -p /usr/share/wayland-sessions
cat > "$SESSION_FILE" << 'EOF'
[Desktop Entry]
Name=Labwc
Comment=A wlroots-based windowing compositor
Exec=labwc
Type=Application
DesktopNames=wlroots
EOF
log "Создана сессия Labwc для SDDM"
else
log "Сессия Labwc для SDDM уже существует"
fi
# NVIDIA DRM modeset (необходимо для Wayland + NVIDIA)
GRUB_CMDLINE="nvidia_drm.modeset=1"
if grep -q "$GRUB_CMDLINE" /etc/default/grub 2>/dev/null; then
log "nvidia_drm.modeset=1 уже прописан в GRUB"
else
sed -i "s/GRUB_CMDLINE_LINUX=\"/&$GRUB_CMDLINE /" /etc/default/grub
update-grub 2>/dev/null || grub-mkconfig -o /boot/grub/grub.cfg 2>/dev/null || \
warn "Не удалось обновить GRUB автоматически. Добавьте '$GRUB_CMDLINE' в GRUB_CMDLINE_LINUX вручную!"
log "Добавлен nvidia_drm.modeset=1 в GRUB"
fi
# Переменные окружения для NVIDIA + Wayland
ENV_FILE="/etc/environment"
NVIDIA_VARS='WLR_NO_HARDWARE_CURSORS=1
__GLX_VENDOR_LIBRARY_NAME=nvidia
GBM_BACKEND=nvidia-drm'
if ! grep -q "WLR_NO_HARDWARE_CURSORS" "$ENV_FILE" 2>/dev/null; then
echo "$NVIDIA_VARS" >> "$ENV_FILE"
log "Переменные NVIDIA добавлены в $ENV_FILE"
else
log "Переменные NVIDIA уже настроены"
fi
# ===========================================================================
# ГОТОВО
# ===========================================================================
echo ""
echo "========================================="
printf "${GREEN}✓ Установка завершена!${NC}\n"
echo "========================================="
echo ""
echo "⚡ СЛЕДУЮЩИЕ ШАГИ:"
echo " 1. Перезагрузите систему: reboot"
echo " 2. В SDDM выберите сессию 'Labwc'"
echo " 3. Скопируйте dotfiles в ~/.config/labwc/"
echo " 4. Для v2rayA: запустите 'v2rayA' от пользователя"
echo ""
echo "📁 Конфиги Labwc: ~/.config/labwc/"
echo "📁 Конфиги Waybar: ~/.config/waybar/"
echo "📁 Конфиги Wofi: ~/.config/wofi/"
echo ""
echo "⚠️ Если нет звука после перезагрузки:"
echo " systemctl --user enable pipewire wireplumber"
echo " (или добавьте в ~/.xinitrc / autostart)"
echo ""