aboutsummaryrefslogtreecommitdiff
path: root/scripts/menuitems.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/menuitems.sh')
-rwxr-xr-xscripts/menuitems.sh85
1 files changed, 85 insertions, 0 deletions
diff --git a/scripts/menuitems.sh b/scripts/menuitems.sh
new file mode 100755
index 0000000..92e24d4
--- /dev/null
+++ b/scripts/menuitems.sh
@@ -0,0 +1,85 @@
+#!/usr/bin/env bash
+
+volume_component() { amixer get Master | awk -F'[][]' '/dB/ {print $C}' C="$1"; }
+mic_component() { amixer get Capture | awk -F'[][]' '/dB/ {print $C}' C="$1" | head -n 1; }
+
+playerctl_icon() {
+ local playstate="$(~/scripts/music/player.sh get_play_state)";
+ case "$playstate" in
+ Paused) echo "" ;;
+ Playing) echo "" ;;
+ Stopped) echo "" ;;
+ *) ;;
+ esac
+}
+
+network_state() {
+ local state=$(nmcli dev show wlp5s0);
+ local ssid=$(echo -e "$state" | grep '^GENERAL.CONNECTION:' | sed 's/^GENERAL.CONNECTION:\s*//g');
+
+ [[ "$ssid" == "--" ]] && ssid="";
+
+ echo "$([[ -z "$ssid" ]] && echo "offline" || echo "online") ${ssid:0:12}...";
+}
+
+volume_icon() { volume_component 6 | sed 's/on//; s/off/🔇/'; }
+mic_icon() { mic_component 6 | sed 's/on//; s/off/✖/'; }
+
+icon() {
+ case "$1" in
+ date) echo "" ;;
+ battery) echo "" ;;
+ music) playerctl_icon ;;
+ volume) echo -n "[$(mic_icon)] $(volume_icon)" ;;
+ brightness) echo "" ;;
+ network) network_state | sed 's/online//; s/idle//; s/offline/❌/' ;;
+ *) ;;
+ esac
+}
+
+date_module() {
+ echo "$(icon date) $(date +"%A, %e %b - %I:%M %p")";
+}
+
+battery_module() {
+ local capacity=$(cat "/sys/class/power_supply/BAT0/capacity");
+ echo "$(icon battery) $capacity%";
+}
+
+music_module() {
+ local label=$(~/scripts/music/player.sh get_label);
+ echo "$(icon music) $label";
+}
+
+brightness_module() {
+ echo "$(icon brightness) $(printf "%.0f%s" "$(xbacklight -get)" "%")"
+}
+
+volume_module() {
+ echo "$(icon volume) $(volume_component 2)";
+}
+
+keymode_module() {
+ echo "$(~/scripts/shotkey.sh mode)";
+}
+
+network_module() {
+ echo "$(icon network)";
+}
+
+
+get_module() {
+ case "$1" in
+ date) date_module ;;
+ battery) battery_module ;;
+ volume) volume_module ;;
+ music) music_module ;;
+ brightness) brightness_module ;;
+ keymode) keymode_module ;;
+ network) network_module ;;
+ esac;
+}
+
+padding=" ";
+
+echo "$padding$(get_module $1)$padding";