180 lines
6.3 KiB
Bash
Executable File
180 lines
6.3 KiB
Bash
Executable File
#!/bin/env bash
|
|
set -euo pipefail
|
|
|
|
|
|
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() {
|
|
print_section "🗃️ Резервное копирование конфигураций"
|
|
DATE=$(date +%Y-%m-%d_%H:%M:%S)
|
|
BACKUP_DIR=~/.config-backups/"$DATE"
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
for dir in ~/dotfiles/Configs/.config/*; do
|
|
name=$(basename "$dir")
|
|
if [ -d ~/.config/"$name" ]; then
|
|
cp -r ~/.config/"$name" "$BACKUP_DIR/"
|
|
fi
|
|
done
|
|
|
|
cp ~/{.zshrc,.p10k.zsh,.nanorc} "$BACKUP_DIR/" || true
|
|
echo -e "${GREEN}✅ Бэкап сохранён в $BACKUP_DIR${RESET}"
|
|
}
|
|
|
|
|
|
clone_repo() {
|
|
print_section "📂 Клонирование репозитория"
|
|
git clone https://github.com/retrilzzy/dotfiles.git ~/dotfiles
|
|
echo -e "${GREEN}✅ Репозиторий склонирован в ~/dotfiles!${RESET}"
|
|
}
|
|
|
|
|
|
copy_new_configs() {
|
|
print_section "📂 Применение новых конфигураций"
|
|
cp -r ~/dotfiles/Configs/.config/* ~/.config/
|
|
cp ~/dotfiles/Configs/.zshrc ~/dotfiles/Configs/.p10k.zsh ~/dotfiles/Configs/.nanorc ~/ || true
|
|
}
|
|
|
|
|
|
main() {
|
|
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
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
echo -e "${GREEN}✅ Установка завершена!${RESET}"
|
|
echo -e "${CYAN}🔁 Перезагрузите систему для полного применения изменений.${RESET}"
|
|
}
|
|
|
|
main "$@"
|