Files
Hyprland-Config/scripts/packagemenu.sh

103 lines
3.5 KiB
Bash
Executable File

#!/bin/bash
TERMINAL="kitty"
run_term() {
"$TERMINAL" -e bash -lc "$1" _ "${@:2}"
}
menu() {
printf "%s\n" \
"󰏓 Install Package (Pacman)" \
"󰛓 Install Package (AUR)" \
"󰍉 Search & Install (Pacman)" \
"󰢤 Search & Install (AUR)" \
"󰚰 Full System Update" \
"󰆴 Remove Package" \
"󰁯 Clean Orphans" \
"󰏗 Clear Package Cache"
}
choice=$(menu | wofi --dmenu --prompt "Packages")
[ -z "$choice" ] && exit 0
case "$choice" in
"󰏓 Install Package (Pacman)")
pkg=$(wofi --dmenu --prompt "Pacman Install")
[ -z "$pkg" ] && exit 0
run_term 'pkg="$1"; pkexec pacman -S --needed -- "$pkg"; echo; read -n 1 -s -r -p "Taste drücken zum Schließen..."' "$pkg"
;;
"󰛓 Install Package (AUR)")
pkg=$(wofi --dmenu --prompt "AUR Install")
[ -z "$pkg" ] && exit 0
run_term 'pkg="$1"; paru -S --needed -- "$pkg"; echo; read -n 1 -s -r -p "Taste drücken zum Schließen..."' "$pkg"
;;
"󰍉 Search & Install (Pacman)")
query=$(wofi --dmenu --prompt "Pacman Search")
[ -z "$query" ] && exit 0
results=$(pacman -Ss -- "$query" | awk '
/^[^ ]+\/[^ ]+/ {
split($1,a,"/");
pkg=a[2];
repo=a[1];
ver=$2;
print repo " :: " pkg " :: " ver
}')
[ -z "$results" ] && notify-send "Pacman Search" "Keine Pakete gefunden." && exit 0
selection=$(printf "%s\n" "$results" | wofi --dmenu --prompt "Select Pacman Package")
[ -z "$selection" ] && exit 0
pkg=$(printf "%s" "$selection" | awk -F ' :: ' '{print $2}')
[ -z "$pkg" ] && exit 0
run_term 'pkg="$1"; pkexec pacman -S --needed -- "$pkg"; echo; read -n 1 -s -r -p "Taste drücken zum Schließen..."' "$pkg"
;;
"󰢤 Search & Install (AUR)")
query=$(wofi --dmenu --prompt "AUR Search")
[ -z "$query" ] && exit 0
results=$(paru -Ss -- "$query" | awk '
/^[^ ]+\/[^ ]+/ {
split($1,a,"/");
pkg=a[2];
repo=a[1];
ver=$2;
print repo " :: " pkg " :: " ver
}')
[ -z "$results" ] && notify-send "AUR Search" "Keine Pakete gefunden." && exit 0
selection=$(printf "%s\n" "$results" | wofi --dmenu --prompt "Select AUR Package")
[ -z "$selection" ] && exit 0
pkg=$(printf "%s" "$selection" | awk -F ' :: ' '{print $2}')
[ -z "$pkg" ] && exit 0
run_term 'pkg="$1"; paru -S --needed -- "$pkg"; echo; read -n 1 -s -r -p "Taste drücken zum Schließen..."' "$pkg"
;;
"󰚰 Full System Update")
run_term 'pkexec pacman -Syu; echo; read -n 1 -s -r -p "Taste drücken zum Schließen..."'
;;
"󰆴 Remove Package")
installed=$(pacman -Qq | sort)
pkg=$(printf "%s\n" "$installed" | wofi --dmenu --prompt "Remove Package")
[ -z "$pkg" ] && exit 0
run_term 'pkg="$1"; pkexec pacman -Rns -- "$pkg"; echo; read -n 1 -s -r -p "Taste drücken zum Schließen..."' "$pkg"
;;
"󰁯 Clean Orphans")
run_term 'orphans=$(pacman -Qdtq); if [ -n "$orphans" ]; then pkexec pacman -Rns -- $orphans; else echo "Keine Waisenpakete gefunden."; fi; echo; read -n 1 -s -r -p "Taste drücken zum Schließen..."'
;;
"󰏗 Clear Package Cache")
run_term 'pkexec pacman -Sc; echo; read -n 1 -s -r -p "Taste drücken zum Schließen..."'
;;
esac