better structure

This commit is contained in:
2025-10-19 00:14:19 +02:00
parent 057afc086e
commit 8733656ed9
630 changed files with 81 additions and 137 deletions

40
config/eww/Main/scripts/cava Executable file
View File

@@ -0,0 +1,40 @@
#! /bin/bash
bar="▁▂▃▄▅▆▇█"
dict="s/;//g;"
# creating "dictionary" to replace char with bar
i=0
while [ $i -lt ${#bar} ]
do
dict="${dict}s/$i/${bar:$i:1}/g;"
i=$((i=i+1))
done
# make sure to clean pipe
pipe="/tmp/cava.fifo"
if [ -p $pipe ]; then
unlink $pipe
fi
mkfifo $pipe
# write cava config
config_file="/tmp/waybar_cava_config"
echo "
[general]
bars = 30
[output]
method = raw
raw_target = $pipe
data_format = ascii
ascii_max_range = 7
" > $config_file
# run cava in the background
cava -p $config_file &
# reading data from fifo
while read -r cmd; do
echo $cmd | sed $dict
done < $pipe

28
config/eww/Main/scripts/details Executable file
View File

@@ -0,0 +1,28 @@
#!/bin/bash
if [[ $1 == "--image" ]]; then
FILE=$HOME/.face
if [[ -f "$FILE" ]]; then
echo "../../.face"
else
echo "Main/images/profile.png"
fi
fi
if [[ $1 == "--name" ]]; then
fullname=$(getent passwd "$(whoami)" | cut -d ':' -f 5 | cut -d ',' -f 1 | tr -d "\n")
if [ -z "$fullname" ]; then
echo "$(whoami)@$(hostnamectl | awk 'FNR==1 {print $3}')"
else
echo "$fullname"
fi
fi
if [[ $1 == "--kernel" ]]; then
echo "$(uname -r)"
fi
if [[ $1 == "--os" ]]; then
echo "$(cat /etc/os-release | awk 'NR==1'| awk -F '"' '{print $2}')"
fi

View File

@@ -0,0 +1,92 @@
#!/usr/bin/env python3
import sys
import subprocess
def wrap(text, width, height):
lines = []
paragraphs = text.split('\n')
for paragraph in paragraphs:
if len(lines) >= height:
return []
# Skip empty paragraphs
if not paragraph.strip():
lines.append('')
continue
current_line = ''
words = paragraph.split()
for word in words:
if current_line:
test_line = current_line + ' ' + word
else:
test_line = word
if len(test_line) <= width:
current_line = test_line
else:
if current_line:
lines.append(current_line)
current_line = word
else:
while len(word) > width:
lines.append(word[:width])
word = word[width:]
current_line = word
if current_line:
lines.append(current_line)
return lines
RETRY_LIMIT = 10
def main():
if len(sys.argv) != 3:
print("Usage: fortune.py <width> <height>")
sys.exit(1)
try:
width = int(sys.argv[1])
if width <= 0:
raise ValueError()
height = int(sys.argv[2])
if height <= 0:
raise ValueError()
except ValueError:
print("Invalid argument.")
sys.exit(1)
i = 0
while True:
if i >= RETRY_LIMIT:
print("Failed to get fortune after multiple attempts.")
sys.exit(1)
i += 1
try:
buffer = subprocess.check_output(['fortune', '-s'], text=True)
except subprocess.CalledProcessError as e:
print(f"Error running fortune: {e}")
sys.exit(1)
lines = wrap(buffer, width, height)
if lines:
break
else:
print("retrying...")
for line in lines:
print(line)
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Set the source audio player here.
# Players supporting the MPRIS spec are supported.
# Examples: spotify, vlc, chrome, mpv and others.
# Use `playerctld` to always detect the latest player.
# See more here: https://github.com/altdesktop/playerctl/#selecting-players-to-control
PLAYER="playerctld"
# Format of the information displayed
# Eg. {{ artist }} - {{ album }} - {{ title }}
# See more attributes here: https://github.com/altdesktop/playerctl/#printing-properties-and-metadata
FORMAT="{{ album }}"
PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status 2>/dev/null)
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
STATUS=$PLAYERCTL_STATUS
else
STATUS="No Album"
fi
if [ "$STATUS" = "Stopped" ]; then
echo "No Album"
elif [ "$STATUS" = "Paused" ]; then
playerctl --player=$PLAYER metadata --format "$FORMAT"
elif [ "$STATUS" = "No Alnum" ]; then
echo "$STATUS"
else
playerctl --player=$PLAYER metadata --format "$FORMAT"
fi

View File

@@ -0,0 +1,45 @@
#!/bin/bash
tmp_dir="$HOME/.cache/eww/music-art"
art_path=$tmp_dir/temp.png
art_blur_path="$tmp_dir/temp-blur.png"
cache_path="$tmp_dir/cache.conf"
cache_blur_path="$tmp_dir/cache-blur.conf"
log_path="$tmp_dir/log.txt"
default_path="$HOME/.config/eww/Main/images/default-music.svg"
default_blur_path="$HOME/.config/eww/Main/images/default-music-blur.png"
mkdir -p "$tmp_dir"
artlink="$(playerctl metadata mpris:artUrl)"
[ -f "$cache_path" ] && . "$cache_path"
# avoid unnecessary downloads
if [ -z "$artlink" ]; then
art_path="$default_path"
art_blur_path="$default_blur_path"
elif [[ "$cachedlink" != "$artlink" ]]; then
echo "cachedlink=\"$artlink\"" > "$cache_path"
echo "Updating music art: $artlink" >> "$log_path"
if [[ "$artlink" == "file://"* ]]; then
# Handle local file URLs
local_file_path="${artlink#file://}"
if [[ -f "$local_file_path" ]]; then
magick "$local_file_path" "$art_path" || exit 1
fi
magick "$art_path" -blur 0x8 "$art_blur_path"
elif [[ "$artlink" =~ ^https?:// ]]; then
# Handle HTTP/HTTPS URLs
curl -s "$artlink" --output "$art_path"_orig || exit 1
magick "$art_path"_orig "$art_path" || exit 1
magick "$art_path" -blur 0x8 "$art_blur_path"
else
echo "Unknown art link format: $artlink" >> "$log_path"
art_path="$default_path"
art_blur_path="$default_blur_path"
fi
fi
echo "path=\"$art_blur_path\"" > "$cache_blur_path"
echo "$art_path"

View File

@@ -0,0 +1,8 @@
#!/bin/bash
tmp_dir="$HOME/.cache/eww/music-art"
cache_blur_path="$tmp_dir/cache-blur.conf"
. "$cache_blur_path"
echo "$path"

View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Set the source audio player here.
# Players supporting the MPRIS spec are supported.
# Examples: spotify, vlc, chrome, mpv and others.
# Use `playerctld` to always detect the latest player.
# See more here: https://github.com/altdesktop/playerctl/#selecting-players-to-control
PLAYER="playerctld"
# Format of the information displayed
# Eg. {{ artist }} - {{ album }} - {{ title }}
# See more attributes here: https://github.com/altdesktop/playerctl/#printing-properties-and-metadata
FORMAT="{{ artist }}"
PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status 2>/dev/null)
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
STATUS=$PLAYERCTL_STATUS
else
STATUS="No Artist"
fi
if [ "$STATUS" = "Stopped" ]; then
echo "No Artist"
elif [ "$STATUS" = "Paused" ]; then
playerctl --player=$PLAYER metadata --format "$FORMAT"
elif [ "$STATUS" = "No Artist" ]; then
echo "$STATUS"
else
playerctl --player=$PLAYER metadata --format "$FORMAT"
fi

View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Set the source audio player here.
# Players supporting the MPRIS spec are supported.
# Examples: spotify, vlc, chrome, mpv and others.
# Use `playerctld` to always detect the latest player.
# See more here: https://github.com/altdesktop/playerctl/#selecting-players-to-control
PLAYER="playerctld"
# Format of the information displayed
# Eg. {{ artist }} - {{ album }} - {{ title }}
# See more attributes here: https://github.com/altdesktop/playerctl/#printing-properties-and-metadata
FORMAT="{{ duration(position) }} / {{ duration(mpris:length) }}"
PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status 2>/dev/null)
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
STATUS=$PLAYERCTL_STATUS
else
STATUS="--:-- / --:--"
fi
if [ "$STATUS" = "Stopped" ]; then
echo "--:-- / --:--"
elif [ "$STATUS" = "Paused" ]; then
playerctl --player=$PLAYER metadata --format "$FORMAT"
elif [ "$STATUS" = "--:-- / --:--" ]; then
echo "$STATUS"
else
playerctl --player=$PLAYER metadata --format "$FORMAT"
fi

View File

@@ -0,0 +1,32 @@
#!/bin/bash
# Set the source audio player here.
# Players supporting the MPRIS spec are supported.
# Examples: spotify, vlc, chrome, mpv and others.
# Use `playerctld` to always detect the latest player.
# See more here: https://github.com/altdesktop/playerctl/#selecting-players-to-control
PLAYER="playerctld"
# Format of the information displayed
# Eg. {{ artist }} - {{ album }} - {{ title }}
# See more attributes here: https://github.com/altdesktop/playerctl/#printing-properties-and-metadata
FORMAT="{{ duration(mpris:length) }}"
PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status 2>/dev/null)
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
STATUS=$PLAYERCTL_STATUS
else
STATUS="--:--"
fi
if [ "$STATUS" = "Stopped" ]; then
echo "--:--"
elif [ "$STATUS" = "Paused" ]; then
playerctl --player=$PLAYER metadata --format "$FORMAT"
elif [ "$STATUS" = "--:--" ]; then
echo "$STATUS"
else
playerctl --player=$PLAYER metadata --format "$FORMAT"
fi

