diff options
| author | Don Williams <don.e.williams@gmail.com> | 2026-01-11 21:13:07 -0500 |
|---|---|---|
| committer | Don Williams <don.e.williams@gmail.com> | 2026-01-11 21:13:07 -0500 |
| commit | a7c359e377d6daed4af9158ea0cc915d804ea359 (patch) | |
| tree | 888388d3ebde6e440369b80a6b487ad9cf9e6024 /copy.sh | |
| parent | 050121695a344e95ac4181e079c45e898c3dcda6 (diff) | |
Moved UserScripts/UserConfigs restore function to lib_copy helper
copy.sh is nearly 50% smaller now a little over 600 lines now
down from over 1200 at the start
On branch development
Your branch is up to date with 'origin/development'.
Changes to be committed:
modified: copy.sh
modified: scripts/lib_copy.sh
Diffstat (limited to 'copy.sh')
| -rwxr-xr-x | copy.sh | 256 |
1 files changed, 5 insertions, 251 deletions
@@ -462,263 +462,17 @@ if command -v qs >/dev/null 2>&1; then fi printf "\n%.0s" {1..1} -# Restore automatically Animations and Monitor-Profiles -# including monitors.conf and workspaces.conf -HYPR_DIR="$HOME/.config/hypr" -BACKUP_DIR=$(get_backup_dirname) -BACKUP_HYPR_PATH="$HYPR_DIR-backup-$BACKUP_DIR" - -if [ -d "$BACKUP_HYPR_PATH" ]; then - if [ "$EXPRESS_MODE" -eq 1 ]; then - echo "${NOTE} Express mode: skipping automatic restoration of animations and monitor profiles." 2>&1 | tee -a "$LOG" - else - echo -e "\n${NOTE} Restoring ${SKY_BLUE}Animations & Monitor Profiles${RESET} directories into ${YELLOW}$HYPR_DIR${RESET}..." - - DIR_B=("Monitor_Profiles" "animations" "wallpaper_effects") - # Restore directories automatically - for DIR_RESTORE in "${DIR_B[@]}"; do - BACKUP_SUBDIR="$BACKUP_HYPR_PATH/$DIR_RESTORE" - if [ -d "$BACKUP_SUBDIR" ]; then - cp -r "$BACKUP_SUBDIR" "$HYPR_DIR/" - echo "${OK} - Restored directory: ${MAGENTA}$DIR_RESTORE${RESET}" 2>&1 | tee -a "$LOG" - fi - done - - # Restore files automatically - FILE_B=("monitors.conf" "workspaces.conf") - for FILE_RESTORE in "${FILE_B[@]}"; do - BACKUP_FILE="$BACKUP_HYPR_PATH/$FILE_RESTORE" - - if [ -f "$BACKUP_FILE" ]; then - cp "$BACKUP_FILE" "$HYPR_DIR/$FILE_RESTORE" - echo "${OK} - Restored file: ${MAGENTA}$FILE_RESTORE${RESET}" 2>&1 | tee -a "$LOG" - fi - done - fi -fi - +restore_hypr_assets "$LOG" "$EXPRESS_MODE" printf "\n%.0s" {1..1} -# Restoring UserConfigs and UserScripts -# Helper to extract overlay (additions) and optional disables from a previous user file compared to vendor base -compose_overlay_from_backup() { - local type="$1" # startup|windowrules - local base_file="$2" - local old_user_file="$3" - local new_user_file="$4" - local disable_file="$5" - - mkdir -p "$(dirname "$new_user_file")" - : >"$new_user_file" - : >"$disable_file" - - if [ "$type" = "startup" ]; then - # additions: exec-once lines present in old user but not in base - grep -E '^\s*exec-once\s*=' "$old_user_file" | sed -E 's/^\s+//;s/\s+$//' | sort -u >"$old_user_file.tmp.exec" - grep -E '^\s*exec-once\s*=' "$base_file" | sed -E 's/^\s+//;s/\s+$//' | sort -u >"$base_file.tmp.exec" - comm -23 "$old_user_file.tmp.exec" "$base_file.tmp.exec" >"$new_user_file" - # treat commented exec-once in old user as disables - grep -E '^\s*#\s*exec-once\s*=' "$old_user_file" | - sed -E 's/^\s*#\s*exec-once\s*=\s*//' | - sed -E 's/^\s+//;s/\s+$//' | - grep -Ev '^\$scriptsDir/KeybindsLayoutInit\.sh$' | - sort -u >"$disable_file" - rm -f "$old_user_file.tmp.exec" "$base_file.tmp.exec" - elif [ "$type" = "windowrules" ]; then - # additions - grep -E '^(windowrule|layerrule)\s*=' "$old_user_file" | sed -E 's/^\s+//;s/\s+$//' | sort -u >"$old_user_file.tmp.rules" - grep -E '^(windowrule|layerrule)\s*=' "$base_file" | sed -E 's/^\s+//;s/\s+$//' | sort -u >"$base_file.tmp.rules" - comm -23 "$old_user_file.tmp.rules" "$base_file.tmp.rules" >"$new_user_file" - # disables: lines commented in old user - grep -E '^\s*#\s*(windowrule|layerrule)\s*=' "$old_user_file" | sed -E 's/^\s*#\s*//' | sed -E 's/^\s+//;s/\s+$//' | sort -u >"$disable_file" - rm -f "$old_user_file.tmp.rules" "$base_file.tmp.rules" - fi -} - - -DIRH="hypr" -DIRPATH="$HOME/.config/$DIRH" -BACKUP_DIR=$(get_backup_dirname) -BACKUP_DIR_PATH="$DIRPATH-backup-$BACKUP_DIR/UserConfigs" - -if [ -z "$BACKUP_DIR" ]; then - echo "${ERROR} - Backup directory name is empty. Exiting." - exit 1 -fi - -if [ -d "$BACKUP_DIR_PATH" ] && [ "$EXPRESS_MODE" -eq 1 ]; then - echo "${NOTE} Express mode: skipping UserConfigs restoration prompts." 2>&1 | tee -a "$LOG" -fi - -if [ -d "$BACKUP_DIR_PATH" ] && [ "$EXPRESS_MODE" -eq 0 ]; then - # Detect version - VERSION_FILE=$(find "$DIRPATH" -maxdepth 1 -name "v*.*.*" | head -n 1) - CURRENT_VERSION="999.9.9" - if [ -n "$VERSION_FILE" ]; then - CURRENT_VERSION=$(basename "$VERSION_FILE" | sed 's/^v//') - fi - - TARGET_VERSION="2.3.19" - - echo -e "${NOTE} Restoring previous ${MAGENTA}User-Configs${RESET}... " - print_color $WARNING " - █▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ - NOTES for RESTORING PREVIOUS CONFIGS - █▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ - - The 'UserConfigs' directory is for all your personal settings. - Files in this directory will override the default configurations, - so your customizations are not lost when you update. - " - - if version_gte "$CURRENT_VERSION" "$TARGET_VERSION"; then - # NEW BEHAVIOR (>= 2.3.19) - Bulk Restore - echo -n "${CAT} Do you want to restore your previous UserConfigs directory? (Y/n): " - read -r restore_userconfigs_dir - - if [[ "$restore_userconfigs_dir" != [Nn]* ]]; then - echo "${NOTE} Restoring UserConfigs directory..." 2>&1 | tee -a "$LOG" - # Use rsync to copy contents, overwriting existing files. - rsync -a "$BACKUP_DIR_PATH/" "$DIRPATH/UserConfigs/" 2>&1 | tee -a "$LOG" - echo "${OK} - UserConfigs directory restored." 2>&1 | tee -a "$LOG" - else - echo "${NOTE} - Skipped restoring UserConfigs." 2>&1 | tee -a "$LOG" - fi - - else - # OLD BEHAVIOR (<= 2.3.18) - Selective Restore - echo -e "${NOTE} Detected version ${YELLOW}v$CURRENT_VERSION${RESET} (older than v$TARGET_VERSION). Using legacy restoration mode." - - FILES_TO_RESTORE=( - "01-UserDefaults.conf" - "ENVariables.conf" - "LaptopDisplay.conf" - "Laptops.conf" - "Startup_Apps.conf" - "UserDecorations.conf" - "UserAnimations.conf" - "UserKeybinds.conf" - "UserSettings.conf" - "WindowRules.conf" - ) - - for FILE_NAME in "${FILES_TO_RESTORE[@]}"; do - BACKUP_FILE="$BACKUP_DIR_PATH/$FILE_NAME" - if [ -f "$BACKUP_FILE" ]; then - # Special handling for Startup_Apps.conf and WindowRules.conf - if [ "$FILE_NAME" = "Startup_Apps.conf" ]; then - compose_overlay_from_backup "startup" "$DIRPATH/configs/Startup_Apps.conf" "$BACKUP_FILE" "$DIRPATH/UserConfigs/Startup_Apps.conf" "$DIRPATH/UserConfigs/Startup_Apps.disable" - echo "${OK} - Migrated overlay for ${YELLOW}$FILE_NAME${RESET}" 2>&1 | tee -a "$LOG" - continue - fi - if [ "$FILE_NAME" = "WindowRules.conf" ]; then - compose_overlay_from_backup "windowrules" "$DIRPATH/configs/WindowRules.conf" "$BACKUP_FILE" "$DIRPATH/UserConfigs/WindowRules.conf" "$DIRPATH/UserConfigs/WindowRules.disable" - echo "${OK} - Migrated overlay for ${YELLOW}$FILE_NAME${RESET}" 2>&1 | tee -a "$LOG" - continue - fi - - printf "\n${INFO} Found ${YELLOW}$FILE_NAME${RESET} in hypr backup...\n" - echo -n "${CAT} Do you want to restore ${YELLOW}$FILE_NAME${RESET} from backup? (Y/n): " - read file_restore - - if [[ "$file_restore" != [Nn]* ]]; then - if cp "$BACKUP_FILE" "$DIRPATH/UserConfigs/$FILE_NAME"; then - echo "${OK} - $FILE_NAME restored!" 2>&1 | tee -a "$LOG" - else - echo "${ERROR} - Failed to restore $FILE_NAME!" 2>&1 | tee -a "$LOG" - fi - else - echo "${NOTE} - Skipped restoring $FILE_NAME." 2>&1 | tee -a "$LOG" - fi - fi - done - fi -fi - +restore_user_configs "$LOG" "$EXPRESS_MODE" printf "\n%.0s" {1..1} -# Restoring previous UserScripts -DIRSH="hypr" -SCRIPTS_TO_RESTORE=( - "RofiBeats.sh" - "Weather.py" - "Weather.sh" -) - -DIRSHPATH="$HOME/.config/$DIRSH" -BACKUP_DIR_PATH_S="$DIRSHPATH-backup-$BACKUP_DIR/UserScripts" - -if [ -d "$BACKUP_DIR_PATH_S" ] && [ "$EXPRESS_MODE" -eq 1 ]; then - echo "${NOTE} Express mode: skipping UserScripts restoration prompts." 2>&1 | tee -a "$LOG" -fi - -if [ -d "$BACKUP_DIR_PATH_S" ] && [ "$EXPRESS_MODE" -eq 0 ]; then - echo -e "${NOTE} Restoring previous ${MAGENTA}User-Scripts${RESET}..." - - for SCRIPT_NAME in "${SCRIPTS_TO_RESTORE[@]}"; do - BACKUP_SCRIPT="$BACKUP_DIR_PATH_S/$SCRIPT_NAME" - - if [ -f "$BACKUP_SCRIPT" ]; then - printf "\n${INFO} Found ${YELLOW}$SCRIPT_NAME${RESET} in hypr backup...\n" - echo -n "${CAT} Do you want to restore ${YELLOW}$SCRIPT_NAME${RESET} from backup? (y/N): " - read script_restore - - if [[ "$script_restore" == [Yy]* ]]; then - if cp "$BACKUP_SCRIPT" "$DIRSHPATH/UserScripts/$SCRIPT_NAME"; then - echo "${OK} - $SCRIPT_NAME restored!" 2>&1 | tee -a "$LOG" - else - echo "${ERROR} - Failed to restore $SCRIPT_NAME!" 2>&1 | tee -a "$LOG" - fi - else - echo "${NOTE} - Skipped restoring $SCRIPT_NAME." 2>&1 | tee -a "$LOG" - fi - fi - done -fi - +restore_user_scripts "$LOG" "$EXPRESS_MODE" printf "\n%.0s" {1..1} -# restoring some files in ~/.config/hypr -DIR_H="hypr" -FILES_2_RESTORE=( - "hyprlock.conf" - "hypridle.conf" -) - -DIRPATH="$HOME/.config/$DIR_H" -BACKUP_DIR=$(get_backup_dirname) -BACKUP_DIR_PATH_F="$DIRPATH-backup-$BACKUP_DIR" - -if [ -d "$BACKUP_DIR_PATH_F" ] && [ "$EXPRESS_MODE" -eq 1 ]; then - echo "${NOTE} Express mode: skipping individual hypr file restoration prompts." 2>&1 | tee -a "$LOG" -fi - -if [ -d "$BACKUP_DIR_PATH_F" ] && [ "$EXPRESS_MODE" -eq 0 ]; then - echo -e "${NOTE} Restoring some files in ${MAGENTA}$HOME/.config/hypr directory${RESET}..." - - for FILE_RESTORE in "${FILES_2_RESTORE[@]}"; do - BACKUP_FILE="$BACKUP_DIR_PATH_F/$FILE_RESTORE" - - if [ -f "$BACKUP_FILE" ]; then - echo -e "\n${INFO} Found ${YELLOW}$FILE_RESTORE${RESET} in hypr backup..." - echo -n "${CAT} Do you want to restore ${YELLOW}$FILE_RESTORE${RESET} from backup? (y/N): " - read file2restore - - if [[ "$file2restore" == [Yy]* ]]; then - if cp "$BACKUP_FILE" "$DIRPATH/$FILE_RESTORE"; then - echo "${OK} - $FILE_RESTORE restored!" 2>&1 | tee -a "$LOG" - else - echo "${ERROR} - Failed to restore $FILE_RESTORE!" 2>&1 | tee -a "$LOG" - fi - else - echo "${NOTE} - Skipped restoring $FILE_RESTORE." 2>&1 | tee -a "$LOG" - fi - else - echo "${ERROR} - Backup file $BACKUP_FILE does not exist." - fi - done -fi - +restore_hypr_files "$LOG" "$EXPRESS_MODE" +printf "\n%.0s" {1..1} printf "\n%.0s" {1..1} # Define the target directory for rofi themes |
