mirror of
https://github.com/ItsDrike/nixdots
synced 2024-11-10 11:39:42 +00:00
ItsDrike
ac23da55c5
This configuration was simply copied from my old Arch Linux system. There are some issues that still need to be solved, namely with fonts and missing bitcoin price script, but it's mostly minor.
51 lines
1.4 KiB
Bash
Executable file
51 lines
1.4 KiB
Bash
Executable file
#!/bin/env bash
|
|
|
|
# $1: Current number
|
|
# $2: Range minimum
|
|
# $3: Range maximum
|
|
# $4-: Icons as individual arguments
|
|
pick_icon() {
|
|
cur="$1"
|
|
min="$2"
|
|
max="$3"
|
|
shift 3
|
|
icons=("$@")
|
|
|
|
index="$(echo "($cur-$min)/(($max-$min)/${#icons[@]})" | bc)"
|
|
|
|
# Print the picked icon, handling overflows/underflows, i.e. if our index is <0 or >len(icons)
|
|
if [ "$index" -ge "${#icons[@]}" ]; then
|
|
index=-1
|
|
elif [ "$index" -lt 0 ]; then
|
|
index=0
|
|
fi
|
|
|
|
echo "${icons[index]}"
|
|
}
|
|
|
|
# Will block and listen to the hyprland socket messages and output them
|
|
# Generally used like: hyprland_ipc | while read line; do handle $line; done
|
|
# Read <https://wiki.hyprland.org/IPC/> for output format and available events
|
|
# Note: requires openbsd version of netcat.
|
|
# $1 - Optional event to listen for (no event filtering will be done if not provided)
|
|
hyprland_ipc() {
|
|
if [ -z "$HYPRLAND_INSTANCE_SIGNATURE" ]; then
|
|
>&2 echo "Hyprland is not running, IPC not available"
|
|
exit 1
|
|
fi
|
|
|
|
SOCKET_PATH="${XDG_RUNTIME_DIR:-/run/user/$UID}/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock"
|
|
#SOCKET_PATH="/tmp/hypr/$HYPRLAND_INSTANCE_SIGNATURE/.socket2.sock"
|
|
|
|
if [ -z "$1" ]; then
|
|
nc -U "$SOCKET_PATH" | while read -r test; do
|
|
echo "$test"
|
|
done
|
|
else
|
|
nc -U "$SOCKET_PATH" | while read -r test; do
|
|
# shellcheck disable=SC2016
|
|
echo "$test" | grep --line-buffered -E "^$1>>" | stdbuf -oL awk -F '>>' '{print $2}'
|
|
done
|
|
fi
|
|
}
|