View File

@@ -0,0 +1,4 @@
#!/bin/bash
POS=$(playerctl -p spotify position)
python -c "print(float($POS*1000000))"

View File

@@ -0,0 +1,43 @@
#!/bin/bash
# Set the source audio player here.
# Players supporting the MPRIS spec are supported.
# Examples: spotify, vlc, chrome, mpv and others.
# Use `playerctld` to always detect the latest player.
# See more here: https://github.com/altdesktop/playerctl/#selecting-players-to-control
PLAYER="playerctld"
# Format of the information displayed
# Eg. {{ artist }} - {{ album }} - {{ title }}
# See more attributes here: https://github.com/altdesktop/playerctl/#printing-properties-and-metadata
FORMAT="{{ title }}"
PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status 2>/dev/null)
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
STATUS=$PLAYERCTL_STATUS
else
STATUS="Nothing is playing"
fi
if [ "$1" == "--status" ]; then
if [ "$STATUS" = "Stopped" ]; then
echo "Nothing is playing"
elif [ "$STATUS" = "Paused" ]; then
playerctl --player=$PLAYER metadata --format "$FORMAT"
elif [ "$STATUS" = "Nothing is playing" ]; then
echo "$STATUS"
else
playerctl --player=$PLAYER metadata --format "$FORMAT"
fi
fi
if [ "$1" == "--icon" ]; then
if [[ $STATUS == "Playing" ]]; then
echo "󰏤"
else
echo "󰐊"
fi
fi

