#!/usr/bin/env bash icons=("" "" "") XDG_CACHE_HOME="$HOME/.cache" date="$XDG_CACHE_HOME/eww/osd_brightness.date" lock=0 showhide() { # get dates rundate=$(cat "$date") currentdate=$(date +%s) # handle showing if [ "$rundate" = "$currentdate" ] && [ "$lock" -eq 0 ]; then eww open osd eww update osd_bright=true lock=1 elif [ "$((currentdate - rundate))" = "2" ] && [ "$lock" -eq 1 ]; then eww update osd_bright=false if [ "$(eww get osd_vol)" = "false" ] && [ "$(eww get osd_bright)" = "false" ]; then dummy=$(eww close osd) fi lock=0 fi } osd() { if [ ! -f "$date" ]; then mkdir -p "$XDG_CACHE_HOME/eww" fi date +%s > "$date" # showhide } osd_handler() { lock=0 rundate=0 if [ ! -f "$date" ]; then mkdir -p "$XDG_CACHE_HOME/eww" echo 0 > "$date" fi while true; do showhide sleep 0.1 done dummy=$(eww close osd) } if [ "$1" = "osd" ]; then osd else # initial icon=${icons[$(awk -v n="$(light)" 'BEGIN{print int(n/34)}')]} echo '{ "level": '"$(light)"', "icon": "'"$icon"'" }' osd_handler & udevadm monitor | rg --line-buffered "backlight" | while read -r _; do icon="${icons[$(awk -v n="$(light)" 'BEGIN{print int(n/34)}')]}" echo '{ "level": '"$(light)"', "icon": "'"$icon"'" }' done fi