inital commit
commit
31b35db7da
@ -0,0 +1,27 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Prints all batteries, their percentage remaining and an emoji corresponding
|
||||||
|
# to charge status (🔌 for plugged up, 🔋 for discharging on battery, etc.).
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
3) notify-send "🔋 Battery module" "🔋: discharging
|
||||||
|
🛑: not charging
|
||||||
|
♻: stagnant charge
|
||||||
|
🔌: charging
|
||||||
|
⚡: charged
|
||||||
|
❗: battery very low!" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# Loop through all attached batteries.
|
||||||
|
for battery in /sys/class/power_supply/BAT?
|
||||||
|
do
|
||||||
|
# Get its remaining capacity and charge status.
|
||||||
|
capacity=$(cat "$battery"/capacity) || break
|
||||||
|
status=$(sed "s/Discharging/🔋/;s/Not charging/🛑/;s/Charging/🔌/;s/Unknown/♻️/;s/Full/⚡/" "$battery"/status)
|
||||||
|
|
||||||
|
# If it is discharging and 25% or less, we will add a ❗ as a warning.
|
||||||
|
[ "$capacity" -le 25 ] && [ "$status" = "🔋" ] && warn="❗"
|
||||||
|
|
||||||
|
printf "%s%s%s%% " "$status" "$warn" "$capacity"
|
||||||
|
unset warn
|
||||||
|
done | sed s/\ $/\\n/
|
@ -0,0 +1,11 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
#date '+%a %d. %B %Y %H:%M'
|
||||||
|
date '+%a %d.%m.%Y %H:%M'
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) notify-send "This Month" "$(cal --color=always | sed "s/\x1B\[7m/<b><span color=\"red\">/;s/\x1B\[27m/<\/span><\/b>/")" && notify-send "Appointments" "$(calcurse -d3)" ;;
|
||||||
|
2) $TERMINAL -e calcurse &;;
|
||||||
|
3) notify-send "📅 Time/date module" "\- Left click to show upcoming appointments for the next three days via \`calcurse -d3\` and show the month via \`cal\`
|
||||||
|
- Middle click opens calcurse if installed" ;;
|
||||||
|
esac
|
@ -0,0 +1,22 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Status bar module for disk space
|
||||||
|
# $1 should be drive mountpoint, otherwise assumed /.
|
||||||
|
|
||||||
|
location=${1:-/}
|
||||||
|
|
||||||
|
[ -d "$location" ] || exit
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) notify-send "💽 Disk space" "$(df -h --output=target,used,size)" ;;
|
||||||
|
3) notify-send "💽 Disk module" "\- Shows used hard drive space.
|
||||||
|
- Click to show all disk info." ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case "$location" in
|
||||||
|
"/home"* ) icon="🏠" ;;
|
||||||
|
"/mnt"* ) icon="💾" ;;
|
||||||
|
*) icon="🖥 ";;
|
||||||
|
esac
|
||||||
|
|
||||||
|
printf "%s: %s\n" "$icon" "$(df -h "$location" | awk ' /[0-9]/ {print $3 "/" $2}')"
|
@ -0,0 +1,19 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Show wifi 📶 and percent strength or 📡 if none.
|
||||||
|
# Show 🌐 if connected to ethernet or ❎ if none.
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid "$TERMINAL" -e nmtui & ;;
|
||||||
|
3) notify-send "🌐 Internet module" "\- Click to connect
|
||||||
|
📡: no wifi connection
|
||||||
|
📶: wifi connection with quality
|
||||||
|
❎: no ethernet
|
||||||
|
🌐: ethernet working
|
||||||
|
" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
grep -q "down" /sys/class/net/w*/operstate && wifiicon="📡" ||
|
||||||
|
wifiicon="$(grep "^\s*w" /proc/net/wireless | awk '{ print "📶", int($3 * 100 / 70) "%" }')"
|
||||||
|
|
||||||
|
printf "%s %s\n" "$wifiicon" "$(sed "s/down/❎/;s/up/🌐/" /sys/class/net/e*/operstate)"
|
@ -0,0 +1,49 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# i3blocks mail module.
|
||||||
|
# Displays number of unread mail and an loading icon if updating.
|
||||||
|
# When clicked, brings up `neomutt`.
|
||||||
|
messageinfo() { notify-send --urgency=$urgency --app-name="📧 Mailbox" "📧 Mailbox:" "Acc: $to
|
||||||
|
From: <span foreground=\"#b8bb26\"><b>$from</b></span>
|
||||||
|
Subject: $subject
|
||||||
|
<span foreground=\"#a89984\">Reseved in $mailfolder</span>" ;}
|
||||||
|
notify(){
|
||||||
|
new=$(find $HOME/.local/share/mail/*/*/new/ -type f 2> /dev/null)
|
||||||
|
newcount=$(echo "$new" | sed '/^\s*$/d' | wc -l)
|
||||||
|
if [ "$newcount" -gt "0" ]; then
|
||||||
|
find $HOME/.local/share/mail/*/*/new/ -type f 2> /dev/null | while read file; do
|
||||||
|
# Extract subject and sender from mail.
|
||||||
|
to=$(echo "$file" | sed -E "s/\/home\/jasper\/.local\/share\/mail\/(.+)\/.*\/.*\/.*$/\1/")
|
||||||
|
mailfolder=$(echo $file | sed -E "s/\/home\/jasper\/.local\/share\/mail\/.*\/(.+)\/.*\/.*$/\1/")
|
||||||
|
from=$(awk '/^From: / && ++n ==1,/^\<.*\>:/' "$file" | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | awk '{ $1=""; if (NF>=3)$NF=""; print $0 }' | sed 's/^[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//')
|
||||||
|
subject=$(awk '/^Subject: / && ++n == 1,/^\<.*\>: / && ++i == 2' "$file" | head -n 1 | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | sed 's/^Subject: //' | sed 's/^{[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//' | tr -d '\n')
|
||||||
|
case $mailfolder in
|
||||||
|
Spam ) urgency="low" ;;
|
||||||
|
Fritz-Box ) urgency="low" ;;
|
||||||
|
Schule ) urgency="critical" ;;
|
||||||
|
* ) urgency="normal" ;;
|
||||||
|
esac
|
||||||
|
case $to in
|
||||||
|
jspahl11@gmail.com ) urgency="low" ;;
|
||||||
|
* ) urgency=$urgency
|
||||||
|
esac
|
||||||
|
messageinfo &
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid -f "$TERMINAL" -e neomutt & ;;
|
||||||
|
2) setsid -f mailsync >/dev/null & ;;
|
||||||
|
3) notify-send -t 1000 "📬 Mailbox module:" "\- Shows unread mail
|
||||||
|
- Shows 🔃 if syncing mail
|
||||||
|
- Left click opens neomutt
|
||||||
|
- Middle click syncs mail" && notify >/dev/null ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0"&;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
unread="$(find ${XDG_DATA_HOME:-$HOME/.local/share}/mail/*/*/new/* -type f | wc -l 2>/dev/null)"
|
||||||
|
|
||||||
|
icon="$(cat "/tmp/imapsyncicon_$USER")" 2>/dev/null
|
||||||
|
|
||||||
|
[ "$unread" = "0" ] && [ "$icon" = "" ] || echo "📬 $unread$(cat "/tmp/imapsyncicon_$USER" 2>/dev/null)"
|
@ -0,0 +1,55 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
filter() {
|
||||||
|
sed "/^volume:/d" | tac | sed -e "s/\\&/&/g;s/\\[paused\\].*/<span color=\"gray\" font_style=\"italic\">/g;s/\\[playing\\].*/<span>/g" | tr -d '\n' |sed -e "s/$/<\/span>\n/g"
|
||||||
|
}
|
||||||
|
player=""
|
||||||
|
|
||||||
|
[ -z $BLOCK_INSTANCE ] || player="--player=$BLOCK_INSTANCE"
|
||||||
|
|
||||||
|
case $BLOCK_INSTANCE in
|
||||||
|
"mpd") playprog="$TERMINAL -e ncmpcpp" ;;
|
||||||
|
"spotify") playprog="$TERMINAL -e spt" ;;
|
||||||
|
"cmus") playprog="$TERMINAL -e cmus" ;;
|
||||||
|
"vlc" ) playprog="vlc" ;;
|
||||||
|
*) playprog="" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ "$BLOCK_INSTANCE" == "mpd" ]; then
|
||||||
|
status() { mpc status | filter ;}
|
||||||
|
toggle() { mpc toggle | filter ;}
|
||||||
|
next() { mpc next | filter ;}
|
||||||
|
prev() { mpc prev | filter ;}
|
||||||
|
else
|
||||||
|
status() {
|
||||||
|
playerctl metadata $player -f '{{artist}} - {{title}}
|
||||||
|
[{{lc(status)}}]' | filter
|
||||||
|
}
|
||||||
|
|
||||||
|
toggle() {
|
||||||
|
playerctl play-pause $player
|
||||||
|
status
|
||||||
|
}
|
||||||
|
|
||||||
|
next() {
|
||||||
|
playerctl next $player
|
||||||
|
status
|
||||||
|
}
|
||||||
|
prev() {
|
||||||
|
playerctl previous $player
|
||||||
|
status
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) status && setsid $playprog & ;;
|
||||||
|
2) toggle ;;
|
||||||
|
3) status && notify-send "🎵 Music module" "\- Shows playing song.
|
||||||
|
- Italic when paused.
|
||||||
|
- Left click opens player.
|
||||||
|
- Middle click pauses.
|
||||||
|
- Scroll changes tracks.:" ;;
|
||||||
|
4) prev ;;
|
||||||
|
5) next ;;
|
||||||
|
*) status ;;
|
||||||
|
esac; exit
|
@ -0,0 +1,79 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
filter() {
|
||||||
|
sed "/^volume:/d" | tac | sed -e "s/\\&/&/g;s/\\[paused\\].*/ /g;s/\\[playing\\].*/ /g" | tr -d '\n' |sed -e "s/$/\n/g"
|
||||||
|
}
|
||||||
|
player=""
|
||||||
|
|
||||||
|
[ -z $BLOCK_INSTANCE ] || player="--player=$BLOCK_INSTANCE"
|
||||||
|
|
||||||
|
case $BLOCK_INSTANCE in
|
||||||
|
"mpd") playprog="$TERMINAL -e ncmpcpp" ;;
|
||||||
|
"spotify"|"spotifyd") playprog="$TERMINAL -e spt" ;;
|
||||||
|
"cmus") playprog="$TERMINAL -e cmus" ;;
|
||||||
|
"vlc" ) playprog="vlc" ;;
|
||||||
|
*) playprog="" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $BLOCK_INSTANCE in
|
||||||
|
"mpd")
|
||||||
|
playprog="$TERMINAL -e ncmpcpp"
|
||||||
|
status() { mpc status | filter ;}
|
||||||
|
toggle() { mpc toggle | filter ;}
|
||||||
|
next() { mpc next | filter ;}
|
||||||
|
prev() { mpc prev | filter ;};;
|
||||||
|
"spotify"|"spotifyd")
|
||||||
|
playprog="$TERMINAL -e spt"
|
||||||
|
status() {
|
||||||
|
spt pb -s
|
||||||
|
}
|
||||||
|
|
||||||
|
toggle() {
|
||||||
|
spt pb -t
|
||||||
|
status
|
||||||
|
}
|
||||||
|
|
||||||
|
next() {
|
||||||
|
spt pb -n
|
||||||
|
status
|
||||||
|
}
|
||||||
|
prev() {
|
||||||
|
spt pb -p
|
||||||
|
status
|
||||||
|
}
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
status() {
|
||||||
|
playerctl metadata $player -f '{{artist}} - {{title}}
|
||||||
|
[{{lc(status)}}]' | filter
|
||||||
|
}
|
||||||
|
|
||||||
|
toggle() {
|
||||||
|
playerctl play-pause $player
|
||||||
|
status
|
||||||
|
}
|
||||||
|
|
||||||
|
next() {
|
||||||
|
playerctl next $player
|
||||||
|
status
|
||||||
|
}
|
||||||
|
prev() {
|
||||||
|
playerctl previous $player
|
||||||
|
status
|
||||||
|
}
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) status && setsid $playprog & ;;
|
||||||
|
2) toggle ;;
|
||||||
|
3) status && notify-send "🎵 Music module" "\- Shows playing song.
|
||||||
|
- Italic when paused.
|
||||||
|
- Left click opens player.
|
||||||
|
- Middle click pauses.
|
||||||
|
- Scroll changes tracks.:" ;;
|
||||||
|
4) prev ;;
|
||||||
|
5) next ;;
|
||||||
|
6) status && setsid $TERMINAL -e $EDITOR $0 &;;
|
||||||
|
*) status ;;
|
||||||
|
esac; exit
|
@ -0,0 +1,18 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
filter() {
|
||||||
|
sed "/^volume:/d" | tac | sed -e "s/\\&/&/g;s/\\[paused\\].*/<span color=\"gray\" font_style=\"italic\">/g;s/\\[playing\\].*/<span>/g" | tr -d '\n' | sed -e "s/$/<\\/span>\n/g"
|
||||||
|
}
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) mpc status | filter && setsid "$TERMINAL" -e ncmpcpp & ;; # right click, pause/unpause
|
||||||
|
2) mpc toggle | filter ;; # right click, pause/unpause
|
||||||
|
3) mpc status | filter && notify-send "🎵 Music module" "\- Shows mpd song playing.
|
||||||
|
- Italic when paused.
|
||||||
|
- Left click opens ncmpcpp.
|
||||||
|
- Middle click pauses.
|
||||||
|
- Scroll changes track.";; # right click, pause/unpause
|
||||||
|
4) mpc prev | filter ;; # scroll up, previous
|
||||||
|
5) mpc next | filter ;; # scroll down, next
|
||||||
|
*) mpc status | filter ;;
|
||||||
|
esac; exit
|
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Displays number of unread news items and an loading icon if updating.
|
||||||
|
# When clicked, bring up `newsboat`
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid "$TERMINAL" -e newsboat ;;
|
||||||
|
2) setsid -f newsup >/dev/null exit ;;
|
||||||
|
3) notify-send "📰 News module" "\- Shows unread news items
|
||||||
|
- Shows 🔃 if updating with \`newsup\`
|
||||||
|
- Left click opens newsboat
|
||||||
|
- Middle click syncs RSS feeds
|
||||||
|
<b>Note:</b> Only one instance of newsboat (including updates) may be running at a time." ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
cat /tmp/newsupdate 2>/dev/null || echo "$(newsboat -x print-unread | awk '{ if($1>0) print "📰" $1}')$(cat "${XDG_CONFIG_HOME:-$HOME/.config}"/newsboat/.update 2>/dev/null)"
|
@ -0,0 +1,29 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Display number of upgradebles packages.
|
||||||
|
# For this to work, have a `pacman -Sy` command run in the background as a
|
||||||
|
# cronjob every so often as root. This sctipt will then read those packages.
|
||||||
|
# When clicked, it will run an upgrade via pacman.
|
||||||
|
#
|
||||||
|
# Add the following text as a file in /usr/share/libalpm/hooks/statusbar.hook:
|
||||||
|
#
|
||||||
|
# [Trigger]
|
||||||
|
# Operation = Upgrade
|
||||||
|
# Type = Package
|
||||||
|
# Target = *
|
||||||
|
#
|
||||||
|
# [Action]
|
||||||
|
# Description = Updating statusbar...
|
||||||
|
# When = PostTransaction
|
||||||
|
# Exec = /usr/bin/pkill -RTMIN+8 dwmblocks # Or i3blocks if using i3.
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid -f "$TERMINAL" -e popupgrade ;;
|
||||||
|
2) notify-send "$(/usr/bin/pacman -Qu)" ;;
|
||||||
|
3) notify-send "🎁 Upgrade module" "📦: number of upgradable packages
|
||||||
|
- Left click to upgrade packages
|
||||||
|
- Middle click to show upgradable packages" ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
pacman -Qu | grep -Fcv "[ignored]" | sed "s/^/📦/;s/^📦0$//g"
|
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid "$TERMINAL" -e gotop ;;
|
||||||
|
3) notify-send "📰 Temperature module" "\- Shows Cpu temps items
|
||||||
|
- Left click opens gotop" ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
info=$(sensors)
|
||||||
|
temps=$(echo "$info" | grep "°C" | sed -r 's/^.*\+([0-9]+)\.[0-9]°C.*\(.*\).*$/\1/g')
|
||||||
|
fan=$(echo "$info" | grep "RPM" | sed -r 's/^.* ([0-9]+ RPM)/\1/g')
|
||||||
|
|
||||||
|
rec="0"
|
||||||
|
temps="$(for temp in $temps; do
|
||||||
|
[ "$temp" -gt "$rec" ] && rec="$temp"
|
||||||
|
echo $rec
|
||||||
|
done | tac | sed 1q)"
|
||||||
|
if [ "$temps" -gt "80" ]; then
|
||||||
|
temps=$(echo "<span foreground=\"#cc241d\">$temps°C</span>")
|
||||||
|
icon=""
|
||||||
|
elif [ "$temps" -gt "50" ];then
|
||||||
|
temps=$(echo "<span foreground=\"#d79921\">$temps°C</span>")
|
||||||
|
icon=""
|
||||||
|
else
|
||||||
|
temps=$(echo "<span foreground=\"#98971a\">$temps°C</span>")
|
||||||
|
icon=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
#echo "$temps"
|
||||||
|
printf "%s %s %s\\n" "$icon" "$temps" "$fan"
|
@ -0,0 +1,28 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid "$TERMINAL" -e gotop &;;
|
||||||
|
3) notify-send "📰 Temperature module" "\- Shows Cpu temps items
|
||||||
|
- Left click opens gotop" ;;
|
||||||
|
6) setsid "$TERMINAL" -e "$EDITOR" "$0" &;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
info=$(sensors)
|
||||||
|
temps=$(echo "$info" | grep "°C" | sed -r 's/^.*\+([0-9]+)\.[0-9]°C.*\(.*\).*$/\1/g')
|
||||||
|
fan=$(echo "$info" | grep "RPM" | sed -r 's/^.* ([0-9]+ RPM)/\1/g')
|
||||||
|
|
||||||
|
rec="0"
|
||||||
|
temps="$(for temp in $temps; do
|
||||||
|
[ "$temp" -gt "$rec" ] && rec="$temp"
|
||||||
|
echo $rec
|
||||||
|
done | tac | sed 1q)"
|
||||||
|
if [ "$temps" -gt "80" ]; then
|
||||||
|
icon=""
|
||||||
|
elif [ "$temps" -gt "50" ];then
|
||||||
|
icon=""
|
||||||
|
else
|
||||||
|
icon=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
#echo "$temps"
|
||||||
|
printf "%s %s %s\\n" "$icon" "$temps" "$fan"
|
@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
english=$(sed -E 's/.*\|.*\|([0-9]{2})\.([0-9]{2})\.([0-9]{4})\|[0-9\|]+/\3\2\1/g' ~/.vokabeln/English.csv | while read line; do [[ $line -le $(date +%Y%m%d) ]] && echo $line; done | wc -l | sed -E 's/^([1-9][0-9]*)$/🇺🇸:\1/g;s/^0$//g')
|
||||||
|
|
||||||
|
franz=$(sed -E 's/.*\|.*\|([0-9]{2})\.([0-9]{2})\.([0-9]{4})\|[0-9\|]+/\3\2\1/g' ~/.vokabeln/Französisch.csv | while read line; do [[ $line -le $(date +%Y%m%d) ]] && echo $line; done | wc -l | sed -E 's/^([1-9][0-9]*)$/🇫🇷:\1/g;s/^0$//g')
|
||||||
|
|
||||||
|
echo $english $franz
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) ($TERMINAL -e vokabeln.py && (pkill -RTMIN+20 "${STATUSBAR:-blocks}" >/dev/null 2>&1 ) 2>/dev/null ) & ;;
|
||||||
|
3) notify-send "Vocablurary module" "\- Left click to open vokabeln.py in a terminal" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
|
@ -0,0 +1,40 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Prints the current volume or 🔇 if muted. Uses PulseAudio by default,
|
||||||
|
# uncomment the ALSA lines if you remove PulseAudio.
|
||||||
|
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
#1) setsid "$TERMINAL" -e alsamixer & ;;
|
||||||
|
#2) amixer sset Master toggle ;;
|
||||||
|
#4) amixer sset Master 5%+ >/dev/null 2>/dev/null ;;
|
||||||
|
#5) amixer sset Master 5%- >/dev/null 2>/dev/null ;;
|
||||||
|
1) setsid "$TERMINAL" -e pulsemixer & ;;
|
||||||
|
2) pamixer -t ;;
|
||||||
|
4) pamixer --allow-boost -i 1 ;;
|
||||||
|
5) pamixer --allow-boost -d 1 ;;
|
||||||
|
6) setsid "$TERMINAL" -e $EDITOR "$0" & ;;
|
||||||
|
3) notify-send "📢 Volume module" "\- Shows volume 🔊, 🔇 if muted.
|
||||||
|
- Middle click to mute.
|
||||||
|
- Scroll to change."
|
||||||
|
esac
|
||||||
|
|
||||||
|
volstat="$(pactl list sinks)"
|
||||||
|
#volstat="$(amixer get Master)" # ALSA only equivalent.
|
||||||
|
|
||||||
|
#volstat="$(echo "$volstat" | tail -n +$(echo "$volstat" | grep -n "#$(pactl list short sinks | grep "RUNNING" | awk '{print $1}')" | sed 's/:.*$//g'))"
|
||||||
|
|
||||||
|
echo "$volstat" | grep -q "Stumm: ja" && printf "🔇\\n" && exit
|
||||||
|
#echo "$volstat" | grep "\[off\]" >/dev/null && printf "🔇\\n" && exit # ALSA
|
||||||
|
|
||||||
|
vol="$(echo "$volstat" | grep '[0-9]\+%' | sed "s,.* \([0-9]\+\)%.*,\1,;1q")"
|
||||||
|
#vol=$(echo "$volstat" | grep -o "\[[0-9]\+%\]" | sed "s/[^0-9]*//g;1q") # ALSA
|
||||||
|
|
||||||
|
if [ "$vol" -gt "70" ]; then
|
||||||
|
icon="🔊"
|
||||||
|
elif [ "$vol" -lt "30" ]; then
|
||||||
|
icon="🔈"
|
||||||
|
else
|
||||||
|
icon="🔉"
|
||||||
|
fi
|
||||||
|
|
||||||
|
printf "%s %s%%\\n" "$icon" "$vol"
|
@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Displays todays precipication chance (☔) and daily low (❄) and high (🌞).
|
||||||
|
# Usually intended for the statusbar.
|
||||||
|
|
||||||
|
# If we have internet, get a weather report from wttr.in and store it locally.
|
||||||
|
# You could set up a shell alias to view the full file in a pager in the
|
||||||
|
# terminal if desired. This function will only be run once a day when needed.
|
||||||
|
getforecast() { ping -q -c 1 example.org >/dev/null &&
|
||||||
|
curl -sf "wttr.in/Stutensee" > "${XDG_DATA_HOME:-$HOME/.local/share}/weatherreport" || exit 1 ;}
|
||||||
|
|
||||||
|
# Some very particular and terse stream manipulation. We get the maximum
|
||||||
|
# precipication chance and the daily high and low from the downloaded file and
|
||||||
|
# display them with coresponding emojis.
|
||||||
|
showweather() { printf "%s" "$(sed '16q;d' "${XDG_DATA_HOME:-$HOME/.local/share}/weatherreport" |
|
||||||
|
grep -wo "[0-9]*%" | sort -rn | sed "s/^/☔ /g;1q" | tr -d '\n')"
|
||||||
|
sed '13q;d' "${XDG_DATA_HOME:-$HOME/.local/share}/weatherreport" | grep -o "m\\([-+]\\)*[0-9]\\+" | sort -n -t 'm' -k 2n | sed -e 1b -e '$!d' | tr '\n|m' ' ' | awk '{print " ❄️",$1 "°","🌞",$2 "°"}' ;}
|
||||||
|
|
||||||
|
# The BLOCK_BUTTON bloat for clicking in i3.
|
||||||
|
case $BLOCK_BUTTON in
|
||||||
|
1) setsid "$TERMINAL" -e less -Srf "${XDG_DATA_HOME:-$HOME/.local/share}/weatherreport" & ;;
|
||||||
|
2) getforecast && showweather ;;
|
||||||
|
3) notify-send "🌈 Weather module" "\- Left click for full forecast.
|
||||||
|
- Middle click to update forecast.
|
||||||
|
☔: Chance of rain/snow
|
||||||
|
❄️: Daily low
|
||||||
|
🌞: Daily high" ;;
|
||||||
|
6) "$TERMINAL" -e "$EDITOR" "$0" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# The test if our forcecast is updated to the day. If it isn't download a new
|
||||||
|
# weather report from wttr.in with the above function.
|
||||||
|
[ "$(stat -c %y "${XDG_DATA_HOME:-$HOME/.local/share}/weatherreport" 2>/dev/null | cut -d' ' -f1)" = "$(date '+%Y-%m-%d')" ] ||
|
||||||
|
getforecast
|
||||||
|
|
||||||
|
showweather
|
Loading…
Reference in New Issue