57
config/eww/Main/scripts/player Executable file
View File

@@ -0,0 +1,57 @@
#!/bin/bash
if [[ $1 == "--length" ]]; then
playerctl -p spotify metadata mpris:length
fi
if [[ $1 == "--open" ]]; then
URL=$(playerctl -p spotify metadata xesam:url)
echo "$URL?go=1&utm_medium=desktop"
fi
if [[ $1 == "--artist" ]]; then
"$HOME/.config/eww/Main/scripts/music-artist"
fi
if [[ $1 == "--length-time" ]]; then
"$HOME/.config/eww/Main/scripts/music-length"
fi
if [[ $1 == "--length-info" ]]; then
"$HOME/.config/eww/Main/scripts/music-length-info"
fi
if [[ $1 == "--cover" ]]; then
"$HOME/.config/eww/Main/scripts/music-art"
fi
if [[ $1 == "--album" ]]; then
"$HOME/.config/eww/Main/scripts/music-album"
fi
if [[ $1 == "--current-volume" ]]; then
VOLUME=$(playerctl -p spotify volume)
echo $(python -c "print(float("$VOLUME")*100)")
fi
if [[ $1 == "--volume" ]]; then
CURRENT_VOLUME=$2
NOW_VOLUME=$(python -c "print(float($CURRENT_VOLUME)/100)")
playerctl -p spotify volume "$NOW_VOLUME"
fi
if [[ $1 == "--shuffle" ]]; then
if [[ $(playerctl -p spotify shuffle) == "On" ]]; then
playerctl -p spotify shuffle off
else
playerctl -p spotify shuffle On
fi
fi
if [[ $1 == "--current-pos" ]]; then
playerctl -p spotify position --format '{{ duration(position) }}'
fi
if [[ $1 == "--launch-lyrics" ]]; then
eww open --toggle lyrics
fi

