#!/bin/bash # Скрипт падает, если споткнется об ошибку set -e echo "=== 1. Установка системных сборщиков ===" sudo pacman -Syu --noconfirm git base-devel wget curl jq nano echo "=== 1.5 Решение возможных конфликтов аудио-серверов ===" if pacman -Qq jack2 &>/dev/null; then echo "Обнаружен jack2. Безопасно удаляем для перехода на Pipewire..." sudo pacman -Rdd --noconfirm jack2 || true fi echo "=== 2. Проверка и установка AUR-помощника (yay) ===" if ! command -v yay &> /dev/null; then echo "Устанавливаем yay..." git clone https://aur.archlinux.org/yay-bin.git /tmp/yay-bin cd /tmp/yay-bin && makepkg -si --noconfirm cd - && rm -rf /tmp/yay-bin fi echo "=== 3. Установка официальных пакетов Арча ===" PACKAGES=( # Графическая среда и блокировка/выход hyprland hyprpaper waybar swaync rofi-wayland wofi sddm uwsm xdg-desktop-portal-hyprland # Терминал и консольные украшательства kitty fastfetch cmatrix cava tty-clock htop jq imagemagick python-pywal python-pillow # Системный минимум (утилиты, буфер, скриншоты) nano vim wl-clipboard grim slurp yad network-manager-applet openbsd-netcat zram-generator # Звук и Bluetooth pipewire pipewire-alsa pipewire-jack pipewire-pulse gst-plugin-pipewire wireplumber libpulse bluez bluez-utils # Обязательные шрифты ttf-nerd-fonts-symbols ttf-nerd-fonts-symbols-common woff2-font-awesome ) # Ставим всё через yay, чтобы корректно подтянулся rofi-wayland и другие зависимости yay -S --needed --noconfirm "${PACKAGES[@]}" echo "=== 4. Установка недостающих утилит из AUR ===" yay -S --noconfirm wlogout waypaper echo "=== 5. Скачивание репозитория и нормальное КОПИРОВАНИЕ конфигов ===" REPO_DIR="$HOME/linux_betterwindows" # Качаем репозиторий по твоему ПРАВИЛЬНОМУ имени на гитхабе if [ ! -d "$REPO_DIR" ]; then git clone https://github.com/Scharyk/Archlinux-configuration-by-Scharyk.git "$REPO_DIR" fi mkdir -p "$HOME/.config" # Список папок для копирования (включая наши новые swaync и fastfetch) CONFIGS=(hypr rofi waybar kitty wlogout waypaper swaync fastfetch gtk-3.0 scripts) for cfg in "${CONFIGS[@]}"; do SRC_DIR="" if [ -d "$REPO_DIR/$cfg" ]; then SRC_DIR="$REPO_DIR/$cfg" elif [ -d "$REPO_DIR/.config/$cfg" ]; then SRC_DIR="$REPO_DIR/.config/$cfg" fi if [ -n "$SRC_DIR" ]; then rm -rf "$HOME/.config/$cfg" 2>/dev/null || true cp -r "$SRC_DIR" "$HOME/.config/" echo "Конфиг [$cfg] успешно СКОПИРОВАН в ~/.config/" fi done # Копируем конфиг Dolphin DOLPHIN_SRC="" if [ -f "$REPO_DIR/dolphinrc" ]; then DOLPHIN_SRC="$REPO_DIR/dolphinrc" elif [ -f "$REPO_DIR/.config/dolphinrc" ]; then DOLPHIN_SRC="$REPO_DIR/.config/dolphinrc" fi if [ -n "$DOLPHIN_SRC" ]; then rm -rf "$HOME/.config/dolphinrc" 2>/dev/null || true cp "$DOLPHIN_SRC" "$HOME/.config/" fi echo "=== 5.5 Автоматическое исправление конфигов и кэша ===" echo "=== 5.5 Автоматическое исправление конфигов и кэша ===" # 1. Вырезаем предупреждение об autogenerated из скопированного конфига hyprland if [ -f "$HOME/.config/hypr/hyprland.conf" ]; then sed -i '/autogenerated = 1/d' "$HOME/.config/hypr/hyprland.conf" echo "Удалено дефолтное предупреждение из hyprland.conf!" fi # 2. АВТОМАТИЧЕСКАЯ НАСТРОЙКА KITTY (Прозрачность + Pywal) echo "Настраиваю прозрачность терминала Kitty..." mkdir -p "$HOME/.config/kitty" cat < "$HOME/.config/kitty/kitty.conf" background_opacity 0.75 background_blur 1 font_family FiraCode Nerd Font font_size 11.0 include \$HOME/.cache/wal/colors-kitty.conf EOF # 3. УМНОЕ ОПРЕДЕЛЕНИЕ МОНИТОРА ДЛЯ ОБОЕВ # Узнаем имя активного монитора в системе (eDP-1, Virtual-1, HDMI-A-1 и т.д.) ACTIVE_MONITOR=$(hyprctl monitors 2>/dev/null | grep Monitor | awk '{print $2}' | head -n 1) # Если hyprctl не запущен (например, ставим из чистой TTY), ставим заглушку eDP-1 if [ -z "$ACTIVE_MONITOR" ]; then ACTIVE_MONITOR="eDP-1" fi echo "Определен активный монитор: $ACTIVE_MONITOR" # 4. Генерируем базовые цвета Pywal на основе ПЕРВОЙ попавшейся картинки FIRST_WALLPAPER=$(find "$HOME/Wallpapers" -type f \( -name "*.jpg" -o -name "*.png" -o -name "*.jpeg" -o -name "*.webp" \) | head -n 1) if [ -n "$FIRST_WALLPAPER" ]; then wal -i "$FIRST_WALLPAPER" --skip-wallpaper || true echo "Базовые цвета Pywal успешно сгенерированы!" # Генерируем правильный hyprpaper.conf под текущий монитор echo "preload = $FIRST_WALLPAPER" > "$HOME/.config/hypr/hyprpaper.conf" echo "wallpaper = $ACTIVE_MONITOR,$FIRST_WALLPAPER" >> "$HOME/.config/hypr/hyprpaper.conf" # Динамически правим имя монитора внутри нашего скрипта смены обоев if [ -f "$HOME/linux_betterwindows/scripts/wallpaper-menu.sh" ]; then sed -i "s/hyprctl hyprpaper wallpaper \".*,\$FILE\"/hyprctl hyprpaper wallpaper \"$ACTIVE_MONITOR,\$FILE\"/g" "$HOME/linux_betterwindows/scripts/wallpaper-menu.sh" fi if [ -f "$HOME/.config/scripts/wallpaper-menu.sh" ]; then sed -i "s/hyprctl hyprpaper wallpaper \".*,\$FILE\"/hyprctl hyprpaper wallpaper \"$ACTIVE_MONITOR,\$FILE\"/g" "$HOME/.config/scripts/wallpaper-menu.sh" fi else mkdir -p "$HOME/Pictures" convert -size 1920x1080 xc:#111111 "$HOME/Pictures/default_wallpaper.png" wal -i "$HOME/Pictures/default_wallpaper.png" --skip-wallpaper || true echo "preload = $HOME/Pictures/default_wallpaper.png" > "$HOME/.config/hypr/hyprpaper.conf" echo "wallpaper = $ACTIVE_MONITOR,$HOME/Pictures/default_wallpaper.png" >> "$HOME/.config/hypr/hyprpaper.conf" fi echo "=== 6. Включение автозапуска сети ===" sudo systemctl enable --now NetworkManager # ========================================================= # Настройка экрана логина в стиле CachyOS (SDDM) # ========================================================= echo "=== Настройка SDDM ===" sudo pacman -S --noconfirm sddm qt5-graphicaleffects qt5-quickcontrols2 qt5-svg imagemagick sudo mkdir -p /usr/share/sddm/themes if [ ! -d "/usr/share/sddm/themes/sddm-betterwindows" ]; then sudo git clone https://github.com/Keyitdev/sddm-astronaut-theme.git /usr/share/sddm/themes/sddm-betterwindows fi cat < /dev/null [General] FormPosition="center" TextColor="#ff0000" AccentColor="#ff0000" MainColor="#111111" ButtonColor="#ff0000" HoverColor="#aa0000" FieldColor="#222222" FontSize="14" EOF sudo mkdir -p /etc/sddm.conf.d cat < /dev/null [Theme] Current=sddm-betterwindows EOF sudo systemctl enable sddm.service --force echo "========================================================" echo " УСТАНОВКА ЗАВЕРШЕНА! ВСЕ КОНФИГИ ПРИВЯЗАНЫ НАМЕРТВО! " echo "========================================================"