diff --git a/install.sh b/install.sh index fafd7c6..28ecb6b 100755 --- a/install.sh +++ b/install.sh @@ -1,19 +1,107 @@ -cp $HOME/.config/quickshell/colors/Colors.qml.template $HOME/.config/quickshell/colors/Colors.qml +#!/usr/bin/env bash +set -euo pipefail -get_white_svg() { +SCRIPT_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &>/dev/null && pwd)" + +cp "$SCRIPT_DIR/colors/Colors.qml.template" "$SCRIPT_DIR/colors/Colors.qml" + +# ---------------------------- +# UI helpers +# ---------------------------- +info() { echo -e "\033[1;34m[INFO]\033[0m $*"; } +ok() { echo -e "\033[1;32m[ OK ]\033[0m $*"; } +warn() { echo -e "\033[1;33m[WARN]\033[0m $*"; } +fail() { echo -e "\033[1;31m[FAIL]\033[0m $*"; } + +download() { local url="$1" - local out_path="$2" + local out="$2" + local name="${3:-$(basename "$out")}" - curl -fsSL "$url" \ - | sed -E 's/#[0-9a-fA-F]{3,6}/#ffffff/g' \ - > "$out_path" + info "Downloading $name" + + if curl -fL --progress-bar "$url" -o "$out"; then + ok "Saved $name" + else + fail "Failed $name" + return 1 + fi } -mkdir -p "$HOME/.config/quickshell/modules/wlogout/icons" +transform_svg_white() { + local url="$1" + local out="$2" + local name="${3:-$(basename "$out")}" -get_white_svg "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/src/actions/symbolic/system-hibernate-symbolic.svg" "$HOME/.config/quickshell/modules/wlogout/icons/hibernate.svg" -get_white_svg "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/bold/actions/symbolic/system-lock-screen-symbolic.svg" "$HOME/.config/quickshell/modules/wlogout/icons/lock.svg" -get_white_svg "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/src/status/symbolic/logout-symbolic.svg" "$HOME/.config/quickshell/modules/wlogout/icons/logout.svg" -get_white_svg "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/src/actions/symbolic/system-reboot-symbolic.svg" "$HOME/.config/quickshell/modules/wlogout/icons/reboot.svg" -get_white_svg "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/src/actions/symbolic/system-shutdown-symbolic.svg" "$HOME/.config/quickshell/modules/wlogout/icons/shutdown.svg" -get_white_svg "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/src/actions/24/system-suspend.svg" "$HOME/.config/quickshell/modules/wlogout/icons/suspend.svg" \ No newline at end of file + info "Fetching + whitening $name" + + if curl -fsSL "$url" \ + | sed -E 's/#[0-9a-fA-F]{3,6}/#ffffff/g' \ + > "$out"; then + ok "Generated $name" + else + fail "Failed $name" + return 1 + fi +} + +# ---------------------------- +# Start +# ---------------------------- +echo +info "Preparing wlogout icons..." +mkdir -p "$SCRIPT_DIR/modules/wlogout/icons" +mkdir -p "$SCRIPT_DIR/colors/icons" + +# ---------------------------- +# Icons (wlogout) +# ---------------------------- +transform_svg_white \ + "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/src/actions/symbolic/system-hibernate-symbolic.svg" \ + "$SCRIPT_DIR/modules/wlogout/icons/hibernate.svg" \ + "hibernate.svg" + +transform_svg_white \ + "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/bold/actions/symbolic/system-lock-screen-symbolic.svg" \ + "$SCRIPT_DIR/modules/wlogout/icons/lock.svg" \ + "lock.svg" + +transform_svg_white \ + "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/src/status/symbolic/logout-symbolic.svg" \ + "$SCRIPT_DIR/modules/wlogout/icons/logout.svg" \ + "logout.svg" + +transform_svg_white \ + "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/src/actions/symbolic/system-reboot-symbolic.svg" \ + "$SCRIPT_DIR/modules/wlogout/icons/reboot.svg" \ + "reboot.svg" + +transform_svg_white \ + "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/src/actions/symbolic/system-shutdown-symbolic.svg" \ + "$SCRIPT_DIR/modules/wlogout/icons/shutdown.svg" \ + "shutdown.svg" + +transform_svg_white \ + "https://raw.githubusercontent.com/vinceliuice/Colloid-icon-theme/main/src/actions/24/system-suspend.svg" \ + "$SCRIPT_DIR/modules/wlogout/icons/suspend.svg" \ + "suspend.svg" + +# ---------------------------- +# UI icons +# ---------------------------- +echo +info "Preparing global icons..." +mkdir -p "$SCRIPT_DIR/colors/icons" + +download \ + "https://raw.githubusercontent.com/Tekh-ops/Garuda-Linux-Icons/refs/heads/master/actions/scalable/window-close.svg" \ + "$SCRIPT_DIR/colors/icons/wrong.svg" \ + "wrong.svg" + +download \ + "https://raw.githubusercontent.com/Tekh-ops/Garuda-Linux-Icons/refs/heads/master/actions/scalable/dialog-ok-apply.svg" \ + "$SCRIPT_DIR/colors/icons/correct.svg" \ + "correct.svg" + +echo +ok "All assets prepared successfully." \ No newline at end of file