70
config/eww/Main/scripts/system Executable file
View File

@@ -0,0 +1,70 @@
#!/bin/bash
## Files and Data
PREV_TOTAL=0
PREV_IDLE=0
cpuFile="/tmp/.cpu_usage"
## Get CPU usage
get_cpu() {
if [[ -f "${cpuFile}" ]]; then
fileCont=$(cat "${cpuFile}")
PREV_TOTAL=$(echo "${fileCont}" | head -n 1)
PREV_IDLE=$(echo "${fileCont}" | tail -n 1)
fi
CPU=(`cat /proc/stat | grep '^cpu '`) # Get the total CPU statistics.
unset CPU[0] # Discard the "cpu" prefix.
IDLE=${CPU[4]} # Get the idle CPU time.
# Calculate the total CPU time.
TOTAL=0
for VALUE in "${CPU[@]:0:4}"; do
let "TOTAL=$TOTAL+$VALUE"
done
if [[ "${PREV_TOTAL}" != "" ]] && [[ "${PREV_IDLE}" != "" ]]; then
# Calculate the CPU usage since we last checked.
let "DIFF_IDLE=$IDLE-$PREV_IDLE"
let "DIFF_TOTAL=$TOTAL-$PREV_TOTAL"
let "DIFF_USAGE=(1000*($DIFF_TOTAL-$DIFF_IDLE)/$DIFF_TOTAL+5)/10"
echo "${DIFF_USAGE}"
else
echo "?"
fi
# Remember the total and idle CPU times for the next check.
echo "${TOTAL}" > "${cpuFile}"
echo "${IDLE}" >> "${cpuFile}"
}
## Get Used memory
get_mem() {
printf "%.0f\n" "$(free -m | grep Mem | awk '{print ($3/$2)*100}')"
}
## Get Volume
get_vol() {
pamixer --get-volume
}
## Get Brightness
get_brightness() {
if [ -z "$DISPLAY_DEVICE" ]; then
brightnessctl i --machine-readable | tr ',' ' ' | awk '{print $4}' | tr -d '%'
else
brightnessctl i -d $DISPLAY_DEVICE --machine-readable | tr ',' ' ' | awk '{print $4}' | tr -d '%'
fi
}
## Execute accordingly
if [[ "$1" == "--cpu" ]]; then
get_cpu
elif [[ "$1" == "--mem" ]]; then
get_mem
elif [[ "$1" == "--vol" ]]; then
get_vol
elif [[ "$1" == "--bri" ]]; then
get_brightness
fi

157
config/eww/Main/scripts/weather Executable file
View File

