Explorar el Código

dev: automated commit - 2025-09-06 17:51:28

Mariano Z. hace 5 meses
padre
commit
b18f0b1edf

+ 14 - 5
env/.config/environment.d/10-base.conf

@@ -1,9 +1,18 @@
+# Base Environment Variables
+# Core XDG Base Directory specification
+XDG_CONFIG_HOME=${XDG_CONFIG_HOME:-$HOME/.config}
+XDG_CACHE_HOME=${XDG_CACHE_HOME:-$HOME/.cache}
+XDG_DATA_HOME=${XDG_DATA_HOME:-$HOME/.local/share}
+XDG_STATE_HOME=${XDG_STATE_HOME:-$HOME/.local/state}
+XDG_RUNTIME_DIR=${XDG_RUNTIME_DIR:-/run/user/$UID}
+
+# Shell configuration
+ZDOTDIR=${ZDOTDIR:-$XDG_CONFIG_HOME/zsh}
+
+# Default applications
 EDITOR=nvim
 TERMINAL=kitty
+
+# Locale
 LANG=en_US.UTF-8
-XDG_CONFIG_HOME=/home/mzunino/.config
-XDG_CACHE_HOME=/home/mzunino/.cache
-XDG_DATA_HOME=/home/mzunino/.local/share
-XDG_STATE_HOME=/home/mzunino/.local/state
-ZDOTDIR=/home/mzunino/.config/zsh
 

+ 37 - 0
env/.config/environment.d/20-wayland.conf

@@ -0,0 +1,37 @@
+# Wayland Environment Variables
+# Centralized Wayland configuration
+
+# Core Wayland variables
+export XDG_SESSION_TYPE=wayland
+export XDG_CURRENT_DESKTOP=sway
+
+# Firefox/Thunderbird Wayland support
+export MOZ_ENABLE_WAYLAND=1
+
+# QT Wayland configuration
+export QT_QPA_PLATFORM=wayland-egl
+export QT_WAYLAND_DISABLE_WINDOWDECORATION=1
+export QT_QPA_PLATFORMTHEME=qt5ct
+export QT_STYLE_OVERRIDE=kvantum
+
+# GTK Wayland configuration
+export GDK_BACKEND=wayland
+
+# Clutter/Evas Wayland
+export CLUTTER_BACKEND=wayland
+export ECORE_EVAS_ENGINE=wayland_egl
+export ELM_ENGINE=wayland_wgl
+
+# SDL Wayland
+export SDL_VIDEODRIVER=wayland
+
+# Java Wayland support
+export _JAVA_AWT_WM_NONREPARENTING=1
+
+# SSH Agent configuration
+unset SSH_AGENT_PID
+if [ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]; then
+    export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"
+fi
+export GPG_TTY=$(tty)
+gpg-connect-agent updatestartuptty /bye >/dev/null

+ 22 - 0
env/.config/environment.d/30-development.conf

@@ -0,0 +1,22 @@
+# Development Environment Variables
+# Node.js and package managers
+export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
+export COREPACK_ENABLE_NETWORK_RESOLUTION=1
+export COREPACK_ENABLE_STRICT_VERIFICATION=0
+
+# FZF configuration
+export FZF_DEFAULT_OPTS='--height 40% --layout=reverse --border'
+export FZF_DEFAULT_COMMAND='fd --type f'
+
+# Zoxide configuration
+export _ZO_ECHO=1
+
+# Manual pages
+export MANPAGER="nvim +Man!"
+
+# Git configuration
+export GIT_EDITOR=nvim
+
+# Docker configuration
+export DOCKER_BUILDKIT=1
+export COMPOSE_DOCKER_CLI_BUILD=1

+ 0 - 79
font-manager.sh

