30 lines
		
	
	
		
			729 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			729 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| function get_time_ms {
 | |
|   date -u +%s%3N
 | |
| }
 | |
| 
 | |
| icons=("" "" "")
 | |
| 
 | |
| gen_output() {
 | |
|   icon="${icons[$(awk -v n="$(brillo)" 'BEGIN{print int(n/34)}')]}"
 | |
|   prcnt=$(brillo | xargs printf "%.*f\n" "0")
 | |
|   echo '{"percent": '$prcnt', "icon": "'$icon'"}'
 | |
| }
 | |
| 
 | |
| if [[ $(brillo 2>/dev/stdout 1>/dev/null | head -n1 | awk '{print $1}') == "No" ]]; then
 | |
|   echo  '{"percent":  100, "icon": ""}'
 | |
| elif [ "$1" = "" ]; then
 | |
|   # initial
 | |
|   last_time=$(get_time_ms)
 | |
|   gen_output
 | |
| 
 | |
|   udevadm monitor | rg --line-buffered "backlight" | while read -r _; do
 | |
|     current_time=$(get_time_ms)
 | |
|     delta=$((current_time - last_time))
 | |
|     if [[ $delta -gt 50 ]]; then
 | |
|       gen_output
 | |
|       last_time=$(get_time_ms)
 | |
|     fi
 | |
|   done
 | |
| fi |