diff options
Diffstat (limited to 'quickshell/scripts')
| -rwxr-xr-x | quickshell/scripts/battery.sh | 2 | ||||
| -rwxr-xr-x | quickshell/scripts/brightness.sh | 4 | ||||
| -rwxr-xr-x | quickshell/scripts/cpu_temp.sh | 2 | ||||
| -rwxr-xr-x | quickshell/scripts/list-apps.sh | 115 | ||||
| -rwxr-xr-x | quickshell/scripts/network.sh | 2 | ||||
| -rwxr-xr-x | quickshell/scripts/volume.sh | 2 |
6 files changed, 127 insertions, 0 deletions
diff --git a/quickshell/scripts/battery.sh b/quickshell/scripts/battery.sh new file mode 100755 index 0000000..c7d4302 --- /dev/null +++ b/quickshell/scripts/battery.sh @@ -0,0 +1,2 @@ +battery=$(cat /sys/class/power_supply/BAT1/capacity) +echo "$battery" diff --git a/quickshell/scripts/brightness.sh b/quickshell/scripts/brightness.sh new file mode 100755 index 0000000..ccb2bc2 --- /dev/null +++ b/quickshell/scripts/brightness.sh @@ -0,0 +1,4 @@ +brightness=$(brightnessctl | grep 'Current brightness' | grep -o '[0-9]\+' | head -n 1) +temp=$(hyprctl hyprsunset temperature 2>/dev/null | grep -o '[0-9]\+') +if [ -z "$temp" ]; then temp=6000; fi +echo "$brightness $temp" diff --git a/quickshell/scripts/cpu_temp.sh b/quickshell/scripts/cpu_temp.sh new file mode 100755 index 0000000..de73d7d --- /dev/null +++ b/quickshell/scripts/cpu_temp.sh @@ -0,0 +1,2 @@ +temp=$(sensors | awk '/^Package id 0:/ {print int($4) + 273}') +echo "$temp" diff --git a/quickshell/scripts/list-apps.sh b/quickshell/scripts/list-apps.sh new file mode 100755 index 0000000..bac48b6 --- /dev/null +++ b/quickshell/scripts/list-apps.sh @@ -0,0 +1,115 @@ +#!/bin/sh +# List desktop applications for the launcher + +# Blacklist - apps to hide (add desktop file basenames here) +BLACKLIST=( + # "xfce4-about.desktop" + # "avahi-discover.desktop" + # "bssh.desktop" + # "bvnc.desktop" + # "qv4l2.desktop" + # "qvidcap.desktop" + # "lstopo.desktop" + # "uuctl.desktop" + # "codium.desktop" # Hide regular VSCodium (keep Wayland version) + # "xgps.desktop" # Hide Xgps + # "xgpsspeed.desktop" # Hide Xgpsspeed +) + +# Search paths for .desktop files (local first so overrides work) +XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" +IFS=':' read -ra SEARCH_PATHS <<< "$XDG_DATA_DIRS" + +# Function to find icon path +find_icon() { + local icon_name="$1" + + # If it's already a path, return it + if [[ "$icon_name" == /* ]]; then + echo "$icon_name" + return + fi + + # Common icon sizes to try + local sizes=(48 32 64 128 256) + + # Icon theme paths + local icon_paths=( + "$HOME/.local/share/icons" + "$HOME/.icons" + "/usr/share/icons" + "/usr/share/pixmaps" + ) + + # Try to find the icon + for path in "${icon_paths[@]}"; do + # Try with extensions + for ext in png svg xpm; do + # Direct match in pixmaps + if [ -f "$path/$icon_name.$ext" ]; then + echo "$path/$icon_name.$ext" + return + fi + + # Try in hicolor theme with different sizes + for size in "${sizes[@]}"; do + if [ -f "$path/hicolor/${size}x${size}/apps/$icon_name.$ext" ]; then + echo "$path/hicolor/${size}x${size}/apps/$icon_name.$ext" + return + fi + done + done + done + + # If not found, just return the icon name + echo "$icon_name" +} + +# Collect all desktop files and process, avoiding duplicates +# We use process substitution to avoid subshell issues with arrays +declare -A seen_apps + +for dir in "${SEARCH_PATHS[@]}"; do + [ ! -d "$dir" ] && continue + + while IFS= read -r desktop_file; do + basename_file=$(basename "$desktop_file") + + # Skip duplicates (local overrides system) + [[ -n "${seen_apps[$basename_file]}" ]] && continue + seen_apps[$basename_file]=1 + + # Skip blacklisted + skip=0 + for blacklisted in "${BLACKLIST[@]}"; do + if [[ "$basename_file" == "$blacklisted" ]]; then + skip=1 + break + fi + done + [[ $skip -eq 1 ]] && continue + + # Skip if NoDisplay=true + grep -q "^NoDisplay=true" "$desktop_file" 2>/dev/null && continue + + # Extract fields + name=$(grep "^Name=" "$desktop_file" | head -1 | cut -d= -f2-) + comment=$(grep "^Comment=" "$desktop_file" | head -1 | cut -d= -f2-) + icon=$(grep "^Icon=" "$desktop_file" | head -1 | cut -d= -f2-) + exec=$(grep "^Exec=" "$desktop_file" | head -1 | cut -d= -f2- | sed 's/%[uUfF]//g' | sed 's/%[cdnNvmki]//g') + + # Skip if no name or exec + [ -z "$name" ] && continue + [ -z "$exec" ] && continue + + # Default comment if empty + [ -z "$comment" ] && comment="Application" + + # Find icon path + icon_path=$(find_icon "$icon") + + # Output in format: name|comment|icon_path|exec + echo "$name|$comment|$icon_path|$exec" + + done < <(find -L "$dir" -name "*.desktop" -type f 2>/dev/null) +done | sort -u diff --git a/quickshell/scripts/network.sh b/quickshell/scripts/network.sh new file mode 100755 index 0000000..f50707e --- /dev/null +++ b/quickshell/scripts/network.sh @@ -0,0 +1,2 @@ +connections=$(nmcli connection show --active | sed -n '2 p') +echo "$connections" diff --git a/quickshell/scripts/volume.sh b/quickshell/scripts/volume.sh new file mode 100755 index 0000000..3059255 --- /dev/null +++ b/quickshell/scripts/volume.sh @@ -0,0 +1,2 @@ +volume=$(pactl get-sink-volume @DEFAULT_SINK@ | grep -Po '\d+(?=%)' | head -n 1) +echo "$volume" |