@@ -1,79 +0,0 @@
-#!/bin/bash
-# ~/.local/bin/font-manager
-# This script extracts font archives and rebuilds font cache
-
-FONT_DIR="$HOME/.local/share/fonts"
-ARCHIVE_DIR="$FONT_DIR/archives"
-ACTIVE_DIR="$FONT_DIR/active"
-
-# Function to extract a specific font archive
-extract_font() {
-	local archive="$1"
-	if [ -f "$ARCHIVE_DIR/$archive.tar.gz" ]; then
-		echo "Extracting $archive fonts..."
-		tar -xzf "$ARCHIVE_DIR/$archive.tar.gz" -C "$ACTIVE_DIR"
-		fc-cache -f
-		echo "Done! $archive fonts are now active."
-	else
-		echo "Error: Font archive $archive.tar.gz not found."
-		exit 1
-	fi
-}
-
-# Function to list available font archives
-list_fonts() {
-	echo "Available font archives:"
-	ls -1 "$ARCHIVE_DIR" | sed 's/\.tar\.gz$//'
-}
-
-# Function to rebuild font cache
-rebuild_cache() {
-	echo "Rebuilding font cache..."
-	fc-cache -f
-	echo "Done!"
-}
-
-# Function to extract all fonts
-extract_all() {
-	echo "Extracting all font archives..."
-	for archive in "$ARCHIVE_DIR"/*.tar.gz; do
-		tar -xzf "$archive" -C "$ACTIVE_DIR"
-	done
-	fc-cache -f
-	echo "Done! All fonts are now active."
-}
-
-# Function to clean active fonts directory
-clean_fonts() {
-	echo "Cleaning active fonts directory..."
-	find "$ACTIVE_DIR" -type f -name "*.ttf" -o -name "*.otf" | xargs rm -f
-	echo "Done! Active fonts directory is now clean."
-}
-
-# Main script logic
-case "$1" in
-"extract")
-	extract_font "$2"
-	;;
-"list")
-	list_fonts
-	;;
-"rebuild")
-	rebuild_cache
-	;;
-"all")
-	extract_all
-	;;
-"clean")
-	clean_fonts
-	;;
-*)
-	echo "Usage: font-manager [command] [options]"
-	echo "Commands:"
-	echo "  extract [name]   Extract specific font archive"
-	echo "  list             List available font archives"
-	echo "  rebuild          Rebuild font cache"
-	echo "  all              Extract all font archives"
-	echo "  clean            Remove all active fonts"
-	;;
-esac

+ 251 - 0
local-bin/.local/bin/font-manager

@@ -0,0 +1,251 @@
+#!/bin/bash
+# ~/.local/bin/font-manager
+# This script extracts font archives and rebuilds font cache
+# Enhanced version with better integration and error handling
+
+FONT_DIR="$HOME/.local/share/fonts"
+ARCHIVE_DIR="$FONT_DIR/archives"
+ACTIVE_DIR="$FONT_DIR/active"
+BACKUP_DIR="$FONT_DIR/backups"
+LOG_FILE="$HOME/.local/share/font-manager.log"
+
+# Colors for output
+RED='\033[0;31m'
+GREEN='\033[0;32m'
+YELLOW='\033[1;33m'
+BLUE='\033[0;34m'
+NC='\033[0m' # No Color
+
+# Logging function
+log() {
+    echo "$(date '+%Y-%m-%d %H:%M:%S') - $1" >> "$LOG_FILE"
+}
+
+# Error handling
+error_exit() {
+    echo -e "${RED}Error: $1${NC}" >&2
+    log "ERROR: $1"
+    exit 1
+}
+
+# Success message
+success() {
+    echo -e "${GREEN}$1${NC}"
+    log "SUCCESS: $1"
+}
+
+# Warning message
+warning() {
+    echo -e "${YELLOW}Warning: $1${NC}"
+    log "WARNING: $1"
+}
+
+# Info message
+info() {
+    echo -e "${BLUE}$1${NC}"
+    log "INFO: $1"
+}
+
+# Initialize directories
+init_directories() {
+    mkdir -p "$ARCHIVE_DIR" "$ACTIVE_DIR" "$BACKUP_DIR"
+    log "Initialized font directories"
+}
+
+# Function to extract a specific font archive
+extract_font() {
+    local archive="$1"
+    if [ -z "$archive" ]; then
+        error_exit "Archive name required"
+    fi
+    
+    if [ ! -f "$ARCHIVE_DIR/$archive.tar.gz" ]; then
+        error_exit "Font archive $archive.tar.gz not found"
+    fi
+    
+    # Validate archive integrity
+    if ! tar -tzf "$ARCHIVE_DIR/$archive.tar.gz" >/dev/null 2>&1; then
+        error_exit "Archive $archive.tar.gz is corrupted"
+    fi
+    
+    info "Extracting $archive fonts..."
+    tar -xzf "$ARCHIVE_DIR/$archive.tar.gz" -C "$ACTIVE_DIR" || error_exit "Failed to extract $archive"
+    
+    # Rebuild font cache
+    rebuild_cache
+    success "$archive fonts are now active"
+}
+
+# Function to list available font archives
+list_fonts() {
+    if [ ! -d "$ARCHIVE_DIR" ] || [ -z "$(ls -A "$ARCHIVE_DIR" 2>/dev/null)" ]; then
+        warning "No font archives found in $ARCHIVE_DIR"
+        return 1
+    fi
+    
+    info "Available font archives:"
+    ls -1 "$ARCHIVE_DIR" | sed 's/\.tar\.gz$//' | while read -r font; do
+        echo "  • $font"
+    done
+}
+
+# Function to rebuild font cache
+rebuild_cache() {
+    info "Rebuilding font cache..."
+    if fc-cache -f >/dev/null 2>&1; then
+        success "Font cache rebuilt successfully"
+    else
+        error_exit "Failed to rebuild font cache"
+    fi
+}
+
+# Function to extract all fonts
+extract_all() {
+    if [ ! -d "$ARCHIVE_DIR" ] || [ -z "$(ls -A "$ARCHIVE_DIR" 2>/dev/null)" ]; then
+        warning "No font archives found to extract"
+        return 1
+    fi
+    
+    info "Extracting all font archives..."
+    local count=0
+    for archive in "$ARCHIVE_DIR"/*.tar.gz; do
+        if [ -f "$archive" ]; then
+            local basename=$(basename "$archive" .tar.gz)
+            extract_font "$basename"
+            ((count++))
+        fi
+    done
+    success "Extracted $count font archives"
+}
+
+# Function to clean active fonts directory
+clean_fonts() {
+    if [ ! -d "$ACTIVE_DIR" ]; then
+        warning "Active fonts directory does not exist"
+        return 1
+    fi
+    
+    # Create backup before cleaning
+    local backup_name="backup_$(date +%Y%m%d_%H%M%S)"
+    if [ -n "$(find "$ACTIVE_DIR" -type f -name "*.ttf" -o -name "*.otf" 2>/dev/null)" ]; then
+        info "Creating backup: $backup_name"
+        cp -r "$ACTIVE_DIR" "$BACKUP_DIR/$backup_name"
+    fi
+    
+    info "Cleaning active fonts directory..."
+    find "$ACTIVE_DIR" -type f \( -name "*.ttf" -o -name "*.otf" \) -delete
+    rebuild_cache
+    success "Active fonts directory cleaned"
+}
+
+# Function to restore from backup
+restore_fonts() {
+    local backup="$1"
+    if [ -z "$backup" ]; then
+        error_exit "Backup name required"
+    fi
+    
+    if [ ! -d "$BACKUP_DIR/$backup" ]; then
+        error_exit "Backup $backup not found"
+    fi
+    
+    info "Restoring fonts from backup: $backup"
+    cp -r "$BACKUP_DIR/$backup"/* "$ACTIVE_DIR/"
+    rebuild_cache
+    success "Fonts restored from backup: $backup"
+}
+
+# Function to list backups
+list_backups() {
+    if [ ! -d "$BACKUP_DIR" ] || [ -z "$(ls -A "$BACKUP_DIR" 2>/dev/null)" ]; then
+        warning "No backups found"
+        return 1
+    fi
+    
+    info "Available backups:"
+    ls -1 "$BACKUP_DIR" | while read -r backup; do
+        echo "  • $backup"
+    done
+}
+
+# Function to install font from URL
+install_from_url() {
+    local url="$1"
+    local name="$2"
+    
+    if [ -z "$url" ]; then
+        error_exit "URL required"
+    fi
+    
+    if [ -z "$name" ]; then
+        name=$(basename "$url" | sed 's/\.[^.]*$//')
+    fi
+    
+    info "Downloading font from: $url"
+    if wget -q "$url" -O "$ARCHIVE_DIR/$name.tar.gz"; then
+        success "Downloaded $name"
+        extract_font "$name"
+    else
+        error_exit "Failed to download font from $url"
+    fi
+}
+
+# Main script logic
+init_directories
+
+case "$1" in
+"extract")
+    extract_font "$2"
+    ;;
+"list")
+    list_fonts
+    ;;
+"rebuild")
+    rebuild_cache
+    ;;
+"all")
+    extract_all
+    ;;
+"clean")
+    clean_fonts
+    ;;
+"backup")
+    list_backups
+    ;;
+"restore")
+    restore_fonts "$2"
+    ;;
+"install")
+    install_from_url "$2" "$3"
+    ;;
+"status")
+    info "Font Manager Status:"
+    echo "  Archives: $ARCHIVE_DIR"
+    echo "  Active: $ACTIVE_DIR"
+    echo "  Backups: $BACKUP_DIR"
+    echo "  Log: $LOG_FILE"
+    echo ""
+    list_fonts
+    echo ""
+    list_backups
+    ;;
+*)
+    echo "Usage: font-manager [command] [options]"
+    echo ""
+    echo "Commands:"
+    echo "  extract [name]     Extract specific font archive"
+    echo "  list               List available font archives"
+    echo "  rebuild            Rebuild font cache"
+    echo "  all                Extract all font archives"
+    echo "  clean              Remove all active fonts (with backup)"
+    echo "  backup             List available backups"
+    echo "  restore [name]     Restore fonts from backup"
+    echo "  install [url] [name] Install font from URL"
+    echo "  status             Show current status"
+    echo ""
+    echo "Examples:"
+    echo "  font-manager extract jetbrains-mono"
+    echo "  font-manager install https://github.com/JetBrains/JetBrainsMono/releases/download/v2.304/JetBrainsMono-2.304.zip"
+    echo "  font-manager status"
+    ;;
+esac

+ 84 - 0
local-bin/README.md

@@ -0,0 +1,84 @@
+# Local Bin Scripts
+
+This directory contains custom scripts that are installed to `~/.local/bin/` via Stow.
+
+## Font Manager
+
+Enhanced font management script with advanced features:
+
+### Features
+- **Archive Management**: Extract, list, and manage font archives
+- **Backup System**: Automatic backups before cleaning
+- **URL Installation**: Install fonts directly from URLs
+- **Status Monitoring**: View current font status and logs
+- **Error Handling**: Comprehensive error checking and logging
+- **Color Output**: Colored terminal output for better UX
+
+### Usage
+
+```bash
+# Basic commands
+font-manager list              # List available fonts
+font-manager extract <name>    # Extract specific font
+font-manager all               # Extract all fonts
+font-manager clean             # Clean active fonts (with backup)
+font-manager status            # Show current status
+
+# Advanced commands
+font-manager backup            # List backups
+font-manager restore <name>    # Restore from backup
+font-manager install <url>    # Install from URL
+```
+
+### Zsh Integration
+
+The following aliases and functions are available:
+
+```bash
+# Aliases
+fm    # font-manager
+fml   # font-manager list
+fms   # font-manager status
+fmc   # font-manager clean
+fma   # font-manager all
+
+# Functions
+font-switch <name>    # Quick font switching
+font-preview <name>  # Font preview
+```
+
+### Directory Structure
+
+```
+~/.local/share/fonts/
+├── archives/     # Font archives (.tar.gz)
+├── active/       # Extracted fonts
+├── backups/      # Automatic backups
+└── font-manager.log  # Operation log
+```
+
+### Examples
+
+```bash
+# Switch to JetBrains Mono
+font-switch jetbrains-mono
+
+# Install font from GitHub
+font-manager install https://github.com/JetBrains/JetBrainsMono/releases/download/v2.304/JetBrainsMono-2.304.zip
+
+# Preview a font
+font-preview fira-code
+
+# Check status
+fms
+```
+
+### Installation
+
+The script is automatically installed via Stow:
+
+```bash
+stow local-bin
+```
+
+This creates the necessary directory structure and installs the script to `~/.local/bin/font-manager`.

+ 10 - 3
zsh/.config/zsh/.zprofile

@@ -1,4 +1,11 @@
-source ~/.config/env
+# === Zsh Profile Configuration ===
+# This file is sourced for login shells
+
+# Set ZDOTDIR if not already set
+export ZDOTDIR=${ZDOTDIR:-~/.config/zsh}
+
+# Auto-start Sway on first virtual terminal
+if [ -z "$WAYLAND_DISPLAY" ] && [ "$XDG_VTNR" -eq 1 ]; then
+    exec sway
+fi
 
-# If running from tty1 start sway
-[ "$(tty)" = "/dev/tty1" ] && exec dbus-run-session sway

+ 12 - 1
zsh/.config/zsh/alias.zsh

@@ -98,4 +98,15 @@ alias la='ll -a'
 alias tree='ll --tree --level=2'
 
 
-alias valheim="cd ~/.config/r2modmanPlus-local/Valheim/profiles/Default/ && ./start_server_bepinex.sh"
+# Font management
+alias fm='font-manager'
+alias fml='font-manager list'
+alias fms='font-manager status'
+alias fmc='font-manager clean'
+alias fma='font-manager all'
+
+# Maintenance shortcuts
+alias maint='sudo ~/.local/bin/maintenance.sh'
+alias maint-disable='touch ~/.local/share/arch_maintenance_disabled && echo "Maintenance reminders disabled"'
+alias maint-enable='rm -f ~/.local/share/arch_maintenance_disabled && echo "Maintenance reminders enabled"'
+alias maint-status='if [ -f ~/.local/share/arch_maintenance_disabled ]; then echo "Maintenance reminders: DISABLED"; else echo "Maintenance reminders: ENABLED"; fi'

+ 3 - 3
zsh/.config/zsh/completions.zsh

@@ -3,7 +3,7 @@
 # This file handles all completion registrations
 
 # Load custom completion files
-for completion_file in ~/.local/share/zsh/*-autocomplete.zsh; do
+for completion_file in ~/.local/share/zsh/*-autocomplete.zsh(N); do
     if [ -f "$completion_file" ]; then
         source "$completion_file"
     fi
@@ -13,7 +13,7 @@ done
 _lazy_load_completion() {
     local cmd="$1"
     local completion_cmd="$2"
-    
+
     eval "${cmd}() {
         unfunction $cmd
         eval \"\$($completion_cmd)\"
@@ -38,7 +38,7 @@ _kf_completion() {
     local -a contexts
     # Get all contexts and extract unique cluster names (remove -read and -security suffixes)
     contexts=($(kubectx 2>/dev/null | sed 's/-read$//; s/-security$//' | sort -u))
-    
+
     if [[ ${#contexts[@]} -gt 0 ]]; then
         _values 'cluster' "${contexts[@]}"
     fi

+ 94 - 10
zsh/.config/zsh/functions.zsh

@@ -507,16 +507,26 @@ function cb {
     return 1
   fi
   
-  export GTK_THEME=HighContrast
-  export GDK_THEME=HighContrast
-  export QT_STYLE_OVERRIDE=HighContrast
-  export XDG_CURRENT_DESKTOP=GNOME
-
-  # Reset GTK configuration
-  unset GTK2_RC_FILES
-  unset GTK_RC_FILES
-
-  exec /usr/bin/codeblocks "$@"
+  # Store original values
+  local original_gtk_theme="$GTK_THEME"
+  local original_gdk_theme="$GDK_THEME"
+  local original_qt_style="$QT_STYLE_OVERRIDE"
+  local original_xdg_desktop="$XDG_CURRENT_DESKTOP"
+  
+  # Set high contrast theme temporarily
+  GTK_THEME=HighContrast \
+  GDK_THEME=HighContrast \
+  QT_STYLE_OVERRIDE=HighContrast \
+  XDG_CURRENT_DESKTOP=GNOME \
+  GTK2_RC_FILES="" \
+  GTK_RC_FILES="" \
+  /usr/bin/codeblocks "$@"
+  
+  # Restore original values
+  export GTK_THEME="$original_gtk_theme"
+  export GDK_THEME="$original_gdk_theme"
+  export QT_STYLE_OVERRIDE="$original_qt_style"
+  export XDG_CURRENT_DESKTOP="$original_xdg_desktop"
 }
 
 
@@ -627,5 +637,79 @@ alias pport='ppid'
 # Node.js cleanup alias
 alias unChonk="echo 'Starting the great node_modules purge...' && find . -name 'node_modules' -type d -prune -exec sh -c 'echo \"Deleting {}\" && rm -rf \"{}\"' \;"
 
+# Font management
+alias fm='font-manager'
+alias fml='font-manager list'
+alias fms='font-manager status'
+alias fmc='font-manager clean'
+alias fma='font-manager all'
+
+# Advanced font management function
+function font-switch() {
+    # Show help if requested
+    if [[ "$1" == "-h" || "$1" == "--help" ]]; then
+        echo "Usage: font-switch [font-name]"
+        echo "Quickly switch between font sets"
+        echo "Example: font-switch jetbrains-mono"
+        return 0
+    fi
+    
+    if [[ -z "$1" ]]; then
+        echo "Available fonts:"
+        font-manager list
+        return 0
+    fi
+    
+    local font_name="$1"
+    
+    # Check if font exists
+    if ! font-manager list | grep -q "$font_name"; then
+        echo "Error: Font '$font_name' not found" >&2
+        echo "Available fonts:" >&2
+        font-manager list >&2
+        return 1
+    fi
+    
+    echo "Switching to $font_name fonts..."
+    font-manager clean
+    font-manager extract "$font_name"
+    
+    # Reload terminal if in kitty
+    if [[ "$TERM" == "xterm-kitty" ]] && command -v kitty >/dev/null 2>&1; then
+        echo "Reloading kitty configuration..."
+        kitty @ set-colors --all ~/.config/kitty/kitty.conf
+    fi
+    
+    echo "Font switch complete!"
+}
+
+# Font preview function
+function font-preview() {
+    # Show help if requested
+    if [[ "$1" == "-h" || "$1" == "--help" ]]; then
+        echo "Usage: font-preview [font-name]"
+        echo "Preview fonts in terminal"
+        echo "Example: font-preview jetbrains-mono"
+        return 0
+    fi
+    
+    if [[ -z "$1" ]]; then
+        echo "Error: Font name required" >&2
+        echo "Usage: font-preview [font-name]" >&2
+        return 1
+    fi
+    
+    local font_name="$1"
+    local preview_text="The quick brown fox jumps over the lazy dog
+ABCDEFGHIJKLMNOPQRSTUVWXYZ
+abcdefghijklmnopqrstuvwxyz
+0123456789
+!@#$%^&*()_+-=[]{}|;':\",./<>?"
+    
+    echo "Previewing font: $font_name"
+    echo "----------------------------------------"
+    echo "$preview_text" | font-manager extract "$font_name" && echo "$preview_text"
+}
+
 
 

+ 31 - 4
zsh/.config/zsh/maintenance.zsh

@@ -2,13 +2,25 @@
 # Configuration
 MAINTENANCE_SCRIPT="$HOME/.local/bin/maintenance.sh"
 TIMESTAMP_FILE="$HOME/.local/share/arch_maintenance_timestamp"
-INTERVAL=7
+DISABLED_FILE="$HOME/.local/share/arch_maintenance_disabled"
+INTERVAL=14  # Increased from 7 to 14 days
+QUIET_MODE=${MAINTENANCE_QUIET:-false}  # Set MAINTENANCE_QUIET=true to disable
 
 if [ ! -f "$MAINTENANCE_SCRIPT" ]; then
     echo "Maintenance script not found at $MAINTENANCE_SCRIPT"
     return 0
 fi
 
+# Check if maintenance is disabled
+if [ -f "$DISABLED_FILE" ] || [ "$QUIET_MODE" = "true" ]; then
+    return 0
+fi
+
+# Only run in interactive shells (not scripts)
+if [[ ! -o interactive ]]; then
+    return 0
+fi
+
 if [ -f "$TIMESTAMP_FILE" ]; then
     LAST_RUN=$(cat $TIMESTAMP_FILE)
     CURRENT_TIME=$(date +%s)
@@ -59,13 +71,21 @@ snooze_maintenance() {
     print_styled "⏰ Maintenance reminder snoozed for 7 more days."
 }
 
+# Function to disable maintenance permanently
+disable_maintenance() {
+    touch "$DISABLED_FILE"
+    print_styled "🔕 Maintenance reminders disabled permanently."
+    print_styled "To re-enable: rm $DISABLED_FILE"
+    print_styled "To run manually: sudo $MAINTENANCE_SCRIPT"
+}
+
 # Display maintenance notification
 echo ""
 print_styled "⚠️  It's been $DAYS_DIFF days since your last system maintenance"
 
-# Enhanced confirmation with three options
+# Enhanced confirmation with four options
 if command -v gum &> /dev/null; then
-    CHOICE=$(gum choose "Run maintenance now" "Skip this time" "Don't ask for 7 more days")
+    CHOICE=$(gum choose "Run maintenance now" "Skip this time" "Don't ask for 7 more days" "Disable permanently")
     case "$CHOICE" in
         "Run maintenance now")
             run_maintenance
@@ -77,6 +97,9 @@ if command -v gum &> /dev/null; then
         "Don't ask for 7 more days")
             snooze_maintenance
             ;;
+        "Disable permanently")
+            disable_maintenance
+            ;;
     esac
 else
     # Fallback for systems without gum
@@ -84,7 +107,8 @@ else
     echo "1) Run maintenance now"
     echo "2) Skip this time"
     echo "3) Don't ask for 7 more days"
-    echo -n "Enter your choice (1-3): "
+    echo "4) Disable permanently"
+    echo -n "Enter your choice (1-4): "
     read -k 1 CHOICE
     echo ""
 
@@ -99,6 +123,9 @@ else
         3)
             snooze_maintenance
             ;;
+        4)
+            disable_maintenance
+            ;;
         *)
             print_styled "Invalid choice. Maintenance skipped."
             print_styled "To run manually: sudo $MAINTENANCE_SCRIPT"

+ 1 - 10
zsh/.config/zsh/opts.zsh

@@ -36,17 +36,8 @@ if [[ -f "$HISTFILE" && -w "$HISTFILE" ]]; then
     fi
 fi
 
+# Minimal prompt configuration
 MNML_INFOLN=()
 MNML_PROMPT=(mnml_ssh mnml_status 'mnml_cwd 2 0' mnml_git mnml_keymap )
 MNML_RPROMPT=()
 MNML_NORMAL_CHAR="◉"
-
-# Environment variables
-export FZF_DEFAULT_OPTS='--height 40% --layout=reverse --border'
-export FZF_DEFAULT_COMMAND='fd --type f'
-
-export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
-export COREPACK_ENABLE_NETWORK_RESOLUTION=1
-export COREPACK_ENABLE_STRICT_VERIFICATION=0
-export MANPAGER="nvim +Man!"
-export _ZO_ECHO=1

BIN
zsh/.config/zsh/zsh_history_fw