Загрузка данных
#!/usr/bin/env bash
set -Eeuo pipefail
BACKUP="$HOME/akai-cleanup-backup-$(date +%Y%m%d-%H%M%S)"
mkdir -p "$BACKUP/config" "$BACKUP/share" "$BACKUP/local-bin"
echo "=== ARCH CLEANUP ==="
echo "Резервная копия: $BACKUP"
# Проверяем, что главные приложения установлены
for app in Hyprland firefox kitty; do
case "$app" in
Hyprland) pacman -Q hyprland >/dev/null || { echo "Hyprland не найден"; exit 1; } ;;
firefox) command -v firefox >/dev/null || { echo "Firefox не найден"; exit 1; } ;;
kitty) command -v kitty >/dev/null || { echo "Kitty не найден"; exit 1; } ;;
esac
done
# Сохраняем старые настройки
for item in hypr waybar rofi swaync; do
if [ -e "$HOME/.config/$item" ]; then
mv "$HOME/.config/$item" "$BACKUP/config/$item"
echo "Сохранено: .config/$item"
fi
done
for item in waybar wallbash; do
if [ -e "$HOME/.local/share/$item" ]; then
mv "$HOME/.local/share/$item" "$BACKUP/share/$item"
echo "Сохранено: .local/share/$item"
fi
done
# Удаляем только необязательные приложения оболочки
REMOVE=()
for pkg in waybar rofi swaync hyprpaper; do
if pacman -Q "$pkg" >/dev/null 2>&1; then
REMOVE+=("$pkg")
fi
done
if [ "${#REMOVE[@]}" -gt 0 ]; then
echo
echo "Будут удалены только эти пакеты:"
printf ' %s\n' "${REMOVE[@]}"
echo "Зависимости автоматически не удаляются."
read -r -p "Продолжить? Напиши YES: " answer
if [ "$answer" = "YES" ]; then
sudo pacman -R -- "${REMOVE[@]}"
else
echo "Удаление пакетов отменено."
fi
else
echo "Необязательные пакеты оболочки не найдены."
fi
# Создаём чистую конфигурацию Hyprland
mkdir -p "$HOME/.config/hypr"
cat > "$HOME/.config/hypr/hyprland.lua" <<'LUA'
-- Minimal Hyprland configuration
local terminal = "kitty"
local browser = "firefox"
local menu = "rofi -show drun"
hl.monitor({
output = "",
mode = "preferred",
position = "auto",
scale = 1,
})
hl.env("XCURSOR_SIZE", "24")
hl.env("HYPRCURSOR_SIZE", "24")
hl.config({
general = {
gaps_in = 3,
gaps_out = 5,
border_size = 1,
col = {
active_border = { colors = {"rgba(ff2448ee)", "rgba(8b1023ee)"}, angle = 45 },
inactive_border = "rgba(292929aa)",
},
layout = "dwindle",
resize_on_border = true,
},
decoration = {
rounding = 4,
active_opacity = 1.0,
inactive_opacity = 0.94,
shadow = { enabled = false },
blur = { enabled = false },
},
input = {
kb_layout = "us,ru",
kb_options = "grp:alt_shift_toggle",
follow_mouse = 1,
sensitivity = 0,
},
dwindle = {
preserve_split = true,
},
})
hl.curve("akai", {
type = "bezier",
points = {{0.16, 1}, {0.3, 1}},
})
hl.animation({leaf = "global", enabled = true, speed = 5, bezier = "akai"})
hl.animation({leaf = "windows", enabled = true, speed = 4, bezier = "akai"})
hl.animation({leaf = "windowsIn", enabled = true, speed = 4, bezier = "akai", style = "popin 85%"})
hl.animation({leaf = "windowsOut", enabled = true, speed = 3, bezier = "akai", style = "fade"})
hl.animation({leaf = "fade", enabled = true, speed = 3, bezier = "akai"})
hl.animation({leaf = "workspaces", enabled = true, speed = 4, bezier = "akai", style = "slide"})
local mod = "SUPER"
-- Applications
hl.bind(mod .. " + Q", hl.dsp.exec_cmd(terminal))
hl.bind(mod .. " + V", hl.dsp.exec_cmd(browser))
hl.bind(mod .. " + SPACE", hl.dsp.exec_cmd(menu))
hl.bind(mod .. " + C", hl.dsp.window.close())
-- Move active window
hl.bind(mod .. " + Z", hl.dsp.window.move({direction = "left"}))
hl.bind(mod .. " + X", hl.dsp.window.move({direction = "right"}))
-- Focus
hl.bind(mod .. " + LEFT", hl.dsp.focus({direction = "left"}))
hl.bind(mod .. " + RIGHT", hl.dsp.focus({direction = "right"}))
hl.bind(mod .. " + UP", hl.dsp.focus({direction = "up"}))
hl.bind(mod .. " + DOWN", hl.dsp.focus({direction = "down"}))
-- Workspaces 1-9
for i = 1, 9 do
hl.bind(mod .. " + " .. i, hl.dsp.focus({workspace = i}))
hl.bind(mod .. " + SHIFT + " .. i, hl.dsp.window.move({workspace = i}))
end
-- Mouse window movement
hl.bind(mod .. " + mouse:272", hl.dsp.window.drag(), {mouse = true})
hl.bind(mod .. " + mouse:273", hl.dsp.window.resize(), {mouse = true})
LUA
echo
echo "=== ГОТОВО ==="
echo "Старая конфигурация сохранена в:"
echo "$BACKUP"
echo
echo "Firefox, Kitty, Hyprland, SDDM и системные службы не удалялись."
echo "Новая конфигурация Hyprland создана."
echo "Перезагрузи компьютер, чтобы проверить чистую сессию."