From b3474e85dcce03e7de0b4a4e30ff7fad1f38ee26 Mon Sep 17 00:00:00 2001 From: ryukamish Date: Sat, 11 Apr 2026 18:25:38 +0530 Subject: add: small bash scripts for added functionality --- scripts/pkg-install | 71 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100755 scripts/pkg-install (limited to 'scripts/pkg-install') diff --git a/scripts/pkg-install b/scripts/pkg-install new file mode 100755 index 0000000..b86e803 --- /dev/null +++ b/scripts/pkg-install @@ -0,0 +1,71 @@ +#!/usr/bin/env bash + +set -euo pipefail + +# Colors +RED='\e[31m' +GREEN='\e[32m' +YELLOW='\e[33m' +BLUE='\e[34m' +BOLD='\e[1m' +RESET='\e[0m' + +# Check required tools +for tool in fzf pacman; do + if ! command -v "$tool" >/dev/null 2>&1; then + echo -e "${RED}Error: $tool is not installed${RESET}" + notify-send "ERROR" "$tool is not installed." + exit 1 + fi +done + +# FZF configuration +fzf_args=( + --multi + --preview 'pacman -Sii {1}' + --preview-label-pos='bottom' + --preview-window 'down:65%:wrap' + --color 'pointer:green,marker:green' + --header='Select packages to install (TAB to select multiple, ENTER to confirm)' + --border +) + +echo -e "${BLUE}${BOLD}Loading package list...${RESET}\n" + +# Get package selections +pkg_names=$(pacman -Slq | fzf "${fzf_args[@]}" || true) + +# Check if user selected anything +if [[ -z "$pkg_names" ]]; then + echo -e "${YELLOW}No packages selected. Exiting.${RESET}" + exit 0 +fi + +# Show what will be installed +echo -e "${BLUE}${BOLD}Selected packages:${RESET}" +echo "$pkg_names" | sed 's/^/ - /' +echo + +# Convert to array for safe handling +mapfile -t packages < <(echo "$pkg_names") + +# Install packages +echo -e "${GREEN}${BOLD}Installing ${#packages[@]} package(s)...${RESET}\n" + +if sudo pacman -S --noconfirm "${packages[@]}"; then + echo + echo -e "${GREEN}${BOLD}✓ Successfully installed ${#packages[@]} package(s)${RESET}" +else + echo + echo -e "${RED}${BOLD}✗ Installation failed or was incomplete${RESET}" +fi + +echo + +# Keep window open +if command -v gum >/dev/null 2>&1; then + gum spin --spinner "globe" --title "Done! Press any key to close..." -- bash -c 'read -n 1 -s' +else + echo -e "${BLUE}Press any key to close...${RESET}" + read -n 1 -s +fi -- cgit v1.3