diff --git a/Scripts/install.sh b/Scripts/install.sh index f4810a2..50a90d0 100755 --- a/Scripts/install.sh +++ b/Scripts/install.sh @@ -1,17 +1,19 @@ #!/bin/env bash + set -euo pipefail +DOTFILES_DIR="$HOME/dotfiles" -CYAN='\033[1;36m' -BLUE='\033[1;34m' -GREEN='\033[1;32m' -YELLOW='\033[1;33m' -RESET='\033[0m' +CYAN='' +BLUE='' +GREEN='' +YELLOW='' +RESET='' print_section() { - echo -e "\n${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" - echo -e "🔧 $1" + echo -e "${CYAN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" + echo -e "$1" echo -e "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${RESET}" } @@ -45,6 +47,7 @@ install_yay() { 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 @@ -59,45 +62,92 @@ ensure_yay() { backup_configs() { - print_section "🗃️ Резервное копирование конфигураций" - DATE=$(date +%Y-%m-%d_%H:%M:%S) - BACKUP_DIR=~/.config-backups/"$DATE" - mkdir -p "$BACKUP_DIR" + print_section "🗃️ Резервное копирование существующих конфигураций" - for dir in ~/dotfiles/Configs/.config/*; do + local date_now + date_now=$(date +%Y-%m-%d_%H-%M-%S) + local backup_dir=~/.config-backups/"$date_now" + mkdir -p "$backup_dir/.config" + + for dir in "$DOTFILES_DIR"/Configs/.config/*; do + local name name=$(basename "$dir") if [ -d ~/.config/"$name" ]; then - cp -r ~/.config/"$name" "$BACKUP_DIR/" + echo -e "${BLUE}↳ Копирование ~/.config/$name в $backup_dir/.config/${RESET}" + cp -r ~/.config/"$name" "$backup_dir/.config/" fi done - cp ~/{.zshrc,.p10k.zsh,.nanorc} "$BACKUP_DIR/" || true - echo -e "${GREEN}✅ Бэкап сохранён в $BACKUP_DIR${RESET}" + local home_files=(".zshrc" ".p10k.zsh" ".nanorc") + for file in "${home_files[@]}"; do + if [ -f ~/"$file" ]; then + echo -e "${BLUE}↳ Копирование ~/$file в $backup_dir/${RESET}" + cp ~/"$file" "$backup_dir/" + fi + done + + echo -e "${GREEN}✅ Бэкап сохранён в $backup_dir${RESET}" } + clone_repo() { print_section "📂 Клонирование репозитория" - git clone https://github.com/retrilzzy/dotfiles.git ~/dotfiles - echo -e "${GREEN}✅ Репозиторий склонирован в ~/dotfiles!${RESET}" + + git clone https://github.com/retrilzzy/dotfiles.git "$DOTFILES_DIR" || true } -copy_new_configs() { +apply_new_configs() { print_section "📂 Применение новых конфигураций" - cp -r ~/dotfiles/Configs/.config/* ~/.config/ - cp ~/dotfiles/Configs/.zshrc ~/dotfiles/Configs/.p10k.zsh ~/dotfiles/Configs/.nanorc ~/ || true + cp -a "$DOTFILES_DIR/Configs/.config/." ~/.config/ + + cp "$DOTFILES_DIR/Configs/.zshrc" "$DOTFILES_DIR/Configs/.p10k.zsh" "$DOTFILES_DIR/Configs/.nanorc" ~/ + echo -e "${GREEN}✅ Новые конфигурации применены.${RESET}" +} + + +setup_theme() { + print_section "🎨 Применение темы" + + 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 || echo -e "${YELLOW}⚠️ Не удалось установить color-scheme через gsettings.${RESET}" + gsettings set org.gnome.desktop.interface gtk-theme Adwaita-dark || echo -e "${YELLOW}⚠️ Не удалось установить gtk-theme через gsettings.${RESET}" + nwg-look -a || echo -e "${YELLOW}⚠️ Не удалось применить тему через nwg-look.${RESET}" + echo -e "${GREEN}✅ Тема GTK настроена.${RESET}" +} + + +setup_wallpapers() { + local wallpaper_dest=~/Pictures/Wallpapers + mkdir -p "$wallpaper_dest" + cp -r "$DOTFILES_DIR/Assets/wallpapers/"* "$wallpaper_dest/" + echo -e "${GREEN}✅ Обои скопированы в $wallpaper_dest${RESET}" + + waypaper --backend swww --random --folder "$wallpaper_dest" || echo -e "${YELLOW}⚠️ Не удалось установить обои через waypaper.${RESET}" + echo -e "${GREEN}✅ Обои установлены.${RESET}" +} + + +reload_services() { + if pgrep -x "waybar" > /dev/null; then + killall waybar && sleep 1 + fi + uwsm app -- waybar -c ~/.config/waybar/config.jsonc -s ~/.config/waybar/styles.css > /dev/null 2>&1 & disown || waybar -c ~/.config/waybar/config.jsonc -s ~/.config/waybar/styles.css > /dev/null 2>&1 & disown + echo -e "${GREEN}✅ Waybar перезапущен.${RESET}" } main() { - echo -e "${CYAN} Запуск установки. 3...${RESET}" - sleep 1 - echo -e "${CYAN}2...${RESET}" - sleep 1 - echo -e "${CYAN}1...${RESET}" - sleep 1 + if [ -z "${WAYLAND_DISPLAY:-}" ]; then + echo -e "${YELLOW}⚠️ Скрипт должен запускаться в активной Wayland-сессии (Hyprland).${RESET}" + exit 1 + fi + echo -e "${CYAN}Запуск установки. 3...${RESET}" && sleep 1 + echo -e "${CYAN}2...${RESET}" && sleep 1 + echo -e "${CYAN}1...${RESET}" && sleep 1 print_section "🛠️ Git" install_pacman git @@ -143,7 +193,7 @@ main() { 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 + sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended || 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 @@ -153,24 +203,12 @@ main() { print_section "🎛️ GTK и Qt оформление" install_pacman nwg-look qt5ct qt6ct - - print_section "🏁 Финал" - backup_configs - clone_repo - copy_new_configs - - 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 - - killall waybar && waybar -c $HOME/.config/waybar/config.jsonc -s $HOME/.config/waybar/styles.css || true + backup_configs + apply_new_configs + setup_theme + setup_wallpapers + reload_services echo -e "${GREEN}✅ Установка завершена!${RESET}" echo -e "${CYAN}🔁 Перезагрузите систему для полного применения изменений.${RESET}"