diff --git a/refactor_backup/bin/dotfiles-compile.sh b/refactor_backup/bin/dotfiles-compile.sh deleted file mode 100755 index 1912448..0000000 --- a/refactor_backup/bin/dotfiles-compile.sh +++ /dev/null @@ -1,132 +0,0 @@ -#!/usr/bin/env zsh -# ============================================================================ -# Dotfiles Compile - Pre-compile zsh files for faster loading -# ============================================================================ - -set -e - -DOTFILES_DIR="${DOTFILES_DIR:-$HOME/.dotfiles}" - -# Source shared colors and utils (provides DF_WIDTH) -source "$DOTFILES_DIR/zsh/lib/utils.zsh" 2>/dev/null || \ -source "$DOTFILES_DIR/zsh/lib/colors.zsh" 2>/dev/null || { - DF_GREEN=$'\033[0;32m' DF_YELLOW=$'\033[1;33m' DF_CYAN=$'\033[0;36m' - DF_NC=$'\033[0m' DF_GREY=$'\033[38;5;242m' DF_LIGHT_BLUE=$'\033[38;5;39m' - DF_BOLD=$'\033[1m' DF_DIM=$'\033[2m' -} - -# Use DF_WIDTH from utils.zsh or default to 66 -typeset -g WIDTH="${DF_WIDTH:-66}" - -# ============================================================================ -# MOTD-style header -# ============================================================================ - -print_header() { - if declare -f df_print_header &>/dev/null; then - df_print_header "dotfiles-compile " - else - local user="${USER:-root}" - local hostname="${HOST:-$(hostname -s 2>/dev/null)}" - local datetime=$(date '+%a %b %d %H:%M') - local hline="" - for ((i=0; i/dev/null && \ - echo -e "${DF_GREEN}✓${DF_NC} Compiled: ${file##*/}" || \ - echo -e "${DF_YELLOW}⚠${DF_NC} Skipped: ${file##*/}" - else - echo -e "${DF_CYAN}○${DF_NC} Current: ${file##*/}" - fi - fi -} - -clean_compiled() { - echo "Removing compiled files..." - - local count=0 - - for zwc in "$DOTFILES_DIR"/**/*.zwc(N); do - rm -f "$zwc" - ((count++)) - done - - rm -f ~/.zshrc.zwc ~/.zshenv.zwc ~/.zprofile.zwc 2>/dev/null - - echo -e "${DF_GREEN}✓${DF_NC} Removed $count compiled files" -} - -compile_all() { - echo -e "${DF_CYAN}Compiling zsh files for faster startup...${DF_NC}" - echo - - echo "Core files:" - compile_file ~/.zshrc - compile_file ~/.zshenv - compile_file ~/.zprofile - echo - - echo "Dotfiles:" - compile_file "$DOTFILES_DIR/zsh/.zshrc" - compile_file "$DOTFILES_DIR/zsh/aliases.zsh" - - for file in "$DOTFILES_DIR/zsh/lib"/*.zsh(N); do - compile_file "$file" - done - - for file in "$DOTFILES_DIR/zsh/functions"/*.zsh(N); do - compile_file "$file" - done - - for file in "$DOTFILES_DIR/zsh/themes"/*.zsh-theme(N); do - compile_file "$file" - done - echo - - if [[ -d ~/.oh-my-zsh ]]; then - echo "Oh-My-Zsh (optional):" - compile_file ~/.oh-my-zsh/oh-my-zsh.sh - echo - fi - - echo -e "${DF_GREEN}✓${DF_NC} Compilation complete" - echo - echo "To measure startup time:" - echo " time zsh -i -c exit" - echo " hyperfine 'zsh -i -c exit' # More accurate" -} - -show_help() { - echo "Usage: dotfiles-compile.sh [OPTIONS]" - echo - echo "Compile zsh files to bytecode for faster shell startup." - echo - echo "Options:" - echo " (none) Compile all zsh files" - echo " --clean Remove all compiled (.zwc) files" - echo " --help Show this help" -} - -# ============================================================================ -# Main -# ============================================================================ - -print_header - -case "${1:-}" in - --clean|-c) clean_compiled ;; - --help|-h) show_help ;; - *) compile_all ;; -esac diff --git a/refactor_backup/bin/dotfiles-doctor.sh b/refactor_backup/bin/dotfiles-doctor.sh deleted file mode 100755 index 24e4ca3..0000000 --- a/refactor_backup/bin/dotfiles-doctor.sh +++ /dev/null @@ -1,184 +0,0 @@ -#!/usr/bin/env bash -# ============================================================================ -# Dotfiles Health Check (Arch/CachyOS) -# ============================================================================ -# Usage: -# dotfiles-doctor.sh # Run all checks -# dotfiles-doctor.sh --fix # Attempt automatic fixes -# dotfiles-doctor.sh --quick # Quick essential checks only -# ============================================================================ - -# ============================================================================ -# Source Configuration -# ============================================================================ -# utils.zsh sources config.zsh which sources dotfiles.conf -# This gives us access to all settings including DF_WIDTH, DOTFILES_VERSION, etc. - -_df_source_config() { - local locations=( - "${DOTFILES_HOME:-$HOME/.dotfiles}/zsh/lib/utils.zsh" - "$HOME/.dotfiles/zsh/lib/utils.zsh" - ) - for loc in "${locations[@]}"; do - [[ -f "$loc" ]] && { source "$loc"; return 0; } - done - - # Fallback defaults if utils.zsh not found - DF_RED=$'\033[0;31m' DF_GREEN=$'\033[0;32m' DF_YELLOW=$'\033[1;33m' - DF_BLUE=$'\033[0;34m' DF_CYAN=$'\033[0;36m' DF_NC=$'\033[0m' - DF_GREY=$'\033[38;5;242m' DF_LIGHT_BLUE=$'\033[38;5;39m' - DF_BOLD=$'\033[1m' DF_DIM=$'\033[2m' DF_LIGHT_GREEN=$'\033[38;5;82m' - DOTFILES_HOME="${DOTFILES_HOME:-$HOME/.dotfiles}" - DOTFILES_VERSION="${DOTFILES_VERSION:-unknown}" - DF_WIDTH="${DF_WIDTH:-66}" -} - -_df_source_config - -# ============================================================================ -# Parse Arguments -# ============================================================================ - -DO_FIX=false -QUICK_MODE=false -for arg in "$@"; do - case "$arg" in - --fix) DO_FIX=true ;; - --quick) QUICK_MODE=true ;; - --help|-h) - echo "Usage: dotfiles-doctor.sh [OPTIONS]" - echo "" - echo "Options:" - echo " --fix Attempt automatic fixes for issues" - echo " --quick Run quick essential checks only" - echo " --help Show this help" - exit 0 - ;; - esac -done - -# Track results -TOTAL_CHECKS=0 -PASSED_CHECKS=0 -FAILED_CHECKS=0 -WARNING_CHECKS=0 -FIXED_CHECKS=0 - -# ============================================================================ -# Header (uses DF_WIDTH from config) -# ============================================================================ - -print_header() { - if declare -f df_print_header &>/dev/null; then - df_print_header "dotfiles-doctor" - else - local user="${USER:-root}" - local hostname="${HOSTNAME:-$(hostname -s 2>/dev/null)}" - local datetime=$(date '+%a %b %d %H:%M') - local width="${DF_WIDTH:-66}" - local hline="" && for ((i=0; i/dev/null; then - check_pass "Running CachyOS" - elif grep -qi "arch" /etc/os-release 2>/dev/null; then - check_pass "Running Arch Linux" - else - check_fail "Not running on Arch/CachyOS" - fi - else - check_fail "Not running on Linux" - fi - check_pass "Kernel: $(uname -r)" -} - -check_shell() { - print_section "Shell Configuration" - [[ -f "$HOME/.zshrc" ]] && check_pass "Zsh configuration exists" || check_fail "Zsh configuration missing" - [[ "$SHELL" == *"zsh"* ]] && check_pass "Zsh is default shell" || check_warn "Zsh is not default shell" - command -v zsh &>/dev/null && check_pass "Zsh version: $(zsh --version | awk '{print $2}')" -} - -check_symlinks() { - print_section "Symlinks" - for symlink in ~/.zshrc ~/.gitconfig ~/.vimrc ~/.tmux.conf; do - if [[ -L "$symlink" ]]; then - [[ -e "$symlink" ]] && check_pass "$(basename $symlink) → $(readlink $symlink)" || check_fail "$(basename $symlink) is broken" - elif [[ -f "$symlink" ]]; then - check_warn "$(basename $symlink) is regular file (not symlink)" - fi - done -} - -check_pacman() { - print_section "Package Manager" - command -v pacman &>/dev/null && check_pass "Pacman available" || { check_fail "Pacman not found"; return; } - command -v paru &>/dev/null && check_pass "AUR helper: paru" || \ - command -v yay &>/dev/null && check_pass "AUR helper: yay" || check_warn "No AUR helper installed" -} - -check_optional_tools() { - print_section "Optional Tools" - command -v fzf &>/dev/null && check_pass "fzf" || check_warn "fzf not installed" - command -v bat &>/dev/null && check_pass "bat" || check_warn "bat not installed" - command -v eza &>/dev/null && check_pass "eza" || check_warn "eza not installed" - command -v tmux &>/dev/null && check_pass "tmux" || check_warn "tmux not installed" -} - -check_dotfiles_dir() { - print_section "Dotfiles Directory" - [[ -d "$DOTFILES_HOME" ]] && check_pass "Dotfiles: $DOTFILES_HOME" || { check_fail "Dotfiles not found"; return; } - [[ -f "$DOTFILES_HOME/dotfiles.conf" ]] && check_pass "Config file exists" || check_warn "Config file missing" - [[ -d "$DOTFILES_HOME/.git" ]] && check_pass "Git repo initialized" || check_warn "Not a git repository" - check_pass "Version: $DOTFILES_VERSION" - check_pass "Display width: $DF_WIDTH" -} - -print_summary() { - local width="${DF_WIDTH:-66}" - echo "" - printf "${DF_CYAN}─%.0s${DF_NC}" $(seq 1 $width); echo "" - if [[ $FAILED_CHECKS -eq 0 ]]; then - echo -e "${DF_GREEN}✓${DF_NC} All checks passed ($PASSED_CHECKS/$TOTAL_CHECKS)" - else - echo -e "${DF_RED}✗${DF_NC} Issues found: $FAILED_CHECKS failed, $WARNING_CHECKS warnings" - fi - echo "" -} - -# ============================================================================ -# Main -# ============================================================================ - -main() { - print_header - check_os - check_pacman - check_shell - check_dotfiles_dir - check_symlinks - [[ "$QUICK_MODE" != true ]] && check_optional_tools - print_summary -} - -main "$@" diff --git a/refactor_backup/bin/dotfiles-stats.sh b/refactor_backup/bin/dotfiles-stats.sh deleted file mode 100755 index 3156113..0000000 --- a/refactor_backup/bin/dotfiles-stats.sh +++ /dev/null @@ -1,80 +0,0 @@ -#!/usr/bin/env bash -# ============================================================================ -# Dotfiles Shell Analytics (Arch/CachyOS) -# ============================================================================ - -set -e - -readonly DOTFILES_HOME="${DOTFILES_HOME:-$HOME/.dotfiles}" - -# Source shared colors and utils (provides DF_WIDTH) -source "$DOTFILES_HOME/zsh/lib/utils.zsh" 2>/dev/null || \ -source "$DOTFILES_HOME/zsh/lib/colors.zsh" 2>/dev/null || { - DF_RED=$'\033[0;31m' DF_GREEN=$'\033[0;32m' DF_YELLOW=$'\033[1;33m' - DF_BLUE=$'\033[0;34m' DF_CYAN=$'\033[0;36m' DF_MAGENTA=$'\033[0;35m' - DF_NC=$'\033[0m' DF_GREY=$'\033[38;5;242m' DF_LIGHT_BLUE=$'\033[38;5;39m' - DF_BOLD=$'\033[1m' DF_DIM=$'\033[2m' DF_LIGHT_GREEN=$'\033[38;5;82m' -} - -# Use DF_WIDTH from utils.zsh or default to 66 -readonly WIDTH="${DF_WIDTH:-66}" - -# ============================================================================ -# MOTD-style header -# ============================================================================ - -print_header() { - if declare -f df_print_header &>/dev/null; then - df_print_header "dotfiles-stats " - else - local user="${USER:-root}" - local hostname="${HOSTNAME:-$(hostname -s 2>/dev/null)}" - local datetime=$(date '+%a %b %d %H:%M') - local hline="" && for ((i=0; i/dev/null; then - df_print_header "dotfiles-sync" - else - local user="${USER:-root}" - local hostname="${HOSTNAME:-$(hostname -s 2>/dev/null)}" - local datetime=$(date '+%a %b %d %H:%M') - local width="${DF_WIDTH:-66}" - local hline="" && for ((i=0; i&2; } -print_warning() { echo -e "${DF_YELLOW}⚠${DF_NC} $1"; } -print_section() { echo ""; echo -e "${DF_BLUE}▶${DF_NC} $1"; } - -# ============================================================================ -# Sync Functions -# ============================================================================ - -check_git_repo() { - git -C "$DOTFILES_HOME" rev-parse --git-dir > /dev/null 2>&1 || { print_error "Not a git repository: $DOTFILES_HOME"; exit 1; } -} - -get_sync_status() { - cd "$DOTFILES_HOME" - local local_commits=$(git rev-list --count @{u}..HEAD 2>/dev/null || echo 0) - local remote_commits=$(git rev-list --count HEAD..@{u} 2>/dev/null || echo 0) - echo "$local_commits:$remote_commits" -} - -show_status() { - print_section "Sync Status" - cd "$DOTFILES_HOME" - print_status "Local branch: $(git rev-parse --abbrev-ref HEAD)" - print_status "Last commit: $(git log -1 --pretty=format:'%h - %s' 2>/dev/null || echo 'N/A')" - - local status=$(get_sync_status) - local local_commits="${status%:*}" - local remote_commits="${status#*:}" - - echo "" - [[ $local_commits -gt 0 ]] && print_warning "$local_commits commit(s) ahead of remote" - [[ $remote_commits -gt 0 ]] && print_warning "$remote_commits commit(s) behind remote" - [[ $local_commits -eq 0 && $remote_commits -eq 0 ]] && print_success "In sync with remote" -} - -show_status_short() { - cd "$DOTFILES_HOME" - local changes=$(git status --porcelain | wc -l) - local status=$(get_sync_status) - local local_commits="${status%:*}" - local remote_commits="${status#*:}" - - if [[ $changes -gt 0 ]]; then - echo -e " ${DF_YELLOW}⚠${DF_NC} Dotfiles: ${changes} local change(s) not pushed" - elif [[ $local_commits -gt 0 ]]; then - echo -e " ${DF_YELLOW}⚠${DF_NC} Dotfiles: ${local_commits} commit(s) not pushed" - elif [[ $remote_commits -gt 0 ]]; then - echo -e " ${DF_YELLOW}⚠${DF_NC} Dotfiles: ${remote_commits} commit(s) behind remote" - fi -} - -pull_changes() { - print_section "Pulling Changes" - cd "$DOTFILES_HOME" - print_status "Fetching from remote..." - git fetch origin - git pull origin && print_success "Changes pulled" || print_success "Already up to date" -} - -push_changes() { - local commit_msg="$1" - print_section "Pushing Changes" - cd "$DOTFILES_HOME" - - if ! git status --porcelain | grep -q .; then - print_warning "No local changes to push" - return - fi - - print_status "Staging changes..." - git add -A - - if [[ -z "$commit_msg" ]]; then - read -p "Commit message: " commit_msg - [[ -z "$commit_msg" ]] && { print_error "Commit cancelled"; return 1; } - fi - - git commit -m "$commit_msg" - git push origin - print_success "Changes pushed" -} - -# ============================================================================ -# Main -# ============================================================================ - -main() { - check_git_repo - - case "${1:-status}" in - status) - [[ "$2" == "-s" || "$2" == "--short" ]] && show_status_short || { print_header; show_status; } - ;; - push) - print_header; shift; push_changes "$*" - ;; - pull) - print_header; pull_changes - ;; - -s|--short) - show_status_short - ;; - *) - echo "Usage: $0 {status [-s]|push [message]|pull}" - exit 1 - ;; - esac -} - -main "$@" diff --git a/refactor_backup/bin/dotfiles-update.sh b/refactor_backup/bin/dotfiles-update.sh deleted file mode 100755 index 4959d26..0000000 --- a/refactor_backup/bin/dotfiles-update.sh +++ /dev/null @@ -1,111 +0,0 @@ -#!/usr/bin/env bash -# ============================================================================ -# Update Dotfiles Script -# ============================================================================ - -set -e - -SKIP_DEPS=true -PULL_ONLY=false - -for arg in "$@"; do - case "$arg" in - --skip-deps) SKIP_DEPS=true ;; - --with-deps) SKIP_DEPS=false ;; - --pull-only) PULL_ONLY=true ;; - --help|-h) - echo "Usage: dotfiles-update.sh [OPTIONS]" - echo "" - echo "Options:" - echo " --skip-deps Skip dependency check (default for updates)" - echo " --with-deps Run full dependency check" - echo " --pull-only Only git pull, don't re-run install script" - echo " --help Show this help message" - exit 0 - ;; - esac -done - -# Load Configuration -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -DOTFILES_CONF="${SCRIPT_DIR}/../dotfiles.conf" -[[ -f "$DOTFILES_CONF" ]] || DOTFILES_CONF="$HOME/.dotfiles/dotfiles.conf" - -if [[ -f "$DOTFILES_CONF" ]]; then - source "$DOTFILES_CONF" -else - DOTFILES_DIR="$HOME/.dotfiles" - DOTFILES_BRANCH="main" - DOTFILES_RAW_URL="https://raw.githubusercontent.com/adlee-was-taken/dotfiles/main" -fi - -# Source shared colors and utils (provides DF_WIDTH) -source "$DOTFILES_DIR/zsh/lib/utils.zsh" 2>/dev/null || \ -source "$DOTFILES_DIR/zsh/lib/colors.zsh" 2>/dev/null || { - DF_GREEN=$'\033[0;32m' DF_YELLOW=$'\033[1;33m' DF_RED=$'\033[0;31m' - DF_BLUE=$'\033[0;34m' DF_CYAN=$'\033[0;36m' DF_NC=$'\033[0m' - DF_GREY=$'\033[38;5;242m' DF_LIGHT_BLUE=$'\033[38;5;39m' - DF_BOLD=$'\033[1m' DF_DIM=$'\033[2m' DF_LIGHT_GREEN=$'\033[38;5;82m' -} - -# Use DF_WIDTH from utils.zsh or default to 66 -readonly WIDTH="${DF_WIDTH:-66}" - -# ============================================================================ -# MOTD-style header -# ============================================================================ - -print_header() { - if declare -f df_print_header &>/dev/null; then - df_print_header "dotfiles-update" - else - local user="${USER:-root}" - local hostname="${HOSTNAME:-$(hostname -s 2>/dev/null)}" - local datetime=$(date '+%a %b %d %H:%M') - local hline="" && for ((i=0; i${DF_NC} $1"; } - -# ============================================================================ -# Main -# ============================================================================ - -print_header - -if [ ! -d "$DOTFILES_DIR" ]; then - print_error "Dotfiles directory not found: $DOTFILES_DIR" - exit 1 -fi - -cd "$DOTFILES_DIR" - -print_step "Updating dotfiles from repository..." -git pull origin "$DOTFILES_BRANCH" - -if [ $? -eq 0 ]; then - print_success "Dotfiles updated successfully" - - if [[ "$PULL_ONLY" == true ]]; then - echo - print_success "Pull complete (--pull-only mode)" - exit 0 - fi - - echo - print_success "Update complete!" - echo -e "Reload your shell: ${DF_CYAN}reload${DF_NC} or ${DF_CYAN}source ~/.zshrc${DF_NC}" -else - print_error "Failed to update dotfiles" - exit 1 -fi diff --git a/refactor_backup/bin/dotfiles-vault.sh b/refactor_backup/bin/dotfiles-vault.sh deleted file mode 100755 index 733bc24..0000000 --- a/refactor_backup/bin/dotfiles-vault.sh +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/env bash -# ============================================================================ -# Dotfiles Secrets Vault (Arch/CachyOS) -# ============================================================================ - -set -e - -readonly DOTFILES_HOME="${DOTFILES_HOME:-$HOME/.dotfiles}" -readonly VAULT_DIR="${HOME}/.dotfiles/vault" -readonly VAULT_FILE="${VAULT_DIR}/secrets.enc" - -# Source shared colors and utils (provides DF_WIDTH) -source "$DOTFILES_HOME/zsh/lib/utils.zsh" 2>/dev/null || \ -source "$DOTFILES_HOME/zsh/lib/colors.zsh" 2>/dev/null || { - DF_RED=$'\033[0;31m' DF_GREEN=$'\033[0;32m' DF_YELLOW=$'\033[1;33m' - DF_BLUE=$'\033[0;34m' DF_CYAN=$'\033[0;36m' DF_NC=$'\033[0m' - DF_GREY=$'\033[38;5;242m' DF_LIGHT_BLUE=$'\033[38;5;39m' - DF_BOLD=$'\033[1m' DF_DIM=$'\033[2m' DF_LIGHT_GREEN=$'\033[38;5;82m' -} - -# Use DF_WIDTH from utils.zsh or default to 66 -readonly WIDTH="${DF_WIDTH:-66}" - -# ============================================================================ -# MOTD-style header -# ============================================================================ - -print_header() { - if declare -f df_print_header &>/dev/null; then - df_print_header "dotfiles-vault " - else - local user="${USER:-root}" - local hostname="${HOSTNAME:-$(hostname -s 2>/dev/null)}" - local datetime=$(date '+%a %b %d %H:%M') - local hline="" && for ((i=0; i&2; } -print_section() { echo ""; echo -e "${DF_BLUE}▶${DF_NC} $1"; } - -get_cipher() { - command -v age &> /dev/null && echo "age" || \ - command -v gpg &> /dev/null && echo "gpg" || \ - { print_error "No encryption tool available"; exit 1; } -} - -init_vault() { - print_section "Initializing Vault" - mkdir -p "$VAULT_DIR" - chmod 700 "$VAULT_DIR" - [[ ! -f "$VAULT_FILE" ]] && { echo "{}" > "$VAULT_FILE"; print_success "Vault initialized"; } || print_success "Vault exists" -} - -vault_list() { - print_section "Secrets" - [[ -f "$VAULT_FILE" ]] && cat "$VAULT_FILE" | grep -o '"[^"]*":' | sed 's/"//g;s/:$//' | while read key; do - echo -e " ${DF_CYAN}•${DF_NC} $key" - done || print_error "No vault file" - echo "" -} - -vault_status() { - print_section "Vault Status" - [[ -d "$VAULT_DIR" ]] || { echo -e " ${DF_YELLOW}⚠${DF_NC} Vault not initialized"; return; } - [[ -f "$VAULT_FILE" ]] || { echo -e " ${DF_YELLOW}⚠${DF_NC} Vault file not found"; return; } - echo -e " ${DF_CYAN}Location:${DF_NC} $VAULT_FILE" - echo -e " ${DF_CYAN}Encryption:${DF_NC} $(get_cipher)" - echo "" -} - -main() { - print_header - [[ ! -d "$VAULT_DIR" ]] && init_vault - case "${1:-list}" in - init) init_vault ;; - list|ls) vault_list ;; - status) vault_status ;; - *) echo "Usage: $0 {init|list|status}"; exit 1 ;; - esac -} - -main "$@" diff --git a/refactor_backup/bin/dotfiles-version.sh b/refactor_backup/bin/dotfiles-version.sh deleted file mode 100755 index c73d529..0000000 --- a/refactor_backup/bin/dotfiles-version.sh +++ /dev/null @@ -1,102 +0,0 @@ -#!/usr/bin/env bash -# ============================================================================ -# Dotfiles Version Checker -# ============================================================================ - -# ============================================================================ -# Source Configuration -# ============================================================================ - -_df_source_config() { - local locations=( - "${DOTFILES_HOME:-$HOME/.dotfiles}/zsh/lib/utils.zsh" - "$HOME/.dotfiles/zsh/lib/utils.zsh" - ) - for loc in "${locations[@]}"; do - [[ -f "$loc" ]] && { source "$loc"; return 0; } - done - - # Fallback defaults - DF_GREEN=$'\033[0;32m' DF_YELLOW=$'\033[1;33m' DF_CYAN=$'\033[0;36m' - DF_NC=$'\033[0m' DF_GREY=$'\033[38;5;242m' DF_LIGHT_BLUE=$'\033[38;5;39m' - DF_BOLD=$'\033[1m' DF_LIGHT_GREEN=$'\033[38;5;82m' - DOTFILES_DIR="${DOTFILES_DIR:-$HOME/.dotfiles}" - DOTFILES_VERSION="${DOTFILES_VERSION:-unknown}" - DOTFILES_BRANCH="${DOTFILES_BRANCH:-main}" - DF_WIDTH="${DF_WIDTH:-66}" -} - -_df_source_config - -# ============================================================================ -# Parse Arguments -# ============================================================================ - -CHECK_ONLY=false -for arg in "$@"; do - case "$arg" in - --check|-c) CHECK_ONLY=true ;; - --help|-h) echo "Usage: dotfiles-version.sh [--check]"; exit 0 ;; - esac -done - -# ============================================================================ -# Header -# ============================================================================ - -print_header() { - if declare -f df_print_header &>/dev/null; then - df_print_header "dotfiles-version " - else - local user="${USER:-root}" - local hostname="${HOSTNAME:-$(hostname -s 2>/dev/null)}" - local datetime=$(date '+%a %b %d %H:%M') - local width="${DF_WIDTH:-66}" - local hline="" && for ((i=0; i/dev/null || echo "unknown"; } || echo "not a git repo" -} - -get_local_date() { - [[ -d "${DOTFILES_DIR}/.git" ]] && { cd "$DOTFILES_DIR"; git log -1 --format="%ci" 2>/dev/null | cut -d' ' -f1 || echo "unknown"; } || echo "unknown" -} - -# ============================================================================ -# Main -# ============================================================================ - -main() { - local local_commit=$(get_local_commit) - local local_date=$(get_local_date) - - if [[ "$CHECK_ONLY" == true ]]; then - echo "Version: $DOTFILES_VERSION ($local_commit)" - exit 0 - fi - - print_header - - echo -e "${DF_CYAN}Local:${DF_NC}" - echo -e " Version: ${DF_GREEN}${DOTFILES_VERSION}${DF_NC}" - echo -e " Commit: ${local_commit}" - echo -e " Date: ${local_date}" - echo -e " Path: ${DOTFILES_DIR}" - echo -e " Branch: ${DOTFILES_BRANCH}" - echo -e " Width: ${DF_WIDTH}" - echo -} - -main "$@" diff --git a/refactor_backup/setup/setup-espanso.sh b/refactor_backup/setup/setup-espanso.sh deleted file mode 100755 index 6bc40b4..0000000 --- a/refactor_backup/setup/setup-espanso.sh +++ /dev/null @@ -1,317 +0,0 @@ -#!/usr/bin/env bash -# ============================================================================ -# Espanso Setup and Configuration Script -# ============================================================================ - -set -e - -# ============================================================================ -# Load Configuration -# ============================================================================ - -SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -DOTFILES_CONF="${SCRIPT_DIR}/../dotfiles.conf" -[[ -f "$DOTFILES_CONF" ]] || DOTFILES_CONF="$HOME/.dotfiles/dotfiles.conf" - -if [[ -f "$DOTFILES_CONF" ]]; then - source "$DOTFILES_CONF" -else - DOTFILES_DIR="$HOME/.dotfiles" - USER_FULLNAME="" - USER_EMAIL="" - USER_PHONE="" - USER_WEBSITE="" - USER_GITHUB="" -fi - -# ============================================================================ -# Colors -# ============================================================================ - -# Source shared colors and utils (provides DF_WIDTH) -source "$DOTFILES_DIR/zsh/lib/utils.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/utils.zsh" 2>/dev/null || \ -source "$DOTFILES_DIR/zsh/lib/colors.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/colors.zsh" 2>/dev/null || { - typeset -g DF_NC=$'\033[0m' DF_BOLD=$'\033[1m' DF_DIM=$'\033[2m' - typeset -g DF_BLUE=$'\033[38;5;39m' DF_CYAN=$'\033[38;5;51m' - typeset -g DF_GREEN=$'\033[38;5;82m' DF_YELLOW=$'\033[38;5;220m' - typeset -g DF_RED=$'\033[38;5;196m' DF_GREY=$'\033[38;5;242m' DF_NC=$'\033[0m' - typeset -g DF_LIGHT_BLUE=$'\033[38;5;39m' DF_LIGHT_GREEN=$'\033[38;5;82m' -} - -# Use DF_WIDTH from utils.zsh or default to 66 -readonly WIDTH="${DF_WIDTH:-66}" - -# ============================================================================ -# MOTD-style header -# ============================================================================ - -print_header() { - local user="${USER:-root}" - local hostname="${HOSTNAME:-$(hostname -s 2>/dev/null)}" - local script_name="setup-espanso" - local datetime=$(date '+%a %b %d %H:%M') - - local hline="" - for ((i=0; i${DF_NC} $1" -} - -print_success() { - echo -e "${DF_GREEN}✓${DF_NC} $1" -} - -print_warning() { - echo -e "${DF_YELLOW}⚠${DF_NC} $1" -} - -print_error() { - echo -e "${DF_RED}✗${DF_NC} $1" -} - -ask_yes_no() { - local prompt="$1" - local default="${2:-y}" - - if [[ "$default" == "y" ]]; then - prompt="$prompt [Y/n]: " - else - prompt="$prompt [y/N]: " - fi - - read -p "$prompt" response - response=${response:-$default} - [[ "$response" =~ ^[Yy]$ ]] -} - -# ============================================================================ -# Functions -# ============================================================================ - -check_espanso() { - if ! command -v espanso &> /dev/null; then - print_error "espanso is not installed" - echo "Install it from: https://espanso.org/install/" - echo "Or run the main dotfiles install script" - exit 1 - fi - print_success "espanso is installed: $(espanso --version)" -} - -show_espanso_status() { - print_step "Checking espanso status" - - if espanso status | grep -q "running"; then - print_success "espanso service is running" - else - print_warning "espanso service is not running" - if ask_yes_no "Start espanso service?"; then - espanso service start - print_success "espanso service started" - fi - fi -} - -personalize_config() { - print_step "Personalizing espanso configuration" - - local personal_file="$HOME/.config/espanso/match/personal.yml" - - if [ ! -f "$personal_file" ]; then - print_warning "Personal config file not found, creating from template..." - mkdir -p "$(dirname "$personal_file")" - cat > "$personal_file" << 'EOF' -# ============================================================================ -# Personal Espanso Snippets -# ============================================================================ -# Edit these with your own information - -matches: - # Personal info - - trigger: "..myemail" - replace: "your.email@example.com" - - - trigger: "..myname" - replace: "Your Full Name" - - - trigger: "..myphone" - replace: "+1 (555) 123-4567" - - - trigger: "..myweb" - replace: "https://yourwebsite.com" - - - trigger: "..mygithub" - replace: "https://github.com/yourusername" - - # Email signature - - trigger: "..sig" - replace: | - Best regards, - Your Full Name - your.email@example.com - - # Address (customize as needed) - - trigger: "..myaddr" - replace: | - 123 Main Street - City, ST 12345 -EOF - print_success "Created personal.yml template" - fi - - echo - echo "Let's personalize your espanso configuration!" - echo "(Press Enter to keep existing/default values)" - echo - - # Use config values as defaults, prompt for any missing - local fullname="${USER_FULLNAME}" - local email="${USER_EMAIL}" - local phone="${USER_PHONE}" - local website="${USER_WEBSITE}" - local github="${USER_GITHUB}" - - [[ -z "$fullname" ]] && read -p "Your full name: " fullname - [[ -z "$email" ]] && read -p "Your email: " email - [[ -z "$phone" ]] && read -p "Your phone (optional): " phone - [[ -z "$website" ]] && read -p "Your website (optional): " website - [[ -z "$github" ]] && read -p "Your GitHub username (optional): " github - - # Create backup - cp "$personal_file" "$personal_file.backup" - - # Update values - [[ -n "$email" ]] && sed -i "s/your.email@example.com/$email/g" "$personal_file" - [[ -n "$fullname" ]] && sed -i "s/Your Full Name/$fullname/g" "$personal_file" - [[ -n "$phone" ]] && sed -i "s/+1 (555) 123-4567/$phone/g" "$personal_file" - [[ -n "$website" ]] && sed -i "s|https://yourwebsite.com|$website|g" "$personal_file" - [[ -n "$github" ]] && sed -i "s/yourusername/$github/g" "$personal_file" - - print_success "Personal configuration updated!" - print_warning "Backup saved to: $personal_file.backup" - - # Suggest updating dotfiles.conf for future installs - echo - echo -e "${DF_BLUE}Tip:${DF_NC} Add these to dotfiles.conf for future installs:" - echo " USER_FULLNAME=\"$fullname\"" - echo " USER_EMAIL=\"$email\"" - [[ -n "$github" ]] && echo " USER_GITHUB=\"$github\"" -} - -install_packages() { - print_step "Installing espanso packages" - - echo - echo "Available packages to install:" - echo " 1. emoji - Emoji snippets (e.g., :smile: → 😊)" - echo " 2. greek-letters - Greek letters (e.g., :alpha: → α)" - echo " 3. math - Math symbols (e.g., :sum: → ∑)" - echo - - if ask_yes_no "Install emoji package?"; then - espanso install emoji --force - print_success "Emoji package installed" - fi - - if ask_yes_no "Install greek-letters package?"; then - espanso install greek-letters --force - print_success "Greek letters package installed" - fi - - if ask_yes_no "Install math package?"; then - espanso install math --force - print_success "Math package installed" - fi -} - -list_installed_packages() { - print_step "Installed espanso packages" - echo - espanso package list - echo -} - -show_usage_tips() { - print_step "Usage tips" - - cat << EOF - -${DF_GREEN}Espanso Quick Start:${DF_NC} - -${DF_YELLOW}Toggle espanso on/off:${DF_NC} - ALT+SHIFT+E - -${DF_YELLOW}Open search menu:${DF_NC} - ALT+SPACE - -${DF_YELLOW}Basic triggers:${DF_NC} - ..date → Current date (YYYY-MM-DD) - ..time → Current time (HH:MM:SS) - ..shrug → ¯\\_(ツ)_/¯ - ..gstat → git status - ..myemail → Your email - -${DF_YELLOW}Espanso commands:${DF_NC} - espanso status - Check if running - espanso restart - Restart service - espanso log - View logs - -${DF_YELLOW}Configuration files:${DF_NC} - ~/.config/espanso/match/base.yml - Main snippets - ~/.config/espanso/match/personal.yml - Your personal snippets - -EOF -} - -# ============================================================================ -# Main -# ============================================================================ - -main() { - print_header - - check_espanso - show_espanso_status - - echo - if ask_yes_no "Personalize your configuration?"; then - personalize_config - fi - - echo - if ask_yes_no "Install additional espanso packages?"; then - install_packages - fi - - echo - list_installed_packages - - echo - show_usage_tips - - echo - print_success "Espanso setup complete!" - echo - echo "Try typing ${DF_YELLOW}..date${DF_NC} in any application to test it!" -} - -main "$@" diff --git a/refactor_backup/setup/setup-wizard.sh b/refactor_backup/setup/setup-wizard.sh deleted file mode 100755 index b893fee..0000000 --- a/refactor_backup/setup/setup-wizard.sh +++ /dev/null @@ -1,127 +0,0 @@ -#!/usr/bin/env bash -# ============================================================================ -# Dotfiles Interactive Setup Wizard -# ============================================================================ - -set -e - -# ============================================================================ -# Source Configuration -# ============================================================================ - -_df_source_config() { - local locations=( - "${DOTFILES_DIR:-$HOME/.dotfiles}/zsh/lib/utils.zsh" - "$HOME/.dotfiles/zsh/lib/utils.zsh" - ) - for loc in "${locations[@]}"; do - [[ -f "$loc" ]] && { source "$loc"; return 0; } - done - - # Fallback defaults - DF_GREEN=$'\033[0;32m' DF_YELLOW=$'\033[1;33m' DF_RED=$'\033[0;31m' - DF_BLUE=$'\033[0;34m' DF_CYAN=$'\033[0;36m' DF_NC=$'\033[0m' - DF_GREY=$'\033[38;5;242m' DF_LIGHT_BLUE=$'\033[38;5;39m' - DF_BOLD=$'\033[1m' DF_DIM=$'\033[2m' DF_LIGHT_GREEN=$'\033[38;5;82m' - DOTFILES_DIR="${DOTFILES_DIR:-$HOME/.dotfiles}" - DOTFILES_VERSION="${DOTFILES_VERSION:-1.0.0}" - DF_WIDTH="${DF_WIDTH:-66}" -} - -_df_source_config - -# ============================================================================ -# Header -# ============================================================================ - -print_header() { - if declare -f df_print_header &>/dev/null; then - df_print_header "setup-wizard" - else - local user="${USER:-root}" - local hostname="${HOSTNAME:-$(hostname -s 2>/dev/null)}" - local datetime=$(date '+%a %b %d %H:%M') - local width="${DF_WIDTH:-66}" - local hline="" && for ((i=0; i/dev/null && HAS_GUM=true - -wizard_confirm() { - local prompt="$1" - local default="${2:-yes}" - if [[ "$HAS_GUM" == true ]]; then - [[ "$default" == "yes" ]] && gum confirm --default=yes "$prompt" || gum confirm --default=no "$prompt" - else - local yn_prompt="[Y/n]" - [[ "$default" == "no" ]] && yn_prompt="[y/N]" - read -p "$prompt $yn_prompt: " response - response=${response:-${default:0:1}} - [[ "$response" =~ ^[Yy] ]] - fi -} - -wizard_input() { - local prompt="$1" - local default="$2" - if [[ "$HAS_GUM" == true ]]; then - gum input --placeholder "$default" --value "$default" --prompt "$prompt: " - else - read -p "$prompt [$default]: " response - echo "${response:-$default}" - fi -} - -# ============================================================================ -# Wizard Steps -# ============================================================================ - -step_welcome() { - clear - print_header - echo -e "${DF_BOLD}Welcome to Dotfiles Setup Wizard${DF_NC}" - echo -e "${DF_DIM}Version: $DOTFILES_VERSION | Width: $DF_WIDTH${DF_NC}" - echo - wizard_confirm "Ready to begin?" || { echo "Cancelled."; exit 0; } -} - -step_user_info() { - echo -e "\n${DF_BLUE}▶${DF_NC} Personal Information" - USER_FULLNAME=$(wizard_input "Full Name" "${USER_FULLNAME:-}") - USER_EMAIL=$(wizard_input "Email" "${USER_EMAIL:-}") - USER_GITHUB=$(wizard_input "GitHub Username" "${USER_GITHUB:-}") -} - -step_summary() { - echo -e "\n${DF_GREEN}✓${DF_NC} Setup Complete!" - echo - echo " Name: $USER_FULLNAME" - echo " Email: $USER_EMAIL" - echo " GitHub: $USER_GITHUB" - echo - echo -e "${DF_DIM}Run 'source ~/.zshrc' to apply changes.${DF_NC}" -} - -# ============================================================================ -# Main -# ============================================================================ - -main() { - step_welcome - step_user_info - step_summary -} - -[[ "${BASH_SOURCE[0]}" == "${0}" ]] && main "$@" diff --git a/refactor_backup/zsh/.zshrc b/refactor_backup/zsh/.zshrc deleted file mode 100644 index d77513d..0000000 --- a/refactor_backup/zsh/.zshrc +++ /dev/null @@ -1,377 +0,0 @@ -# ============================================================================ -# ADLee's ZSH Configuration (Optimized) -# ============================================================================ -# Optimizations: -# - Deferred/lazy loading for heavy plugins -# - Parallel background loading where possible -# - Compiled zsh files (.zwc) for faster parsing -# - Minimal command -v checks (cached) -# ============================================================================ - -# --- Profiling (uncomment to debug slow startup) --- -# zmodload zsh/zprof - -# ============================================================================ -# Instant Prompt (show prompt immediately while loading continues) -# ============================================================================ - -# Cache command existence checks -typeset -gA _cmd_cache -_has_cmd() { - if [[ -z "${_cmd_cache[$1]+x}" ]]; then - _cmd_cache[$1]=$(command -v "$1" &>/dev/null && echo 1 || echo 0) - fi - [[ "${_cmd_cache[$1]}" == "1" ]] -} - -# ============================================================================ -# Core Settings (fast, no external calls) -# ============================================================================ - -export ZSH="$HOME/.oh-my-zsh" -export EDITOR='vim' -export VISUAL='vim' -export LANG=en_US.UTF-8 -export LC_ALL=en_US.UTF-8 -export PATH="$HOME/.local/bin:$PATH" - -# History (set early) -HISTSIZE=10000 -SAVEHIST=10000 -HISTFILE=~/.zsh_history -setopt SHARE_HISTORY APPEND_HISTORY EXTENDED_HISTORY -setopt HIST_IGNORE_ALL_DUPS HIST_FIND_NO_DUPS HIST_IGNORE_SPACE - -# ============================================================================ -# Theme Configuration -# ============================================================================ - -ZSH_THEME="adlee" - -# ============================================================================ -# Oh-My-Zsh Settings (before sourcing) -# ============================================================================ - -zstyle ':omz:update' mode reminder -zstyle ':omz:update' frequency 13 -COMPLETION_WAITING_DOTS="true" -HIST_STAMPS="yyyy-mm-dd" - -# Disable oh-my-zsh auto-update check on every load (slow) -DISABLE_AUTO_UPDATE="true" - -# ============================================================================ -# Plugins - Optimized Selection -# ============================================================================ -# Removed heavy plugins that aren't always needed -# kubectl, docker-compose loaded on-demand - -plugins=( - git - sudo - zsh-autosuggestions - zsh-syntax-highlighting -) - -# Conditionally add plugins only if tools exist -[[ -d "$HOME/.fzf" || -f "/usr/share/fzf/key-bindings.zsh" ]] && plugins+=(fzf) - -# ============================================================================ -# Load Oh-My-Zsh -# ============================================================================ - -source $ZSH/oh-my-zsh.sh - -# ============================================================================ -# Aliases (inline - no external checks during definition) -# ============================================================================ - -# Navigation -alias ..='cd ..' -alias ...='cd ../..' -alias ....='cd ../../..' -alias ~='cd ~' - -# Git shortcuts -alias g='git' -alias gs='git status' -alias ga='git add' -alias gc='git commit' -alias gp='git push' -alias gl='git pull' -alias gd='git diff' -alias gco='git checkout' -alias gb='git branch' -alias glog='git log --oneline --graph --decorate --all' - -# Docker shortcuts -alias d='docker' -alias dc='docker-compose' -alias dps='docker ps' -alias dpa='docker ps -a' -alias di='docker images' -alias dex='docker exec -it' - -# System -alias h='history' -alias c='clear' -alias rm='rm -i' -alias cp='cp -i' -alias mv='mv -i' -alias myip='curl -s ifconfig.me' -alias ports='netstat -tulanp' - -# ============================================================================ -# Deferred Alias Setup (runs after prompt displays) -# ============================================================================ - -_setup_tool_aliases() { - # eza/ls aliases - if _has_cmd eza; then - alias ls='eza --icons' - alias ll='eza -lah --icons' - alias la='eza -a --icons' - alias lt='eza --tree --level=2 --icons' - else - alias ll='ls -lah' - alias la='ls -A' - fi - - # bat/cat aliases - if _has_cmd batcat; then - alias cat='batcat --paging=never' - alias bat='batcat' - elif _has_cmd bat; then - alias cat='bat --paging=never' - fi -} - -# ============================================================================ -# Functions -# ============================================================================ - -push-it() { git add . && git commit -m "$1" && git push origin; } -mkcd() { mkdir -p "$1" && cd "$1"; } -ff() { find . -type f -iname "*$1*"; } -fdir() { find . -type d -iname "*$1*"; } -backup() { cp "$1" "$1.backup-$(date +%Y%m%d-%H%M%S)"; } - -extract() { - [[ ! -f "$1" ]] && { echo "'$1' is not a valid file"; return 1; } - case "$1" in - *.tar.bz2) tar xjf "$1" ;; - *.tar.gz) tar xzf "$1" ;; - *.bz2) bunzip2 "$1" ;; - *.rar) unrar x "$1" ;; - *.gz) gunzip "$1" ;; - *.tar) tar xf "$1" ;; - *.tbz2) tar xjf "$1" ;; - *.tgz) tar xzf "$1" ;; - *.zip) unzip "$1" ;; - *.Z) uncompress "$1" ;; - *.7z) 7z x "$1" ;; - *) echo "'$1' cannot be extracted via extract()" ;; - esac -} - -# ============================================================================ -# Key Bindings! -# ============================================================================ - -bindkey "^[[1;5C" forward-word -bindkey "^[[1;5D" backward-word -bindkey "^[[H" beginning-of-line -bindkey "^[[F" end-of-line -bindkey "^[[3~" delete-char - -# Alt+R to reload -function reload-zsh() { echo "Reloading ~/.zshrc ... "; source ~/.zshrc; zle reset-prompt} -zle -N reload-zsh -bindkey "^[r" reload-zsh - -# ============================================================================ -# FZF Configuration (deferred) -# ============================================================================ - -_setup_fzf() { - export FZF_DEFAULT_OPTS='--height 40% --layout=reverse --border' - if _has_cmd fd; then - export FZF_DEFAULT_COMMAND='fd --type f --hidden --follow --exclude .git' - export FZF_CTRL_T_COMMAND="$FZF_DEFAULT_COMMAND" - fi -} - -# ============================================================================ -# Lazy-loaded Tools -# ============================================================================ - -# NVM -export NVM_DIR="$HOME/.nvm" -if [[ -s "$NVM_DIR/nvm.sh" ]]; then - _load_nvm() { - unfunction nvm node npm npx 2>/dev/null - \. "$NVM_DIR/nvm.sh" - [[ -s "$NVM_DIR/bash_completion" ]] && \. "$NVM_DIR/bash_completion" - } - nvm() { _load_nvm; nvm "$@"; } - node() { _load_nvm; node "$@"; } - npm() { _load_nvm; npm "$@"; } - npx() { _load_nvm; npx "$@"; } -fi - -# Python virtualenvwrapper -export WORKON_HOME=$HOME/.virtualenvs -if [[ -f /usr/local/bin/virtualenvwrapper.sh ]]; then - _load_venv() { - unfunction workon mkvirtualenv rmvirtualenv 2>/dev/null - export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 - source /usr/local/bin/virtualenvwrapper.sh - } - workon() { _load_venv; workon "$@"; } - mkvirtualenv() { _load_venv; mkvirtualenv "$@"; } -fi - -# Rust cargo -[[ -f "$HOME/.cargo/env" ]] && source "$HOME/.cargo/env" - -# kubectl (lazy load - it's VERY slow to initialize) -if _has_cmd kubectl; then - kubectl() { - unfunction kubectl 2>/dev/null - source <(command kubectl completion zsh) - command kubectl "$@" - } -fi - -# ============================================================================ -# Dotfiles Configuration -# ============================================================================ - -_dotfiles_dir="$HOME/.dotfiles" - -# Load dotfiles.conf first (sets DOTFILES_DIR and other vars) -if [[ -f "$_dotfiles_dir/dotfiles.conf" ]]; then - source "$_dotfiles_dir/dotfiles.conf" -else - DOTFILES_DIR="$HOME/.dotfiles" - DOTFILES_BRANCH="main" -fi - -# Source shared colors library -[[ -f "$_dotfiles_dir/zsh/lib/colors.zsh" ]] && source "$_dotfiles_dir/zsh/lib/colors.zsh" - -# Source dotfiles aliases -[[ -f "$_dotfiles_dir/zsh/aliases.zsh" ]] && source "$_dotfiles_dir/zsh/aliases.zsh" - -# Load command-palette immediately (needed for keybindings) -[[ -f "$_dotfiles_dir/zsh/functions/command-palette.zsh" ]] && \ - source "$_dotfiles_dir/zsh/functions/command-palette.zsh" - -# ============================================================================ -# Deferred Loading (runs in background after prompt) -# ============================================================================ - -_deferred_load() { - # Setup tool aliases - _setup_tool_aliases - - # Setup FZF - _has_cmd fzf && _setup_fzf - - # ----------------------------------------------------------------------- - # Load all function files from functions directory - # Excludes command-palette.zsh (already loaded) and motd.zsh (loaded separately) - # ----------------------------------------------------------------------- - local func_dir="$_dotfiles_dir/zsh/functions" - if [[ -d "$func_dir" ]]; then - for func_file in "$func_dir"/*.zsh; do - [[ -f "$func_file" ]] || continue - - # Skip files that are loaded elsewhere - case "${func_file:t}" in - command-palette.zsh) continue ;; # Loaded early for keybindings - motd.zsh) continue ;; # Loaded after prompt - esac - - source "$func_file" - done - fi -} - -# ============================================================================ -# Background Tasks (truly async, won't block) -# ============================================================================ - -_background_tasks() { - # Check for dotfiles updates - if [[ "${DOTFILES_AUTO_SYNC_CHECK:-true}" == "true" ]]; then - $_dotfiles_dir/bin/dotfiles-sync.sh status -s 2> /dev/null - fi - _df_check_sys_updates -} - -_df_check_sys_updates() { - # Check number of available updates and export - if _has_cmd checkupdates; then - export UPDATE_PKG_COUNT=$(checkupdates 2>/dev/null | wc -l) - else - export UPDATE_PKG_COUNT=0 - fi -} - -# ============================================================================ -# Initialization Strategy -# ============================================================================ - -# Method 1: Use zsh-defer if available (best option) -if [[ -f "$_dotfiles_dir/zsh/plugins/zsh-defer/zsh-defer.plugin.zsh" ]]; then - source "$_dotfiles_dir/zsh/plugins/zsh-defer/zsh-defer.plugin.zsh" - zsh-defer _deferred_load - zsh-defer _background_tasks - zsh-defer -c '[[ -f "$_dotfiles_dir/zsh/functions/motd.zsh" ]] && source "$_dotfiles_dir/zsh/functions/motd.zsh" && show_motd' -else - # Method 2: Use sched for deferred loading (built-in) - # Runs after first prompt is displayed - zmodload zsh/sched 2>/dev/null - - _first_prompt_hook() { - # Remove this hook after first run - add-zsh-hook -d precmd _first_prompt_hook - - # Run deferred loading - _deferred_load - - # Show MOTD after prompt - if [[ -f "$_dotfiles_dir/zsh/functions/motd.zsh" ]]; then - source "$_dotfiles_dir/zsh/functions/motd.zsh" - case "${MOTD_STYLE:-compact}" in - compact) show_motd ;; - mini) show_motd_mini ;; - full) show_motd_full ;; - esac - fi - - # Background tasks - _background_tasks - } - - autoload -Uz add-zsh-hook - add-zsh-hook precmd _first_prompt_hook -fi - -# ============================================================================ -# OS-Specific -# ============================================================================ - -[[ "$(uname -s)" == "Darwin"* ]] && export HOMEBREW_NO_ANALYTICS=1 - -# ============================================================================ -# Local Configuration (always load - user overrides) -# ============================================================================ - -[[ -f ~/.zshrc.local ]] && source ~/.zshrc.local - -# ============================================================================ -# End - Profiling output (uncomment zprof at top to use) -# ============================================================================ -# zprof diff --git a/refactor_backup/zsh/.zshrc.zwc b/refactor_backup/zsh/.zshrc.zwc deleted file mode 100644 index 4e89c30..0000000 Binary files a/refactor_backup/zsh/.zshrc.zwc and /dev/null differ diff --git a/refactor_backup/zsh/aliases.zsh b/refactor_backup/zsh/aliases.zsh deleted file mode 100644 index c9fbc11..0000000 --- a/refactor_backup/zsh/aliases.zsh +++ /dev/null @@ -1,149 +0,0 @@ -# ============================================================================ -# Dotfiles Command Aliases -# ============================================================================ -# Convenient shortcuts for dotfiles management scripts -# -# Source this file in .zshrc (already included by default) -# ============================================================================ - -# Dotfiles directory -_df_dir="${DOTFILES_DIR:-$HOME/.dotfiles}" -_df_bin="$_df_dir/bin" - -# Helper to run dotfiles scripts (uses full path with fallback to PATH) -_df_run() { - local script="$1" - shift - if [[ -x "$_df_bin/$script" ]]; then - "$_df_bin/$script" "$@" - elif command -v "$script" &>/dev/null; then - "$script" "$@" - else - echo "Error: $script not found" >&2 - echo "Run the installer: ~/.dotfiles/install.sh" >&2 - return 1 - fi -} - -# --- Quality of Life Aliases --- -alias hist="history" - - -# --- Core Dotfiles Commands --- -alias dfdir='cd $HOME/.dotfiles' -alias c.='cd $HOME/.dotfiles' - -# Note: 'df' not aliased to avoid conflict with disk free utility - -# Doctor - health check -dfd() { _df_run dotfiles-doctor.sh "$@"; } -doctor() { _df_run dotfiles-doctor.sh "$@"; } -dffix() { _df_run dotfiles-doctor.sh --fix "$@"; } - -# Sync - multi-machine synchronization -dfs() { _df_run dotfiles-sync.sh "$@"; } -dfsync() { _df_run dotfiles-sync.sh "$@"; } -dfpush() { _df_run dotfiles-sync.sh push "${1:-Dotfiles update $(date '+%Y-%m-%d %H:%M')}"; } -dfpull() { _df_run dotfiles-sync.sh pull "$@"; } -dfstatus() { _df_run dotfiles-sync.sh status "$@"; } - -# Update - pull latest and reinstall -dfu() { _df_run dotfiles-update.sh "$@"; } -dfupdate() { _df_run dotfiles-update.sh "$@"; } - -# Version - check version info -dfv() { _df_run dotfiles-version.sh "$@"; } -dfversion() { _df_run dotfiles-version.sh "$@"; } - -# Stats - shell analytics (removed short 'stats' alias to force explicit usage) -dfstats() { _df_run dotfiles-stats.sh "$@"; } -tophist() { _df_run dotfiles-stats.sh --top "$@"; } -suggest() { _df_run dotfiles-stats.sh --suggest "$@"; } - -# Vault - secrets management -vault() { _df_run dotfiles-vault.sh "$@"; } -vls() { _df_run dotfiles-vault.sh list "$@"; } -vget() { _df_run dotfiles-vault.sh get "$@"; } -vset() { _df_run dotfiles-vault.sh set "$@"; } - -# Compile - compile zsh files for speed -dfcompile() { _df_run dotfiles-compile.sh "$@"; } - -# --- Quick Edit Aliases --- -alias v.zshrc='${EDITOR:-vim} ~/.zshrc' -alias v.conf='${EDITOR:-vim} ~/.dotfiles/dotfiles.conf' -alias v.edit='cd ~/.dotfiles && ${EDITOR:-vim} .' -alias v.alias='${EDITOR:-vim} ~/.dotfiles/zsh/aliases.zsh' -alias v.motd='${EDITOR:-vim} ~/.dotfiles/zsh/functions/motd.zsh' -alias v.theme='${EDITOR:-vim} ~/.dotfiles/zsh/themes/adlee.zsh-theme' - -# --- Reload Aliases --- -alias reload='source ~/.zshrc' -alias rl='source ~/.zshrc' - -# ============================================================================ -# Function Wrappers (for tab completion) -# ============================================================================ - -# Dotfiles main command with subcommands -dotfiles-cli() { - case "${1:-help}" in - doctor|doc|d) shift; _df_run dotfiles-doctor.sh "$@" ;; - sync|s) shift; _df_run dotfiles-sync.sh "$@" ;; - update|up|u) shift; _df_run dotfiles-update.sh "$@" ;; - version|ver|v) shift; _df_run dotfiles-version.sh "$@" ;; - stats|st) shift; _df_run dotfiles-stats.sh "$@" ;; - vault|vlt) shift; _df_run dotfiles-vault.sh "$@" ;; - compile|comp) shift; _df_run dotfiles-compile.sh "$@" ;; - edit|e) cd ~/.dotfiles && ${EDITOR:-vim} . ;; - cd) cd ~/.dotfiles ;; - help|--help|-h|*) - echo "Dotfiles CLI" - echo - echo "Usage: dotfiles-cli [args]" - echo - echo "Commands:" - echo " doctor, d Run health check (--fix to auto-repair)" - echo " sync, s Sync dotfiles across machines" - echo " update, u Pull latest and reinstall" - echo " version, v Show version info" - echo " stats, st Shell analytics dashboard" - echo " vault, vlt Secrets management" - echo " compile Compile zsh files for speed" - echo " edit, e Open dotfiles in editor" - echo " cd Change to dotfiles directory" - echo - echo "Aliases:" - echo " dfd, dffix, dfs, dfpush, dfpull, dfu, dfv, dfstats, vault" - echo - echo "Note: 'stats' alias removed - use 'dfstats' instead" - ;; - esac -} - -# Short alias for the CLI -alias dfc='dotfiles-cli' - -# Additional quality of life aliases/functions. - -# Use glow to "less" Markdown files: -alias glow='glow -p' -less() { - if ! command -v glow &>/dev/null; then - command less "$@" - return - fi - - if [[ $# -eq 1 && "$1" == *.md ]]; then - glow -p "$1" # -p for pager mode (like less) - else - command less "$@" - fi -} - -# Arch system upgrade with snapper pre/post -sys-update() { - local update_date=$(date -d "today" +"%Y-%m-%d %H:%M") - sudo snapper -c root create --description "System Update ${update_date}" --command "sudo pacman -Syu" - _df_check_sys_updates -} diff --git a/refactor_backup/zsh/aliases.zsh.zwc b/refactor_backup/zsh/aliases.zsh.zwc deleted file mode 100644 index 2118194..0000000 Binary files a/refactor_backup/zsh/aliases.zsh.zwc and /dev/null differ diff --git a/refactor_backup/zsh/functions/btrfs-helpers.zsh b/refactor_backup/zsh/functions/btrfs-helpers.zsh deleted file mode 100644 index 3088b58..0000000 --- a/refactor_backup/zsh/functions/btrfs-helpers.zsh +++ /dev/null @@ -1,210 +0,0 @@ -# ============================================================================ -# Btrfs Helpers for Arch/CachyOS -# ============================================================================ -# Quick commands for btrfs filesystem management -# ============================================================================ - -source "${0:A:h}/../lib/utils.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/utils.zsh" 2>/dev/null - -typeset -g BTRFS_DEFAULT_MOUNT="${BTRFS_DEFAULT_MOUNT:-/}" - -_btrfs_check() { - df_require_cmd btrfs btrfs-progs || return 1 - if ! df_is_btrfs; then - df_print_warning "Root filesystem is not btrfs" - return 1 - fi - return 0 -} - -btrfs-usage() { - _btrfs_check || return 1 - local mount="${1:-$BTRFS_DEFAULT_MOUNT}" - df_print_func_name "Btrfs Filesystem Usage: ${mount}" - sudo btrfs filesystem usage "$mount" -h -} - -btrfs-subs() { - _btrfs_check || return 1 - local mount="${1:-$BTRFS_DEFAULT_MOUNT}" - df_print_func_name "Btrfs Subvolumes" - df_print_section "Subvolume List" - sudo btrfs subvolume list "$mount" | while read -r line; do - local path=$(echo "$line" | awk '{print $NF}') - local id=$(echo "$line" | awk '{print $2}') - df_print_indent "● [$id] $path" - done - echo "" - df_print_section "Default Subvolume" - sudo btrfs subvolume get-default "$mount" -} - -btrfs-balance() { - _btrfs_check || return 1 - local mount="${1:-$BTRFS_DEFAULT_MOUNT}" - local usage="${2:-50}" - df_print_func_name "Btrfs Balance" - df_confirm_warning "This may take a while and use significant I/O" || return 0 - echo "" - df_print_step "Balancing data chunks with <${usage}% usage..." - sudo btrfs balance start -dusage="$usage" -musage="$usage" "$mount" -v - [[ $? -eq 0 ]] && df_print_success "Balance completed" || df_print_warning "Balance finished (may have been interrupted)" -} - -btrfs-balance-status() { - _btrfs_check || return 1 - df_print_func_name "Btrfs Balance Status" - sudo btrfs balance status "${1:-$BTRFS_DEFAULT_MOUNT}" -} - -btrfs-balance-cancel() { - _btrfs_check || return 1 - df_print_step "Cancelling balance..." - sudo btrfs balance cancel "${1:-$BTRFS_DEFAULT_MOUNT}" -} - -btrfs-scrub() { - _btrfs_check || return 1 - local mount="${1:-$BTRFS_DEFAULT_MOUNT}" - df_print_func_name "Btrfs Scrub" - local status=$(sudo btrfs scrub status "$mount" 2>/dev/null) - if echo "$status" | grep -q "running"; then - df_print_section "Scrub Status (running)" - echo "$status" | sed 's/^/ /' - return 0 - fi - df_print_warning "Scrub verifies data integrity and may take hours" - df_confirm "Start scrub?" || return 0 - df_print_step "Starting scrub..." - sudo btrfs scrub start "$mount" - echo "" - df_print_section "Scrub Status" - sudo btrfs scrub status "$mount" - df_print_info "Monitor with: btrfs-scrub-status" -} - -btrfs-scrub-status() { - _btrfs_check || return 1 - df_print_func_name "Btrfs Scrub Status" - sudo btrfs scrub status "${1:-$BTRFS_DEFAULT_MOUNT}" -} - -btrfs-scrub-cancel() { - _btrfs_check || return 1 - df_print_step "Cancelling scrub..." - sudo btrfs scrub cancel "${1:-$BTRFS_DEFAULT_MOUNT}" -} - -btrfs-defrag() { - _btrfs_check || return 1 - local target="${1:-.}" - [[ ! -e "$target" ]] && { df_print_error "Target not found: $target"; return 1; } - df_print_func_name "Btrfs Defragment" - if [[ -d "$target" ]]; then - df_print_warning "Recursive defrag on directory: $target" - df_confirm "Continue?" || return 0 - sudo btrfs filesystem defragment -r -v "$target" - else - df_print_step "Defragmenting: $target" - sudo btrfs filesystem defragment -v "$target" - fi - df_print_success "Defragmentation complete" -} - -btrfs-compress() { - _btrfs_check || return 1 - df_require_cmd compsize || return 1 - df_print_func_name "Btrfs Compression Statistics" - sudo compsize "${1:-$BTRFS_DEFAULT_MOUNT}" -} - -btrfs-info() { - _btrfs_check || return 1 - local mount="${1:-$BTRFS_DEFAULT_MOUNT}" - df_print_func_name "Btrfs Filesystem Information" - df_print_section "Filesystem Show" - sudo btrfs filesystem show "$mount" - echo "" - df_print_section "Filesystem df" - sudo btrfs filesystem df "$mount" - echo "" - df_print_section "Device Stats" - sudo btrfs device stats "$mount" -} - -btrfs-health() { - _btrfs_check || return 1 - local mount="${1:-$BTRFS_DEFAULT_MOUNT}" - df_print_func_name "Btrfs Health Check" - local issues=0 - - df_print_section "Device Errors" - local errors=$(sudo btrfs device stats "$mount" 2>/dev/null | grep -v " 0$" | grep -v "^$") - [[ -z "$errors" ]] && df_print_indent "✓ No errors" || { df_print_indent "✗ Errors detected:"; echo "$errors" | sed 's/^/ /'; ((issues++)); } - - echo "" - df_print_section "Space Allocation" - local used_pct=$(sudo btrfs filesystem usage "$mount" -b 2>/dev/null | grep "Used:" | head -1 | awk '{print $2}' | tr -d '%') - if [[ -n "$used_pct" ]]; then - (( used_pct >= 90 )) && { df_print_indent "✗ ${used_pct}% full - critical!"; ((issues++)); } || \ - (( used_pct >= 80 )) && df_print_indent "⚠ ${used_pct}% full" || df_print_indent "✓ ${used_pct}% used" - fi - - echo "" - df_print_section "Last Scrub" - local scrub=$(sudo btrfs scrub status "$mount" 2>/dev/null) - local scrub_date=$(echo "$scrub" | grep "Scrub started" | awk '{print $3, $4, $5}') - [[ -n "$scrub_date" ]] && df_print_indent "Last: $scrub_date" || df_print_indent "⚠ No scrub run yet" - - echo "" - (( issues == 0 )) && df_print_success "Filesystem healthy" || df_print_error "Found $issues issue(s)" -} - -btrfs-snap-usage() { - _btrfs_check || return 1 - df_print_func_name "Snapshot Disk Space Usage" - if [[ -d "/.snapshots" ]]; then - df_print_section "Snapshot Directory" - local size=$(timeout 10 sudo du -sh /.snapshots 2>/dev/null | cut -f1) - df_print_indent "${size:-Unable to calculate}" - echo "" - df_print_section "Individual Snapshots (top 10)" - timeout 30 sudo du -sh /.snapshots/*/ 2>/dev/null | sort -h | tail -10 | sed 's/^/ /' - else - df_print_warning "No /.snapshots directory found" - fi -} - -btrfs-maintain() { - _btrfs_check || return 1 - local mount="${1:-$BTRFS_DEFAULT_MOUNT}" - df_print_func_name "Btrfs Maintenance Routine" - echo "This will: health check, balance, scrub" - df_confirm_warning "This may take several hours" || return 0 - df_print_step "Step 1/3: Health Check" - btrfs-health "$mount" - df_print_step "Step 2/3: Balance" - sudo btrfs balance start -dusage=50 -musage=50 "$mount" - df_print_step "Step 3/3: Scrub" - sudo btrfs scrub start -B "$mount" - df_print_success "Maintenance complete" -} - -btrfs-help() { - df_print_func_name "Btrfs Helper Commands" - cat << 'EOF' - btrfs-usage [mount] Filesystem usage - btrfs-subs [mount] List subvolumes - btrfs-info [mount] Full filesystem info - btrfs-health [mount] Quick health check - btrfs-compress [path] Compression stats - btrfs-balance [mount] Start balance - btrfs-scrub [mount] Start scrub - btrfs-defrag Defragment - btrfs-snap-usage Snapshot space usage - btrfs-maintain [mount] Full maintenance -EOF -} - -alias btru='btrfs-usage' btrs='btrfs-subs' btrh='btrfs-health' btri='btrfs-info' btrc='btrfs-compress' diff --git a/refactor_backup/zsh/functions/btrfs-helpers.zsh.zwc b/refactor_backup/zsh/functions/btrfs-helpers.zsh.zwc deleted file mode 100644 index 05a5691..0000000 Binary files a/refactor_backup/zsh/functions/btrfs-helpers.zsh.zwc and /dev/null differ diff --git a/refactor_backup/zsh/functions/command-palette.zsh b/refactor_backup/zsh/functions/command-palette.zsh deleted file mode 100644 index 57ef146..0000000 --- a/refactor_backup/zsh/functions/command-palette.zsh +++ /dev/null @@ -1,136 +0,0 @@ -# ============================================================================ -# Command Palette - Fuzzy Command Launcher for Zsh -# ============================================================================ -# A Raycast/Alfred-style command palette for the terminal -# Keybinding: Ctrl+Space (configurable) -# ============================================================================ - -source "${0:A:h}/../lib/utils.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/utils.zsh" 2>/dev/null - -typeset -g PALETTE_HOTKEY="${PALETTE_HOTKEY:-^@}" -typeset -g PALETTE_HISTORY_SIZE=50 -typeset -g PALETTE_BOOKMARKS_FILE="$HOME/.dotfiles/.bookmarks" -typeset -g DOTFILES_DIR="${DOTFILES_DIR:-$HOME/.dotfiles}" - -typeset -g ICON_ALIAS="⚡" ICON_FUNC="λ" ICON_HIST="↺" ICON_DIR="📁" -typeset -g ICON_SCRIPT="⚙" ICON_ACTION="★" ICON_GIT="⎇" - -_palette_get_aliases() { - alias | sed 's/^alias //' | while IFS='=' read -r name cmd; do - cmd="${cmd#\'}"; cmd="${cmd%\'}"; cmd="${cmd#\"}"; cmd="${cmd%\"}" - printf "%s\t%s\t%s\t%s\n" "$ICON_ALIAS" "alias" "$name" "$cmd" - done -} - -_palette_get_functions() { - print -l ${(ok)functions} | grep -v "^_" | while read -r name; do - printf "%s\t%s\t%s\t%s\n" "$ICON_FUNC" "function" "$name" "" - done -} - -_palette_get_history() { - fc -ln -"$PALETTE_HISTORY_SIZE" 2>/dev/null | awk '!seen[$0]++' | while read -r cmd; do - [[ -n "$cmd" ]] && printf "%s\t%s\t%s\t%s\n" "$ICON_HIST" "history" "$cmd" "" - done -} - -_palette_get_bookmarks() { - [[ ! -f "$PALETTE_BOOKMARKS_FILE" ]] && return - while IFS='|' read -r name path desc; do - [[ "$name" =~ ^# || -z "$name" ]] && continue - printf "%s\t%s\t%s\t%s\n" "$ICON_DIR" "bookmark" "$name" "$path" - done < "$PALETTE_BOOKMARKS_FILE" -} - -_palette_get_actions() { - cat << 'EOF' -★ action reload-shell Reload zsh configuration -★ action edit-zshrc Edit ~/.zshrc -★ action dotfiles-update Update dotfiles -EOF - df_in_git_repo && cat << 'EOF' -⎇ git git-status Show git status -⎇ git git-pull Pull latest -⎇ git git-push Push commits -EOF -} - -_palette_run_action() { - case "$1" in - reload-shell) source ~/.zshrc; df_print_success "Shell reloaded" ;; - edit-zshrc) ${EDITOR:-vim} ~/.zshrc ;; - dotfiles-update) cd "$DOTFILES_DIR" && git pull ;; - git-status) git status ;; - git-pull) git pull ;; - git-push) git push ;; - *) df_print_error "Unknown action: $1" ;; - esac -} - -palette() { - df_require_cmd fzf || return 1 - local items=$(_palette_get_actions; _palette_get_aliases; _palette_get_functions; _palette_get_bookmarks; _palette_get_history) - local sel=$(echo "$items" | fzf --ansi --delimiter='\t' --with-nth=1,3,4 $(df_fzf_opts) --prompt='> ') - [[ -z "$sel" ]] && return - local type=$(echo "$sel" | cut -f2) name=$(echo "$sel" | cut -f3) detail=$(echo "$sel" | cut -f4) - case "$type" in - alias|history) print -z "$name" ;; - function) print -z "$name " ;; - bookmark) cd "$detail" && pwd ;; - action|git) _palette_run_action "$name" ;; - esac -} - -bookmark() { - local cmd="${1:-list}"; shift 2>/dev/null - case "$cmd" in - add) - local name="$1" path="${2:-$(pwd)}" desc="$3" - [[ -z "$name" ]] && { echo "Usage: bookmark add [path]"; return 1; } - df_ensure_file "$PALETTE_BOOKMARKS_FILE" "# Bookmarks: name|path|description" - grep -q "^${name}|" "$PALETTE_BOOKMARKS_FILE" 2>/dev/null && { - df_confirm "Overwrite '$name'?" || return 1 - grep -v "^${name}|" "$PALETTE_BOOKMARKS_FILE" > "${PALETTE_BOOKMARKS_FILE}.tmp" - mv "${PALETTE_BOOKMARKS_FILE}.tmp" "$PALETTE_BOOKMARKS_FILE" - } - echo "${name}|${path}|${desc}" >> "$PALETTE_BOOKMARKS_FILE" - df_print_success "Bookmarked: $name → $path" - ;; - delete|rm) - [[ -z "$1" ]] && { echo "Usage: bookmark delete "; return 1; } - grep -q "^${1}|" "$PALETTE_BOOKMARKS_FILE" 2>/dev/null || { df_print_error "Not found: $1"; return 1; } - grep -v "^${1}|" "$PALETTE_BOOKMARKS_FILE" > "${PALETTE_BOOKMARKS_FILE}.tmp" - mv "${PALETTE_BOOKMARKS_FILE}.tmp" "$PALETTE_BOOKMARKS_FILE" - df_print_success "Deleted: $1" - ;; - list|ls) - df_print_func_name "Bookmarks" - [[ ! -f "$PALETTE_BOOKMARKS_FILE" ]] && { df_print_info "No bookmarks"; return; } - while IFS='|' read -r name path desc; do - [[ "$name" =~ ^# || -z "$name" ]] && continue - df_print_indent "● $name → $path" - done < "$PALETTE_BOOKMARKS_FILE" - ;; - go) - [[ -z "$1" ]] && { echo "Usage: bookmark go "; return 1; } - local path=$(grep "^${1}|" "$PALETTE_BOOKMARKS_FILE" 2>/dev/null | cut -d'|' -f2) - [[ -n "$path" ]] && cd "$path" || df_print_error "Not found: $1" - ;; - *) echo "Usage: bookmark " ;; - esac -} - -bm() { - df_require_cmd fzf || return 1 - [[ ! -f "$PALETTE_BOOKMARKS_FILE" ]] && { df_print_info "No bookmarks"; return 1; } - local sel=$(grep -v "^#" "$PALETTE_BOOKMARKS_FILE" | grep -v "^$" | \ - fzf $(df_fzf_opts) --delimiter='|' --with-nth=1,2 --prompt='Bookmark > ') - [[ -n "$sel" ]] && cd "$(echo "$sel" | cut -d'|' -f2)" -} - -_palette_widget() { BUFFER=""; zle redisplay; palette; zle reset-prompt; } -zle -N _palette_widget -bindkey "$PALETTE_HOTKEY" _palette_widget - -alias p='palette' bml='bookmark list' bma='bookmark add' bmg='bookmark go' diff --git a/refactor_backup/zsh/functions/command-palette.zsh.zwc b/refactor_backup/zsh/functions/command-palette.zsh.zwc deleted file mode 100644 index b872726..0000000 Binary files a/refactor_backup/zsh/functions/command-palette.zsh.zwc and /dev/null differ diff --git a/refactor_backup/zsh/functions/motd.zsh b/refactor_backup/zsh/functions/motd.zsh deleted file mode 100644 index 8d08bce..0000000 --- a/refactor_backup/zsh/functions/motd.zsh +++ /dev/null @@ -1,201 +0,0 @@ -#!/usr/bin/env zsh -# ============================================================================ -# MOTD (Message of the Day) - Dynamic System Info -# ============================================================================ -# Displays system information on shell startup -# Optimized for Arch/CachyOS with direct /proc access -# -# Functions: -# show_motd - Compact box format -# show_motd_mini - Single line format -# show_motd_full - Extended info -# ============================================================================ - -# Only run in interactive shells -[[ -o interactive ]] || return 0 - -# ============================================================================ -# Source Configuration -# ============================================================================ -# utils.zsh sources config.zsh which sources dotfiles.conf -# This gives us DF_WIDTH, MOTD_STYLE, colors, and all other settings - -source "${0:A:h}/../lib/utils.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/utils.zsh" 2>/dev/null || { - # Fallback if utils.zsh not available - typeset -g DF_RESET=$'\033[0m' DF_BOLD=$'\033[1m' DF_DIM=$'\033[2m' - typeset -g DF_BLUE=$'\033[38;5;39m' DF_CYAN=$'\033[38;5;51m' - typeset -g DF_GREEN=$'\033[38;5;82m' DF_YELLOW=$'\033[38;5;220m' - typeset -g DF_RED=$'\033[38;5;196m' DF_GREY=$'\033[38;5;242m' DF_NC=$'\033[0m' - typeset -g DF_LIGHT_BLUE=$'\033[38;5;39m' DF_LIGHT_GREEN=$'\033[38;5;82m' - typeset -g DF_WIDTH="${DF_WIDTH:-66}" - typeset -g MOTD_STYLE="${MOTD_STYLE:-compact}" -} - -# ============================================================================ -# Optimized Info Gathering (using /proc directly) -# ============================================================================ - -_motd_uptime() { - local uptime_seconds=$(cut -d. -f1 /proc/uptime 2>/dev/null) - [[ -z "$uptime_seconds" ]] && { echo "?"; return; } - - local days=$((uptime_seconds / 86400)) - local hours=$(((uptime_seconds % 86400) / 3600)) - local mins=$(((uptime_seconds % 3600) / 60)) - - if (( days > 0 )); then - echo "${days}d${hours}h" - elif (( hours > 0 )); then - echo "${hours}h${mins}m" - else - echo "${mins}m" - fi -} - -_motd_load() { cut -d' ' -f1 /proc/loadavg 2>/dev/null || echo "?"; } - -_motd_mem() { - awk '/MemTotal/ {total=$2} /MemAvailable/ {avail=$2} END { - if (total > 0) { - used=(total-avail)/1024/1024 - total_gb=total/1024/1024 - printf "%.1fG/%.0fG", used, total_gb - } else { print "N/A" } - }' /proc/meminfo 2>/dev/null || echo "N/A" -} - -_motd_disk() { df -h / 2>/dev/null | awk 'NR==2 {print $3 "/" $2}' || echo "N/A"; } - -_motd_failed_services() { - local cache_file="/tmp/.motd-failed-${UID}" - local cache_age=300 - if [[ -f "$cache_file" ]]; then - local file_age=$(($(date +%s) - $(stat -c %Y "$cache_file" 2>/dev/null || echo 0))) - (( file_age < cache_age )) && { cat "$cache_file"; return; } - fi - local count=$(systemctl --failed --no-pager --no-legend 2>/dev/null | wc -l) - echo "$count" > "$cache_file" 2>/dev/null - echo "$count" -} - -_motd_updates() { echo "${UPDATE_PKG_COUNT:-0}"; } - -# ============================================================================ -# Box Drawing - Uses DF_WIDTH from config -# ============================================================================ - -_motd_line() { - local char="$1" - local width="${DF_WIDTH:-66}" - local line="" - for ((i=0; i/dev/null | awk -F" " '{print $1}') - local h_right="${datetime}" - local h_pad=$(((inner - ${#h_left} - ${#h_center} - ${#h_right}) / 2)) - local h_spaces="" - for ((i=0; i 0 )) && echo " ${DF_RED}⚠${DF_NC} ${failed} failed service(s)" - fi - - echo "" -} - -# ============================================================================ -# Mini Format (Single Line) -# ============================================================================ - -show_motd_mini() { - local hostname="${HOST:-$(hostname -s 2>/dev/null)}" - local uptime=$(_motd_uptime) - local load=$(_motd_load) - echo "${DF_LIGHT_BLUE}${hostname}${DF_NC} │ up ${uptime} │ load ${load}" -} - -# ============================================================================ -# Full Format (Extended Info) -# ============================================================================ - -show_motd_full() { - show_motd --force - - local width="${DF_WIDTH:-66}" - - echo "${DF_CYAN}System Details${DF_NC}" - printf "${DF_GREY}─%.0s${DF_NC}" $(seq 1 $width); echo "" - - echo " ${DF_DIM}Kernel:${DF_NC} $(uname -r)" - echo " ${DF_DIM}Shell:${DF_NC} ${SHELL##*/} ${ZSH_VERSION:-}" - - if [[ -f /etc/os-release ]]; then - local distro=$(grep '^PRETTY_NAME=' /etc/os-release | cut -d'"' -f2) - echo " ${DF_DIM}OS:${DF_NC} ${distro}" - fi - - if command -v pacman &>/dev/null; then - local pkg_count=$(pacman -Q 2>/dev/null | wc -l) - echo " ${DF_DIM}Packages:${DF_NC} ${pkg_count}" - fi - - echo "" -} - -# ============================================================================ -# Auto-display based on MOTD_STYLE from config -# ============================================================================ - -_motd_auto() { - case "${MOTD_STYLE:-compact}" in - full) show_motd_full ;; - mini) show_motd_mini ;; - none|off|false) ;; - *) show_motd ;; - esac -} - -# Run on source if ENABLE_MOTD is true -[[ "${ENABLE_MOTD:-true}" == "true" ]] && _motd_auto diff --git a/refactor_backup/zsh/functions/motd.zsh.zwc b/refactor_backup/zsh/functions/motd.zsh.zwc deleted file mode 100644 index 235f0dc..0000000 Binary files a/refactor_backup/zsh/functions/motd.zsh.zwc and /dev/null differ diff --git a/refactor_backup/zsh/functions/password-manager.zsh b/refactor_backup/zsh/functions/password-manager.zsh deleted file mode 100644 index 4778aea..0000000 --- a/refactor_backup/zsh/functions/password-manager.zsh +++ /dev/null @@ -1,84 +0,0 @@ -# ============================================================================ -# Password Manager Integration (LastPass CLI) -# ============================================================================ - -source "${0:A:h}/../lib/utils.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/utils.zsh" 2>/dev/null - -typeset -g PW_CLIP_TIME="${PW_CLIP_TIME:-45}" - -_pw_check() { - df_require_cmd lpass lastpass-cli || return 1 - if ! lpass status -q 2>/dev/null; then - df_print_warning "Not logged in" - df_print_step "Logging in..." - lpass login --trust "${LPASS_USER:-}" || { df_print_error "Login failed"; return 1; } - fi -} - -_pw_copy() { - local text="$1" label="${2:-Password}" - if df_cmd_exists wl-copy; then - echo -n "$text" | wl-copy - elif df_cmd_exists xclip; then - echo -n "$text" | xclip -selection clipboard - else - df_print_error "No clipboard tool (install wl-clipboard or xclip)" - return 1 - fi - df_print_success "$label copied (clears in ${PW_CLIP_TIME}s)" - (sleep "$PW_CLIP_TIME" && { wl-copy "" 2>/dev/null || xclip -selection clipboard < /dev/null 2>/dev/null; }) & -} - -pw() { - local cmd="${1:-search}" - case "$cmd" in - login) lpass login --trust "${LPASS_USER:-}" ;; - logout) lpass logout -f; df_print_success "Logged out" ;; - sync) _pw_check || return 1; df_print_step "Syncing..."; lpass sync; df_print_success "Synced" ;; - show) _pw_check || return 1; [[ -z "$2" ]] && { echo "Usage: pw show "; return 1; }; lpass show "$2" ;; - gen|generate) - local len="${2:-20}" - local pass=$(tr -dc 'A-Za-z0-9!@#$%^&*' < /dev/urandom | head -c "$len") - _pw_copy "$pass" "Generated password" - ;; - list|ls) _pw_check || return 1; df_print_func_name "Password Entries"; lpass ls --long ;; - search|*) - _pw_check || return 1 - local query="$1"; [[ "$cmd" == "search" ]] && query="$2" - if df_cmd_exists fzf && [[ -z "$query" ]]; then - local entry=$(lpass ls --format "%an (%au) [%ai]" 2>/dev/null | fzf $(df_fzf_opts) --prompt='Password > ') - [[ -z "$entry" ]] && return - local id=$(echo "$entry" | grep -oP '\[\K[^\]]+(?=\]$)') - local pass=$(lpass show --password "$id" 2>/dev/null) - [[ -n "$pass" ]] && _pw_copy "$pass" || df_print_error "Could not retrieve" - else - [[ -z "$query" ]] && { echo "Usage: pw "; return 1; } - local results=$(lpass ls --format "%an [%ai]" 2>/dev/null | grep -i "$query") - local count=$(echo "$results" | grep -c . 2>/dev/null || echo 0) - if (( count == 0 )); then - df_print_warning "No entries for: $query" - elif (( count == 1 )); then - local id=$(echo "$results" | grep -oP '\[\K[^\]]+(?=\]$)') - _pw_copy "$(lpass show --password "$id" 2>/dev/null)" - else - df_print_warning "Multiple entries:" - echo "$results" | while read -r l; do df_print_indent "$l"; done - fi - fi - ;; - help|--help|-h) - df_print_func_name "Password Manager" - cat << 'EOF' - pw Search and copy password - pw show Show entry details - pw list List all entries - pw gen [len] Generate password (default: 20) - pw sync Sync vault - pw login/logout Auth commands -EOF - ;; - esac -} - -alias pwc='pw' pws='pw show' pwg='pw gen' pwl='pw list' diff --git a/refactor_backup/zsh/functions/password-manager.zsh.zwc b/refactor_backup/zsh/functions/password-manager.zsh.zwc deleted file mode 100644 index 38fca1d..0000000 Binary files a/refactor_backup/zsh/functions/password-manager.zsh.zwc and /dev/null differ diff --git a/refactor_backup/zsh/functions/python-templates.zsh b/refactor_backup/zsh/functions/python-templates.zsh deleted file mode 100644 index 038ef12..0000000 --- a/refactor_backup/zsh/functions/python-templates.zsh +++ /dev/null @@ -1,173 +0,0 @@ -# ============================================================================ -# Python Project Template Functions -# ============================================================================ - -source "${0:A:h}/../lib/utils.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/utils.zsh" 2>/dev/null - -typeset -g PY_PYTHON="${PY_PYTHON:-python3}" -typeset -g PY_VENV="${PY_VENV:-venv}" -typeset -g PY_GIT_INIT="${PY_GIT_INIT:-true}" - -_py_check_name() { - [[ -z "$1" ]] && { df_print_warning "Project name required"; return 1; } - [[ -d "$1" ]] && { df_print_warning "Directory '$1' exists"; return 1; } - return 0 -} - -_py_venv() { - df_print_step "Creating virtual environment" - "$PY_PYTHON" -m venv "$1/$PY_VENV" - df_print_success "Created: $PY_VENV" -} - -_py_gitignore() { - cat > "$1/.gitignore" << 'EOF' -__pycache__/ -*.py[cod] -*.so -build/ -dist/ -*.egg-info/ -venv/ -.venv/ -.env -*.log -.pytest_cache/ -.mypy_cache/ -EOF - df_print_success "Created .gitignore" -} - -_py_git() { - [[ "$PY_GIT_INIT" == "true" ]] && { cd "$1"; git init; git add .; git commit -m "Initial commit"; df_print_success "Git initialized"; } -} - -_py_next() { - echo "" - df_print_section "Next steps" - df_print_indent "cd $1" - df_print_indent "source $PY_VENV/bin/activate" -} - -py-new() { - _py_check_name "$1" || return 1 - df_print_func_name "Python Project: $1" - mkdir -p "$1"/{src,tests} - touch "$1/src/__init__.py" "$1/tests/__init__.py" - cat > "$1/src/main.py" << 'EOF' -#!/usr/bin/env python3 -def main(): - print("Hello!") - -if __name__ == "__main__": - main() -EOF - echo "# Dependencies" > "$1/requirements.txt" - _py_venv "$1"; _py_gitignore "$1"; _py_git "$1" - df_print_success "Created: $1" - _py_next "$1" -} - -py-flask() { - _py_check_name "$1" || return 1 - df_print_func_name "Flask Project: $1" - mkdir -p "$1"/{app/{templates,static},tests} - _py_venv "$1" - df_print_step "Installing Flask" - "$1/$PY_VENV/bin/pip" install flask -q - cat > "$1/app/__init__.py" << 'EOF' -from flask import Flask -def create_app(): - app = Flask(__name__) - from app.routes import main - app.register_blueprint(main) - return app -EOF - cat > "$1/app/routes.py" << 'EOF' -from flask import Blueprint, render_template -main = Blueprint('main', __name__) -@main.route('/') -def index(): - return render_template('index.html') -EOF - echo '

