diff --git a/Scripts/install.sh b/Scripts/install.sh index b1a1a1e..f4810a2 100755 --- a/Scripts/install.sh +++ b/Scripts/install.sh @@ -1,24 +1,65 @@ #!/bin/env bash +set -euo pipefail -install() { - echo "" - read -r -p "❔ Установить $1? (y/N): " choice - case "$choice" in - y|Y|yes|Yes|YES ) - echo -e "\033[1;34m▶ \033[0m $2" - eval "$2" - ;; - * ) - echo "⏭️ Пропущено: $1" - ;; - esac + +CYAN='\033[1;36m' +BLUE='\033[1;34m' +GREEN='\033[1;32m' +YELLOW='\033[1;33m' +RESET='\033[0m' + + +print_section() { + echo -e "\n${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo -e "🔧 $1" + echo -e "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}" +} + + +install_pacman() { + for pkg in "$@"; do + if ! pacman -Qq "$pkg" &>/dev/null; then + echo -e "${BLUE}📦 Установка: ${pkg}${RESET}" + sudo pacman -S --noconfirm --needed "$pkg" + echo -e "${GREEN}✅ Установлено: ${pkg}${RESET}" + else + echo -e "${YELLOW}⏭️ Пропущено (уже установлено): ${pkg}${RESET}" + fi + done +} + + +install_yay() { + for pkg in "$@"; do + if ! yay -Qq "$pkg" &>/dev/null; then + echo -e "${BLUE}📦 Установка (AUR): ${pkg}${RESET}" + yay -S --noconfirm "$pkg" + echo -e "${GREEN}✅ Установлено (AUR): ${pkg}${RESET}" + else + echo -e "${YELLOW}⏭️ Пропущено (уже установлено): ${pkg}${RESET}" + fi + done +} + + +ensure_yay() { + if ! command -v yay &>/dev/null; then + print_section "🚀 Установка AUR помощника yay" + sudo pacman -S --noconfirm --needed base-devel git + git clone https://aur.archlinux.org/yay.git + pushd yay + makepkg -si --noconfirm + popd + rm -rf yay + echo -e "${GREEN}✅ Yay установлен!${RESET}" + else + echo -e "${YELLOW}⏭️ Yay уже установлен${RESET}" + fi } backup_configs() { - echo "📦 Создание резервной копии текущих конфигураций..." - echo "ℹ️ Копируются только те, которые затрагиваются этим репозиторием." - + print_section "🗃️ Резервное копирование конфигураций" DATE=$(date +%Y-%m-%d_%H:%M:%S) BACKUP_DIR=~/.config-backups/"$DATE" mkdir -p "$BACKUP_DIR" @@ -30,143 +71,109 @@ backup_configs() { fi done - cp ~/{.zshrc,.p10k.zsh,.nanorc} "$BACKUP_DIR/" 2>/dev/null || true + cp ~/{.zshrc,.p10k.zsh,.nanorc} "$BACKUP_DIR/" || true + echo -e "${GREEN}✅ Бэкап сохранён в $BACKUP_DIR${RESET}" +} - echo "✅ Бэкап сохранён в $BACKUP_DIR" + +clone_repo() { + print_section "📂 Клонирование репозитория" + git clone https://github.com/retrilzzy/dotfiles.git ~/dotfiles + echo -e "${GREEN}✅ Репозиторий склонирован в ~/dotfiles!${RESET}" } copy_new_configs() { - echo "📂 Копирование новых конфигураций..." + print_section "📂 Применение новых конфигураций" cp -r ~/dotfiles/Configs/.config/* ~/.config/ - cp ~/dotfiles/Configs/.zshrc ~/dotfiles/Configs/.p10k.zsh ~/dotfiles/Configs/.nanorc ~/ - echo "✅ Новый конфигурации скопированы!" + cp ~/dotfiles/Configs/.zshrc ~/dotfiles/Configs/.p10k.zsh ~/dotfiles/Configs/.nanorc ~/ || true } -echo "⚠️ Учтите, что отсутствие некоторых пакетов приведет к некорректной работе системы!" +main() { + echo -e "${CYAN} Запуск установки. 3...${RESET}" + sleep 1 + echo -e "${CYAN}2...${RESET}" + sleep 1 + echo -e "${CYAN}1...${RESET}" + sleep 1 -install "Git, Curl (жизненно необходимые пакеты)" \ - "sudo pacman -S --noconfirm git curl" + print_section "🛠️ Git" + install_pacman git + + ensure_yay + + print_section "🌐 Сетевые инструменты" + install_pacman networkmanager network-manager-applet + + print_section "🔵 Bluetooth" + install_pacman bluez bluez-tools blueman + + print_section "🧩 Интеграция с окружением" + install_pacman xdg-utils xdg-desktop-portal xdg-desktop-portal-hyprland xdg-desktop-portal-gtk xdg-desktop-portal-wlr + + print_section "🔌 Управление устройствами" + install_pacman brightnessctl playerctl + + print_section "🔤 Шрифты" + install_pacman noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ttf-jetbrains-mono + install_yay ttf-meslo-nerd-font-powerlevel10k + + print_section "🎨 Темы и иконки" + install_yay rose-pine-cursor rose-pine-hyprcursor + install_pacman papirus-icon-theme + + print_section "🖥️ Интерфейс и утилиты" + install_yay wlogout swaync + install_pacman waybar rofi wl-clipboard cliphist kitty flameshot fastfetch + + print_section "🖼️ Обои и оформление" + install_yay waypaper swww + + print_section "🎞️ Видео-обои" + install_yay mpvpaper-git + + print_section "📸 Скриншоты и запись экрана" + install_pacman grim wf-recorder hyprshot + + print_section "😊 Эмодзи-панель" + install_yay emote + + print_section "🐚 Zsh и плагины" + install_pacman zsh + if [ ! -d ~/.oh-my-zsh ]; then + sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" || true + fi + sudo chsh -s /bin/zsh "$USER" + git clone https://github.com/romkatv/powerlevel10k.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" || true + git clone https://github.com/zsh-users/zsh-syntax-highlighting.git "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting" || true + git clone https://github.com/zsh-users/zsh-autosuggestions "${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" || true + + print_section "🎛️ GTK и Qt оформление" + install_pacman nwg-look qt5ct qt6ct -install "Yay (AUR помощник) [Без Yay вы не сможете установить часть пакетов!]" \ - "sudo pacman -S --noconfirm --needed base-devel && git clone https://aur.archlinux.org/yay.git && cd yay && makepkg -si" + print_section "🏁 Финал" + backup_configs + clone_repo + copy_new_configs -install "Network Manager (сетевые инструменты)" \ - "sudo pacman -S --noconfirm network-manager network-manager-applet" + mkdir -p ~/.themes/Adwaita-Dark/gtk-3.0 + echo '@import url("resource:///org/gtk/libgtk/theme/Adwaita/gtk-contained-dark.css");' > ~/.themes/Adwaita-Dark/gtk-3.0/gtk.css + gsettings set org.gnome.desktop.interface color-scheme prefer-dark || true + gsettings set org.gnome.desktop.interface gtk-theme Adwaita-dark || true + nwg-look -a || true + mkdir -p ~/Pictures/Wallpapers + cp -r ~/dotfiles/Assets/wallpapers/* ~/Pictures/Wallpapers/ || curl -o ~/Pictures/Wallpapers/retrilz-dots_0.jpg https://raw.githubusercontent.com/retrilzzy/dotfiles/refs/heads/main/Assets/wallpapers/retrilz-dots_0.jpg + waypaper --backend swww --random --folder ~/Pictures/Wallpapers || true -install "Bluez, Blueman (bluetooth инструменты)" \ - "sudo pacman -S --noconfirm bluez bluez-tools blueman" + killall waybar && waybar -c $HOME/.config/waybar/config.jsonc -s $HOME/.config/waybar/styles.css || true + echo -e "${GREEN}✅ Установка завершена!${RESET}" + echo -e "${CYAN}🔁 Перезагрузите систему для полного применения изменений.${RESET}" +} -install "Xdg-utils, Xdg-desktop-portal (интеграция приложений с рабочим столом)" \ - "sudo pacman -S --noconfirm xdg-utils xdg-desktop-portal-hyprland xdg-desktop-portal-gtk xdg-desktop-portal-wlr xdg-desktop-portal" - - -install "Brightnessctl (управления яркостью)" \ - "sudo pacman -S --noconfirm brightnessctl" - - -install "Playerctl (управление медиа плеером)" \ - "sudo pacman -S --noconfirm playerctl" - - -install "Шрифты (Noto, JetBrains Mono, Nerd Fonts)" \ - "sudo pacman -S --noconfirm noto-fonts noto-fonts-cjk noto-fonts-emoji noto-fonts-extra ttf-jetbrains-mono \ - && yay -S --noconfirm ttf-meslo-nerd-font-powerlevel10k" - - -install "Rose Pine (тема курсора)" \ - "yay -S --noconfirm rose-pine-cursor rose-pine-hyprcursor" - - -install "Papirus (иконки)" \ - "sudo pacman -S --noconfirm papirus-icon-theme" - - -install "Wlogout (меню выключения)" \ - "yay -S --noconfirm wlogout" - - -install "Waybar (wayland бар)" \ - "sudo pacman -S --noconfirm waybar" - - -install "Rofi (меню запуска + меню буфера обмена)" \ - "sudo pacman -S --noconfirm rofi" - - -install "Cliphist (буфер обмена)" \ - "sudo pacman -S --noconfirm wl-clipboard cliphist" - - -install "Kitty (эмулятор терминала)" \ - "sudo pacman -S --noconfirm kitty" - -install "Zsh + Oh My Zsh (оболочка + менеджер плагинов)" \ - "sudo pacman -S --noconfirm zsh \ - && sh -c \"$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)\" \ - && chsh -s $(which zsh)" - -install "Powerlevel10k (тема для Zsh)" \ - "git clone --depth=1 https://github.com/romkatv/powerlevel10k.git \${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k" - -install "Плагины для Zsh" \ - "git clone https://github.com/zsh-users/zsh-syntax-highlighting.git \${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-syntax-highlighting \ - && git clone https://github.com/zsh-users/zsh-autosuggestions \${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions" - - -install "Nwg-look (настройка GTK)" \ - "sudo pacman -S --noconfirm nwg-look \ - && mkdir -p ~/.themes/Adwaita-Dark/gtk-3.0 \ - && echo '@import url(\"resource:///org/gtk/libgtk/theme/Adwaita/gtk-contained-dark.css\");' > ~/.themes/Adwaita-Dark/gtk-3.0/gtk.css \ - && gsettings set org.gnome.desktop.interface color-scheme prefer-dark \ - && gsettings set org.gnome.desktop.interface gtk-theme Adwaita-dark" - - -install "Qt5ct (настройка Qt)" \ - "sudo pacman -S --noconfirm qt5ct" - - -install "Swaync (уведомления похожие на GNOME)" "sudo pacman -S --noconfirm swaync" - - -install "Waypaper (интерфейс для управления обоями)" \ - "yay -S --noconfirm waypaper swww \ - && cp -r ~/dotfiles/Assets/wallpapers/* ~/Pictures/Wallpapers/" - -install "Mpvpaper (бэкенд для видео обоев)" "sudo pacman -S --noconfirm mpvpaper" - - -install "Grim, Hyprshot (cкриншоты)" \ - "sudo pacman -S --noconfirm grim && yay -S --noconfirm hyprshot" - - -install "Wf-recorder (запись экрана)" \ - "sudo pacman -S --noconfirm wf-recorder" - - -install "Emote (выбор эмодзи)" "yay -S --noconfirm emote" - - -install "Flameshot (мощная утилита для скриншотов)" "sudo pacman -S --noconfirm flameshot" - - -install "Fastfetch (похвастаться линуксом)" "sudo pacman -S --noconfirm fastfetch" - - -echo "✅ Установка пакетов завершена!" - - -backup_configs -copy_new_configs - - -echo "ℹ️ Для полного применения новых конфигураций потребуется перезагрузка системы." - -echo "✅ Установка завершена! Если потребуется восстановить старую конфигурацию, запустите:" -echo " ~/dotfiles/Scripts/restore.sh" +main "$@"