vitorpy's Dotfiles

Add Arch Linux update system with waybar integration

+182 -1
+3
private_dot_config/fish/config.fish
··· 18 18 set fish_greeting 19 19 set EDITOR nvim 20 20 21 + # System update alias 22 + alias update="~/.config/arch/update-system.sh" 23 + 21 24 # Commands to run in interactive sessions can go here 22 25 starship init fish | source 23 26 direnv hook fish | source
+144
private_dot_config/private_arch/executable_update-system.sh
··· 1 + #!/bin/bash 2 + # Comprehensive system update script for Arch Linux 3 + # Updates official repos, AUR, and Flatpak packages 4 + 5 + set -e 6 + 7 + echo "════════════════════════════════════════════════════════════" 8 + echo " Arch Linux System Update" 9 + echo "════════════════════════════════════════════════════════════" 10 + echo "" 11 + 12 + # Color codes 13 + GREEN='\033[0;32m' 14 + YELLOW='\033[1;33m' 15 + BLUE='\033[0;34m' 16 + NC='\033[0m' # No Color 17 + 18 + # Check for updates first 19 + echo -e "${BLUE}==> Checking for updates...${NC}" 20 + echo "" 21 + 22 + # Official repos 23 + echo -e "${YELLOW}Official repositories:${NC}" 24 + if command -v checkupdates &>/dev/null; then 25 + official=$(checkupdates 2>/dev/null) 26 + official_count=$(echo "$official" | grep -v '^$' | wc -l) 27 + else 28 + official=$(pacman -Qu 2>/dev/null) 29 + official_count=$(echo "$official" | grep -v '^$' | wc -l) 30 + fi 31 + 32 + if [ "$official_count" -gt 0 ]; then 33 + echo "$official" 34 + echo "" 35 + else 36 + echo " No updates available" 37 + echo "" 38 + fi 39 + 40 + # AUR 41 + echo -e "${YELLOW}AUR packages:${NC}" 42 + if command -v yay &>/dev/null; then 43 + aur=$(yay -Qua 2>/dev/null) 44 + aur_count=$(echo "$aur" | grep -v '^$' | wc -l) 45 + if [ "$aur_count" -gt 0 ]; then 46 + echo "$aur" 47 + echo "" 48 + else 49 + echo " No updates available" 50 + echo "" 51 + fi 52 + else 53 + echo " yay not installed, skipping AUR updates" 54 + echo "" 55 + aur_count=0 56 + fi 57 + 58 + # Flatpak 59 + echo -e "${YELLOW}Flatpak packages:${NC}" 60 + if command -v flatpak &>/dev/null; then 61 + flatpak=$(flatpak remote-ls --updates 2>/dev/null) 62 + flatpak_count=$(echo "$flatpak" | grep -v '^$' | wc -l) 63 + if [ "$flatpak_count" -gt 0 ]; then 64 + echo "$flatpak" 65 + echo "" 66 + else 67 + echo " No updates available" 68 + echo "" 69 + fi 70 + else 71 + echo " Flatpak not installed, skipping" 72 + echo "" 73 + flatpak_count=0 74 + fi 75 + 76 + # Summary 77 + total=$((official_count + aur_count + flatpak_count)) 78 + echo "────────────────────────────────────────────────────────────" 79 + echo -e "${GREEN}Total updates available: $total${NC}" 80 + echo " Official: $official_count | AUR: $aur_count | Flatpak: $flatpak_count" 81 + echo "────────────────────────────────────────────────────────────" 82 + echo "" 83 + 84 + if [ "$total" -eq 0 ]; then 85 + echo -e "${GREEN}✓ System is up to date!${NC}" 86 + exit 0 87 + fi 88 + 89 + # Ask for confirmation 90 + read -p "Proceed with updates? [Y/n] " -n 1 -r 91 + echo "" 92 + 93 + if [[ ! $REPLY =~ ^[Yy]$ ]] && [[ ! -z $REPLY ]]; then 94 + echo "Update cancelled." 95 + exit 0 96 + fi 97 + 98 + echo "" 99 + 100 + # Update official repos 101 + if [ "$official_count" -gt 0 ]; then 102 + echo -e "${BLUE}==> Updating official repositories...${NC}" 103 + sudo pacman -Syu 104 + echo "" 105 + fi 106 + 107 + # Update AUR 108 + if [ "$aur_count" -gt 0 ]; then 109 + echo -e "${BLUE}==> Updating AUR packages...${NC}" 110 + yay -Sua 111 + echo "" 112 + fi 113 + 114 + # Update Flatpak 115 + if [ "$flatpak_count" -gt 0 ]; then 116 + echo -e "${BLUE}==> Updating Flatpak packages...${NC}" 117 + flatpak update -y 118 + echo "" 119 + fi 120 + 121 + # Clean up 122 + echo -e "${BLUE}==> Cleaning up...${NC}" 123 + echo "Removing orphaned packages..." 124 + orphans=$(pacman -Qtdq 2>/dev/null) 125 + if [ ! -z "$orphans" ]; then 126 + echo "$orphans" 127 + sudo pacman -Rns $(pacman -Qtdq) --noconfirm 128 + else 129 + echo " No orphaned packages found" 130 + fi 131 + 132 + echo "" 133 + echo "Cleaning package cache (keeping last 3 versions)..." 134 + sudo paccache -rk3 135 + 136 + if command -v yay &>/dev/null; then 137 + echo "Cleaning yay cache..." 138 + yay -Sc --noconfirm 139 + fi 140 + 141 + echo "" 142 + echo "════════════════════════════════════════════════════════════" 143 + echo -e "${GREEN}✓ System update complete!${NC}" 144 + echo "════════════════════════════════════════════════════════════"
+1
private_dot_config/private_arch/packages.txt
··· 15 15 gnome-keyring | pacman 16 16 fprintd | pacman 17 17 polkit-gnome | pacman 18 + pacman-contrib | pacman 18 19 19 20 # Hyprland ecosystem 20 21 waybar | pacman
+1 -1
private_dot_config/waybar/config
··· 97 97 "return-type": "json" 98 98 }, 99 99 "custom/dnf-updates": { 100 - "exec": "~/.config/waybar/scripts/dnf-updates.sh", 100 + "exec": "~/.config/waybar/scripts/pacman-updates.sh", 101 101 "interval": 300, 102 102 "return-type": "json" 103 103 },
+33
private_dot_config/waybar/scripts/executable_pacman-updates.sh
··· 1 + #!/bin/bash 2 + 3 + # Check for available pacman and AUR updates 4 + # Counts updates from official repos and AUR separately 5 + 6 + # Check official repo updates 7 + if command -v checkupdates &>/dev/null; then 8 + official_updates=$(checkupdates 2>/dev/null | wc -l) 9 + else 10 + # Fallback if pacman-contrib not installed 11 + official_updates=$(pacman -Qu 2>/dev/null | wc -l) 12 + fi 13 + 14 + # Check AUR updates (if yay is available) 15 + if command -v yay &>/dev/null; then 16 + aur_updates=$(yay -Qua 2>/dev/null | wc -l) 17 + else 18 + aur_updates=0 19 + fi 20 + 21 + # Total updates 22 + total_updates=$((official_updates + aur_updates)) 23 + 24 + if [ "$total_updates" -gt 0 ]; then 25 + if [ "$aur_updates" -gt 0 ]; then 26 + tooltip="$official_updates official, $aur_updates AUR updates" 27 + else 28 + tooltip="$official_updates updates available" 29 + fi 30 + echo "{\"text\":\"\\uf02d $total_updates\", \"tooltip\":\"$tooltip\", \"class\":\"updates-available\"}" 31 + else 32 + echo "{\"text\":\"\", \"tooltip\":\"System up to date\", \"class\":\"up-to-date\"}" 33 + fi