Flask

' > "$1/app/templates/index.html" - cat > "$1/app.py" << 'EOF' -#!/usr/bin/env python3 -from app import create_app -app = create_app() -if __name__ == '__main__': - app.run(debug=True) -EOF - echo "Flask>=3.0.0" > "$1/requirements.txt" - _py_gitignore "$1"; _py_git "$1" - df_print_success "Created: $1" - _py_next "$1" -} - -py-fastapi() { - _py_check_name "$1" || return 1 - df_print_func_name "FastAPI Project: $1" - mkdir -p "$1"/{app,tests} - _py_venv "$1" - df_print_step "Installing FastAPI" - "$1/$PY_VENV/bin/pip" install fastapi uvicorn -q - cat > "$1/app/main.py" << 'EOF' -from fastapi import FastAPI -app = FastAPI() -@app.get("/") -def root(): - return {"message": "Hello"} -@app.get("/health") -def health(): - return {"status": "ok"} -EOF - cat > "$1/run.py" << 'EOF' -#!/usr/bin/env python3 -import uvicorn -if __name__ == "__main__": - uvicorn.run("app.main:app", host="0.0.0.0", port=8000, reload=True) -EOF - echo -e "fastapi>=0.104.0\nuvicorn>=0.24.0" > "$1/requirements.txt" - _py_gitignore "$1"; _py_git "$1" - df_print_success "Created: $1" - df_print_info "Docs: http://localhost:8000/docs" - _py_next "$1" -} - -py-cli() { - _py_check_name "$1" || return 1 - df_print_func_name "CLI Project: $1" - mkdir -p "$1"/{src/$1,tests} - _py_venv "$1" - df_print_step "Installing click" - "$1/$PY_VENV/bin/pip" install click -q - echo '__version__ = "0.1.0"' > "$1/src/$1/__init__.py" - cat > "$1/src/$1/cli.py" << 'EOF' -#!/usr/bin/env python3 -import click -@click.group() -@click.version_option() -def cli(): - pass -@cli.command() -@click.argument('name', default='World') -def greet(name): - click.echo(f"Hello, {name}!") -if __name__ == '__main__': - cli() -EOF - echo "click>=8.1.0" > "$1/requirements.txt" - _py_gitignore "$1"; _py_git "$1" - df_print_success "Created: $1" - df_print_info "Install: pip install -e $1" - _py_next "$1" -} - -venv() { - [[ -d "venv" ]] && source venv/bin/activate && return - [[ -d ".venv" ]] && source .venv/bin/activate && return - df_print_error "No venv found" -} - -alias pynew='py-new' pyflask='py-flask' pyfast='py-fastapi' pycli='py-cli' diff --git a/refactor_backup/zsh/functions/python-templates.zsh.zwc b/refactor_backup/zsh/functions/python-templates.zsh.zwc deleted file mode 100644 index 44ce625..0000000 Binary files a/refactor_backup/zsh/functions/python-templates.zsh.zwc and /dev/null differ diff --git a/refactor_backup/zsh/functions/smart-suggest.zsh b/refactor_backup/zsh/functions/smart-suggest.zsh deleted file mode 100644 index f17685b..0000000 --- a/refactor_backup/zsh/functions/smart-suggest.zsh +++ /dev/null @@ -1,82 +0,0 @@ -# ============================================================================ -# Smart Command Suggestions for Zsh -# ============================================================================ - -source "${0:A:h}/../lib/utils.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/utils.zsh" 2>/dev/null - -typeset -g SMART_SUGGEST_ENABLED=true -typeset -g SMART_SUGGEST_TRACK_FILE="$HOME/.cache/smart-suggest-track" - -typeset -gA TYPO_CORRECTIONS=( - [gti]="git" [gitt]="git" [got]="git" [gi]="git" - [gitst]="git st" [gits]="git s" [gitp]="git p" - [psuh]="push" [psull]="pull" [pul]="pull" - [stauts]="status" [comit]="commit" [commti]="commit" - [chekcout]="checkout" [branhc]="branch" [marge]="merge" - [dokcer]="docker" [doker]="docker" [dcoker]="docker" - [sl]="ls" [sls]="ls" [cta]="cat" [grpe]="grep" [gerp]="grep" - [mkdri]="mkdir" [chmdo]="chmod" [suod]="sudo" [sduo]="sudo" - [pytohn]="python" [pyhton]="python" [ndoe]="node" - [vmi]="vim" [cde]="code" [clera]="clear" [exti]="exit" -) - -typeset -gA COMMAND_PACKAGES=( - [htop]="htop" [tree]="tree" [jq]="jq" [fd]="fd" [rg]="ripgrep" - [bat]="bat" [eza]="eza" [fzf]="fzf" [tldr]="tldr" [ncdu]="ncdu" - [lazygit]="lazygit" [neofetch]="neofetch" [delta]="git-delta" -) - -_ss_track() { - local cmd="$1" - [[ ${#cmd} -lt 8 ]] && return - df_ensure_dir "$(dirname "$SMART_SUGGEST_TRACK_FILE")" - echo "$cmd" >> "$SMART_SUGGEST_TRACK_FILE" - local count=$(grep -Fc "$cmd" "$SMART_SUGGEST_TRACK_FILE" 2>/dev/null || echo 0) - if (( count >= 10 && count % 10 == 0 )); then - local existing=$(alias | grep -F "='$cmd'" | head -1 | cut -d= -f1) - [[ -n "$existing" ]] && df_print_info "You have alias: $existing" || \ - df_print_info "Consider: alias xyz='$cmd'" - fi -} - -command_not_found_handler() { - local cmd="$1"; shift - [[ "$SMART_SUGGEST_ENABLED" != true ]] && { echo "zsh: command not found: $cmd"; return 127; } - - df_print_error "Command not found: $cmd" - - local correction="${TYPO_CORRECTIONS[$cmd]}" - [[ -n "$correction" ]] && { df_print_info "Did you mean: $correction?"; df_print_indent "Run: $correction $@"; } - - local pkg="${COMMAND_PACKAGES[$cmd]}" - [[ -n "$pkg" ]] && df_print_info "Install: sudo pacman -S $pkg" - - return 127 -} - -fuck() { - local last=$(fc -ln -1 2>/dev/null | sed 's/^[[:space:]]*//') - local first="${last%% *}" - local fix="${TYPO_CORRECTIONS[$first]}" - [[ -n "$fix" ]] && { df_print_step "Running: ${last/$first/$fix}"; eval "${last/$first/$fix}"; } || df_print_warning "No fix for: $last" -} - -_ss_preexec() { _ss_track "$1"; } -_ss_precmd() { - local exit=$?; (( exit == 0 )) && return - local last=$(fc -ln -1 2>/dev/null | sed 's/^[[:space:]]*//') - [[ "${last%% *}" == "git" ]] && { - local sub=$(echo "$last" | awk '{print $2}') - local fix="${TYPO_CORRECTIONS[$sub]}" - [[ -n "$fix" ]] && df_print_info "Did you mean: git $fix?" - } -} - -_ss_setup() { - autoload -Uz add-zsh-hook - add-zsh-hook preexec _ss_preexec - add-zsh-hook precmd _ss_precmd -} - -[[ "$SMART_SUGGEST_ENABLED" == true ]] && _ss_setup diff --git a/refactor_backup/zsh/functions/smart-suggest.zsh.zwc b/refactor_backup/zsh/functions/smart-suggest.zsh.zwc deleted file mode 100644 index d7c3a2f..0000000 Binary files a/refactor_backup/zsh/functions/smart-suggest.zsh.zwc and /dev/null differ diff --git a/refactor_backup/zsh/functions/snapper.zsh b/refactor_backup/zsh/functions/snapper.zsh deleted file mode 100644 index 65b464f..0000000 --- a/refactor_backup/zsh/functions/snapper.zsh +++ /dev/null @@ -1,98 +0,0 @@ -# ============================================================================ -# Snapper Snapshot Functions for CachyOS/Arch with limine-snapper-sync -# ============================================================================ - -source "${0:A:h}/../lib/utils.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/utils.zsh" 2>/dev/null - -snap-create() { - local desc="$*" - local limine="/boot/limine.conf" - - df_print_func_name "Snapper Snapshot Creation" - - if [[ -z "$desc" ]]; then - df_print_warning "No description" - echo -n "Description: "; read desc - [[ -z "$desc" ]] && { df_print_error "Required"; return 1; } - fi - - [[ ! -f "$limine" ]] && { df_print_error "Limine not found: $limine"; return 1; } - - df_print_step "Checking limine.conf before snapshot" - local before=$(sudo grep -cP "^\\s*///\\d+\\s*│" "$limine" || echo "0") - df_print_success "Before: $before entries" - - df_print_step "Creating snapshot: \"$desc\"" - local num=$(sudo snapper -c root create --description "$desc" --print-number) - [[ -z "$num" ]] && { df_print_error "Failed"; return 1; } - df_print_success "Created: #$num" - - df_print_step "Triggering limine-snapper-sync..." - sudo systemctl start limine-snapper-sync.service && df_print_success "Triggered" || df_print_warning "May run automatically" - sleep 2 - - df_print_step "Validating" - local after=$(sudo grep -cP "^\\s*///\\d+\\s*│" "$limine" || echo "0") - - if sudo grep -qP "^\\s*///$num\\s*│" "$limine"; then - df_print_success "Snapshot #$num in limine.conf" - (( after > before )) && df_print_success "Added $((after - before)) entry" - else - df_print_error "Snapshot #$num NOT in limine.conf" - return 1 - fi - - echo "" - df_print_section "Summary" - df_print_indent "Number: #$num" - df_print_indent "Description: $desc" -} - -snap-list() { - local count="${1:-10}" - df_print_func_name "Snapper Snapshots (last $count)" - sudo snapper -c root list | tail -n "$((count + 1))" -} - -snap-show() { - [[ -z "$1" ]] && { echo "Usage: snap-show "; return 1; } - df_print_func_name "Snapshot #$1" - sudo snapper -c root list | grep "^\s*$1\s" - echo "" - df_print_section "In limine.conf" - sudo grep -qP "^\\s*///$1\\s*│" /boot/limine.conf && \ - sudo grep -P "^\\s*///$1\\s*│" /boot/limine.conf || df_print_warning "Not found" -} - -snap-delete() { - [[ -z "$1" ]] && { echo "Usage: snap-delete "; return 1; } - df_print_func_name "Delete Snapshot #$1" - - local before=$(sudo grep -cP "^\\s*///\\d+\\s*│" /boot/limine.conf || echo "0") - sudo snapper -c root delete "$1" && df_print_success "Deleted #$1" || { df_print_error "Failed"; return 1; } - - df_print_step "Syncing limine..." - sudo systemctl start limine-snapper-sync.service; sleep 2 - - sudo grep -qP "^\\s*///$1\\s*│" /boot/limine.conf && df_print_error "Still in limine!" || df_print_success "Removed from limine" -} - -snap-sync() { - df_print_func_name "Limine-Snapper-Sync" - df_print_step "Triggering sync..." - sudo systemctl start limine-snapper-sync.service && { sleep 2; df_print_success "Done"; } || df_print_error "Failed" -} - -snap-check() { - df_print_func_name "Limine Snapshot Entries" - local latest=$(sudo snapper -c root list | tail -n +3 | grep -v "^\s*0\s" | tail -1 | awk '{print $1}') - [[ -z "$latest" ]] && { df_print_warning "No snapshots"; return 1; } - df_print_info "Latest: #$latest" - sudo grep -qP "^\\s*///$latest\\s*│" /boot/limine.conf && \ - df_print_success "Latest in limine.conf" || df_print_error "Latest NOT in limine.conf" - local count=$(sudo grep -cP "^\\s*///\\d+\\s*│" /boot/limine.conf || echo "0") - df_print_info "Total entries: $count" -} - -alias snap='snap-create' snapls='snap-list' snaprm='snap-delete' snapcheck='snap-check' diff --git a/refactor_backup/zsh/functions/snapper.zsh.zwc b/refactor_backup/zsh/functions/snapper.zsh.zwc deleted file mode 100644 index 8e845a9..0000000 Binary files a/refactor_backup/zsh/functions/snapper.zsh.zwc and /dev/null differ diff --git a/refactor_backup/zsh/functions/ssh-manager.zsh b/refactor_backup/zsh/functions/ssh-manager.zsh deleted file mode 100644 index 7b0cb5c..0000000 --- a/refactor_backup/zsh/functions/ssh-manager.zsh +++ /dev/null @@ -1,96 +0,0 @@ -# ============================================================================ -# SSH Session Manager with Tmux Integration -# ============================================================================ - -source "${0:A:h}/../lib/utils.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/utils.zsh" 2>/dev/null - -typeset -g SSH_PROFILES_FILE="${SSH_PROFILES_FILE:-$HOME/.dotfiles/.ssh-profiles}" -typeset -g SSH_AUTO_TMUX="${SSH_AUTO_TMUX:-true}" -typeset -g SSH_TMUX_PREFIX="${SSH_TMUX_PREFIX:-ssh}" - -_ssh_init() { - df_ensure_file "$SSH_PROFILES_FILE" "# SSH Profiles: name|user@host|port|key|options|description" -} - -_ssh_parse() { - local line=$(grep "^${1}|" "$SSH_PROFILES_FILE" 2>/dev/null | head -1) - [[ -z "$line" ]] && return 1 - echo "$line" | cut -d'|' -f2- -} - -ssh-save() { - local name="$1" conn="$2" port="${3:-22}" key="${4:-}" opts="${5:-}" desc="${6:-}" - [[ -z "$name" || -z "$conn" ]] && { echo "Usage: ssh-save [port] [key] [opts] [desc]"; return 1; } - _ssh_init - grep -q "^${name}|" "$SSH_PROFILES_FILE" 2>/dev/null && { - df_confirm "Overwrite '$name'?" || return 1 - grep -v "^${name}|" "$SSH_PROFILES_FILE" > "${SSH_PROFILES_FILE}.tmp" - mv "${SSH_PROFILES_FILE}.tmp" "$SSH_PROFILES_FILE" - } - echo "${name}|${conn}|${port}|${key}|${opts}|${desc}" >> "$SSH_PROFILES_FILE" - df_print_success "Saved: $name → $conn" -} - -ssh-list() { - _ssh_init - df_print_func_name "SSH Profiles" - local found=false - while IFS='|' read -r name conn port key opts desc; do - [[ "$name" =~ ^# || -z "$name" ]] && continue - found=true - df_print_indent "● $name → $conn" - [[ "$port" != "22" && -n "$port" ]] && df_print_indent " Port: $port" - [[ -n "$desc" ]] && df_print_indent " $desc" - done < "$SSH_PROFILES_FILE" - [[ "$found" != true ]] && df_print_info "No profiles. Use: ssh-save name user@host" -} - -ssh-delete() { - [[ -z "$1" ]] && { echo "Usage: ssh-delete "; return 1; } - grep -q "^${1}|" "$SSH_PROFILES_FILE" 2>/dev/null || { df_print_error "Not found: $1"; return 1; } - grep -v "^${1}|" "$SSH_PROFILES_FILE" > "${SSH_PROFILES_FILE}.tmp" - mv "${SSH_PROFILES_FILE}.tmp" "$SSH_PROFILES_FILE" - df_print_success "Deleted: $1" -} - -ssh-connect() { - local name="$1" session="${2:-${SSH_TMUX_PREFIX}-${1}}" - [[ -z "$name" ]] && { ssh-list; return 1; } - _ssh_init - local data=$(_ssh_parse "$name") - [[ -z "$data" ]] && { df_print_error "Not found: $name"; return 1; } - - IFS='|' read -r conn port key opts desc <<< "$data" - df_print_step "Connecting: $name" - [[ -n "$desc" ]] && df_print_indent "$desc" - - local cmd="ssh" - [[ -n "$port" && "$port" != "22" ]] && cmd="$cmd -p $port" - [[ -n "$key" ]] && cmd="$cmd -i $key" - [[ -n "$opts" ]] && cmd="$cmd $opts" - cmd="$cmd $conn" - - if [[ "$SSH_AUTO_TMUX" == "true" ]]; then - df_print_info "Tmux session: $session" - eval "$cmd -t 'tmux attach -t $session 2>/dev/null || tmux new -s $session'" - else - eval "$cmd" - fi -} - -sshf() { - df_require_cmd fzf || return 1 - _ssh_init - local profiles=() - while IFS='|' read -r name conn port key opts desc; do - [[ "$name" =~ ^# || -z "$name" ]] && continue - profiles+=("$name|$name → $conn") - done < "$SSH_PROFILES_FILE" - [[ ${#profiles[@]} -eq 0 ]] && { df_print_info "No profiles"; return 1; } - local sel=$(printf '%s\n' "${profiles[@]}" | fzf $(df_fzf_opts) --delimiter='|' --with-nth=2 --prompt='SSH > ') - [[ -n "$sel" ]] && ssh-connect "${sel%%|*}" -} - -alias sshl='ssh-list' sshs='ssh-save' sshc='ssh-connect' sshd='ssh-delete' -_ssh_init diff --git a/refactor_backup/zsh/functions/ssh-manager.zsh.zwc b/refactor_backup/zsh/functions/ssh-manager.zsh.zwc deleted file mode 100644 index cf82341..0000000 Binary files a/refactor_backup/zsh/functions/ssh-manager.zsh.zwc and /dev/null differ diff --git a/refactor_backup/zsh/functions/systemd-helpers.zsh b/refactor_backup/zsh/functions/systemd-helpers.zsh deleted file mode 100644 index 2b7eba2..0000000 --- a/refactor_backup/zsh/functions/systemd-helpers.zsh +++ /dev/null @@ -1,124 +0,0 @@ -# ============================================================================ -# Systemd Integration for Arch/CachyOS -# ============================================================================ - -source "${0:A:h}/../lib/utils.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/utils.zsh" 2>/dev/null - -# Core shortcuts -sc() { sudo systemctl "$@"; } -scu() { systemctl --user "$@"; } - -scr() { - [[ -z "$1" ]] && { echo "Usage: scr "; return 1; } - df_print_step "Restarting $1..." - sudo systemctl restart "$1" && { df_print_success "Restarted"; sudo systemctl status "$1" --no-pager -l; } || df_print_error "Failed" -} - -sce() { - [[ -z "$1" ]] && { echo "Usage: sce "; return 1; } - df_print_step "Enabling $1..." - sudo systemctl enable --now "$1" && { df_print_success "Enabled"; sudo systemctl status "$1" --no-pager -l | head -15; } || df_print_error "Failed" -} - -scd() { - [[ -z "$1" ]] && { echo "Usage: scd "; return 1; } - df_print_step "Disabling $1..." - sudo systemctl disable --now "$1" && df_print_success "Disabled" || df_print_error "Failed" -} - -sclog() { - [[ -z "$1" ]] && { echo "Usage: sclog "; return 1; } - df_print_step "Following logs for $1 (Ctrl+C to exit)..." - sudo journalctl -xeu "$1" -f -n "${2:-50}" -} - -sclogs() { - [[ -z "$1" ]] && { echo "Usage: sclogs "; return 1; } - sudo journalctl -xeu "$1" -n "${2:-50}" --no-pager -} - -sc-failed() { - df_print_func_name "Failed Services" - df_print_section "System" - local sys=$(systemctl --failed --no-pager --no-legend 2>/dev/null) - [[ -z "$sys" ]] && df_print_indent "✓ None" || echo "$sys" | sed 's/^/ /' - echo "" - df_print_section "User" - local usr=$(systemctl --user --failed --no-pager --no-legend 2>/dev/null) - [[ -z "$usr" ]] && df_print_indent "✓ None" || echo "$usr" | sed 's/^/ /' -} - -sc-timers() { - df_print_func_name "Active Timers" - df_print_section "System" - systemctl list-timers --no-pager | head -15 - echo "" - df_print_section "User" - systemctl --user list-timers --no-pager 2>/dev/null | head -10 -} - -sc-boot() { - df_print_func_name "Boot Analysis" - df_print_section "Summary" - systemd-analyze - echo "" - df_print_section "Slowest (top 10)" - systemd-analyze blame --no-pager | head -10 | sed 's/^/ /' -} - -sc-search() { - [[ -z "$1" ]] && { echo "Usage: sc-search "; return 1; } - df_print_func_name "Service Search: $1" - systemctl list-unit-files --type=service --no-pager | grep -i "$1" -} - -sc-info() { - [[ -z "$1" ]] && { echo "Usage: sc-info "; return 1; } - df_print_func_name "Service: $1" - systemctl status "$1" --no-pager -l 2>/dev/null || sudo systemctl status "$1" --no-pager -l - echo "" - df_print_section "Unit File" - systemctl cat "$1" 2>/dev/null | head -30 -} - -# fzf interactive -if df_cmd_exists fzf; then - scf() { - local svc=$(systemctl list-units --type=service --no-pager --no-legend | \ - fzf $(df_fzf_opts) --prompt='Service > ' --preview='systemctl status {1} --no-pager' | awk '{print $1}') - [[ -z "$svc" ]] && return - df_print_info "Selected: $svc" - echo "[s]tatus [r]estart [l]ogs [e]nable [d]isable" - read -k 1 "act?Action: "; echo - case "$act" in - s) sudo systemctl status "$svc" --no-pager -l ;; - r) scr "$svc" ;; - l) sclog "$svc" ;; - e) sce "$svc" ;; - d) scd "$svc" ;; - esac - } -fi - -sc-help() { - df_print_func_name "Systemd Commands" - cat << 'EOF' - sc sudo systemctl - scu systemctl --user - scr Restart + status - sce Enable + start - scd Disable + stop - sclog Follow logs - sclogs Recent logs - sc-failed Failed services - sc-timers Active timers - sc-boot Boot analysis - sc-search Search services - sc-info Service details - scf Interactive (fzf) -EOF -} - -alias scs='sc status' scstart='sc start' scstop='sc stop' screload='sc daemon-reload' -alias jctl='journalctl' jctlf='journalctl -f' jctlb='journalctl -b' diff --git a/refactor_backup/zsh/functions/systemd-helpers.zsh.zwc b/refactor_backup/zsh/functions/systemd-helpers.zsh.zwc deleted file mode 100644 index c91258c..0000000 Binary files a/refactor_backup/zsh/functions/systemd-helpers.zsh.zwc and /dev/null differ diff --git a/refactor_backup/zsh/functions/tmux-workspaces.zsh b/refactor_backup/zsh/functions/tmux-workspaces.zsh deleted file mode 100644 index ae808ae..0000000 --- a/refactor_backup/zsh/functions/tmux-workspaces.zsh +++ /dev/null @@ -1,116 +0,0 @@ -# ============================================================================ -# Tmux Workspace Manager - Project Templates & Layouts -# ============================================================================ - -source "${0:A:h}/../lib/utils.zsh" 2>/dev/null || \ -source "$HOME/.dotfiles/zsh/lib/utils.zsh" 2>/dev/null - -typeset -g TW_TEMPLATES="${TW_TEMPLATES:-$HOME/.dotfiles/.tmux-templates}" -typeset -g TW_PREFIX="${TW_PREFIX:-work}" -typeset -g TW_DEFAULT="${TW_DEFAULT:-dev}" - -_tw_check() { df_require_cmd tmux || return 1; } - -_tw_init() { - df_ensure_dir "$TW_TEMPLATES" - [[ ! -f "$TW_TEMPLATES/dev.tmux" ]] && { - echo -e "# Dev layout\nsplit-window -h -p 50\nsplit-window -v -p 50\nselect-pane -t 0" > "$TW_TEMPLATES/dev.tmux" - echo -e "# Ops layout\nsplit-window -h\nsplit-window -v\nselect-pane -t 0\nsplit-window -v\nselect-pane -t 0" > "$TW_TEMPLATES/ops.tmux" - echo "# Full\n" > "$TW_TEMPLATES/full.tmux" - df_print_success "Created default templates" - } -} - -tw-templates() { - _tw_init - df_print_func_name "Tmux Templates" - for t in "$TW_TEMPLATES"/*.tmux; do - [[ -f "$t" ]] && df_print_indent "● $(basename "$t" .tmux)" - done - echo "" - df_print_info "Create: tw-create