@@ -0,0 +1,157 @@
#!/bin/bash
## Collect data
cache_dir="$HOME/.cache/eww/weather"
cache_weather_stat=${cache_dir}/weather-stat
cache_weather_degree=${cache_dir}/weather-degree
cache_weather_hex=${cache_dir}/weather-hex
cache_weather_icon=${cache_dir}/weather-icon
cache_weather_updatetime=${cache_dir}/weather-updatetime
if [[ -z "$OPENWEATHER_API_KEY" ]]; then
echo "Please set the OPENWEATHER_API_KEY environment variable."
exit 1
fi
if [[ -z "$OPENWEATHER_LAT" ]]; then
echo "Please set the OPENWEATHER_LAT environment variable."
exit 1
fi
if [[ -z "$OPENWEATHER_LON" ]]; then
echo "Please set the OPENWEATHER_LON environment variable."
exit 1
fi
## Weather data
KEY=$OPENWEATHER_API_KEY
LAT=$OPENWEATHER_LAT
LON=$OPENWEATHER_LON
UNITS=metric
## Make cache dir
if [[ ! -d "$cache_dir" ]]; then
mkdir -p "${cache_dir}"
fi
## Get data
get_weather_data() {
weather=$(curl -sf "http://api.openweathermap.org/data/3.0/onecall?lat=${LAT}&lon=${LON}&exclude=minutely,hourly,daily&appid=${KEY}&units=${UNITS}")
echo "${weather}" >&2
weather=$(echo "$weather" | jq -r ".current")
if [ -n "$weather" ]; then
weather_temp=$(echo "$weather" | jq ".temp" | cut -d "." -f 1)
weather_icon_code=$(echo "$weather" | jq -r ".weather[].icon" | head -1)
weather_description=$(echo "$weather" | jq -r ".weather[].description" | head -1 | sed -e "s/\b\(.\)/\u\1/g")
#Big long if statement of doom
if [ "$weather_icon_code" == "50d" ]; then
weather_icon=" "
weather_hex="#7aa2f7"
elif [ "$weather_icon_code" == "50n" ]; then
weather_icon=" "
weather_hex="#7aa2f7"
elif [ "$weather_icon_code" == "01d" ]; then
weather_icon=" "
weather_hex="#e0af68"
elif [ "$weather_icon_code" == "01n" ]; then
weather_icon=" "
weather_hex="#c0caf5"
elif [ "$weather_icon_code" == "02d" ]; then
weather_icon=" "
weather_hex="#7aa2f7"
elif [ "$weather_icon_code" == "02n" ]; then
weather_icon=" "
weather_hex="#7aa2f7"
elif [ "$weather_icon_code" == "03d" ]; then
weather_icon=" "
weather_hex="#7aa2f7"
elif [ "$weather_icon_code" == "03n" ]; then
weather_icon=" "
weather_hex="#7aa2f7"
elif [ "$weather_icon_code" == "04d" ]; then
weather_icon=" "
weather_hex="#7aa2f7"
elif [ "$weather_icon_code" == "04n" ]; then
weather_icon=" "
weather_hex="#7aa2f7"
elif [ "$weather_icon_code" == "09d" ]; then
weather_icon=""
weather_hex="#7dcfff"
elif [ "$weather_icon_code" == "09n" ]; then
weather_icon=""
weather_hex="#7dcfff"
elif [ "$weather_icon_code" == "10d" ]; then
weather_icon=""
weather_hex="#7dcfff"
elif [ "$weather_icon_code" == "10n" ]; then
weather_icon=""
weather_hex="#7dcfff"
elif [ "$weather_icon_code" == "11d" ]; then
weather_icon=""
weather_hex="#ff9e64"
elif [ "$weather_icon_code" == "11n" ]; then
weather_icon=""
weather_hex="#ff9e64"
elif [ "$weather_icon_code" == "13d" ]; then
weather_icon=" "
weather_hex="#c0caf5"
elif [ "$weather_icon_code" == "13n" ]; then
weather_icon=" "
weather_hex="#c0caf5"
elif [ "$weather_icon_code" == "40d" ]; then
weather_icon=" "
weather_hex="#7dcfff"
elif [ "$weather_icon_code" == "40n" ]; then
weather_icon=" "
weather_hex="#7dcfff"
else
weather_icon=" "
weather_hex="#c0caf5"
fi
echo "$weather_icon" > "${cache_weather_icon}"
echo "$weather_description" > "${cache_weather_stat}"
echo "$weather_temp""°C" > "${cache_weather_degree}"
echo "$weather_hex" > "${cache_weather_hex}"
date "+%Y-%m-%d %H:%M:%S" | tee "${cache_weather_updatetime}" >/dev/null
else
echo "Weather Unavailable" > "${cache_weather_stat}"
echo " " > "${cache_weather_icon}"
echo "-" > "${cache_weather_degree}"
echo "#adadff" > "${cache_weather_hex}"
date "+%Y-%m-%d %H:%M:%S" | tee "${cache_weather_updatetime}" >/dev/null
fi
}
check_network() {
local max=12
local cnt=0
while [ $cnt -lt $max ]; do
if ping -c1 8.8.8.8 &>/dev/null || ping -c1 1.1.1.1 &>/dev/null; then
return 0
fi
echo "Waiting for network connection... (attempt: $((cnt + 1))/$max)" >&2
sleep 5
((cnt++))
done
echo "Network connection failed after $max attempts." >&2
return 1
}
## Execute
if [[ "$1" == "--getdata" ]]; then
if check_network; then
get_weather_data
fi
elif [[ "$1" == "--icon" ]]; then
cat "${cache_weather_icon}"
elif [[ "$1" == "--temp" ]]; then
cat "${cache_weather_degree}"
elif [[ "$1" == "--hex" ]]; then
tail -F "${cache_weather_hex}"
elif [[ "$1" == "--stat" ]]; then
cat "${cache_weather_stat}"
elif [[ "$1" == "--updatetime" ]]; then
cat "${cache_weather_updatetime}"
fi