sway: suspend powerplay mousepad led in sync with mouse
This commit is contained in:
		
							parent
							
								
									49d0cf16e3
								
							
						
					
					
						commit
						324814f7e2
					
				
					 4 changed files with 103 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -128,7 +128,12 @@
 | 
			
		|||
    auto_connect_gamepad = [
 | 
			
		||||
      bluez
 | 
			
		||||
      coreutils
 | 
			
		||||
      gnugrep
 | 
			
		||||
      final.gnugrep
 | 
			
		||||
    ];
 | 
			
		||||
    powerplay-led-idle = [
 | 
			
		||||
      final.bash
 | 
			
		||||
      libinput
 | 
			
		||||
      libratbag
 | 
			
		||||
    ];
 | 
			
		||||
  }
 | 
			
		||||
  // lib.mapAttrs import_script {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										79
									
								
								scripts/powerplay-led-idle
									
										
									
									
									
										Executable file
									
								
							
							
						
						
									
										79
									
								
								scripts/powerplay-led-idle
									
										
									
									
									
										Executable file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,79 @@
 | 
			
		|||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
set -e
 | 
			
		||||
 | 
			
		||||
# Constants
 | 
			
		||||
SECONDS_UNTIL_FADE=$(( 1 * 60))
 | 
			
		||||
SECONDS_UNTIL_OFF=$(( 5 * 60))
 | 
			
		||||
 | 
			
		||||
COLOR_ON=ff0000
 | 
			
		||||
COLOR_FADE=880000
 | 
			
		||||
COLOR_OFF=000000
 | 
			
		||||
 | 
			
		||||
# Logging
 | 
			
		||||
 | 
			
		||||
if [[ "$1" = "debug" ]]; then
 | 
			
		||||
    echo "Running with debugging" >&2
 | 
			
		||||
    DEBUG="true"
 | 
			
		||||
 | 
			
		||||
    SECONDS_UNTIL_FADE=$(( 3 ))
 | 
			
		||||
    SECONDS_UNTIL_OFF=$(( 5 ))
 | 
			
		||||
fi
 | 
			
		||||
 | 
			
		||||
log() {
 | 
			
		||||
    if [[ "$DEBUG" = "true" ]]; then
 | 
			
		||||
        echo "$@" >&2
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Implementation
 | 
			
		||||
 | 
			
		||||
main() {
 | 
			
		||||
    CURRENT_STATE="UNKNOWN"
 | 
			
		||||
    LAST_POINTER_MOTION="$(date +%s)"
 | 
			
		||||
 | 
			
		||||
    if [ "$(ratbagctl list | wc -l)" -ne 1 ]; then
 | 
			
		||||
        echo "Not exactly one device found, exiting..."
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
 | 
			
		||||
    DEVICE="$(ratbagctl list | cut -d: -f1)"
 | 
			
		||||
 | 
			
		||||
    while true; do
 | 
			
		||||
        while read line; do
 | 
			
		||||
            LAST_POINTER_MOTION="$(date +%s)"
 | 
			
		||||
            break
 | 
			
		||||
        done < <(
 | 
			
		||||
            timeout 5s \
 | 
			
		||||
                libinput debug-events \
 | 
			
		||||
                | grep POINTER_MOTION
 | 
			
		||||
        )
 | 
			
		||||
        TIME_SINCE_LAST=$(( "$(date +%s)" - "$LAST_POINTER_MOTION" ))
 | 
			
		||||
        log "Last pointer motion was $TIME_SINCE_LAST seconds ago"
 | 
			
		||||
        if [ "$TIME_SINCE_LAST" -gt "$SECONDS_UNTIL_OFF" ]; then
 | 
			
		||||
            setState OFF "$COLOR_OFF"
 | 
			
		||||
        elif [ "$TIME_SINCE_LAST" -gt "$SECONDS_UNTIL_FADE" ]; then
 | 
			
		||||
            setState FADE "$COLOR_FADE"
 | 
			
		||||
        else
 | 
			
		||||
            setState ON "$COLOR_ON"
 | 
			
		||||
        fi
 | 
			
		||||
    done
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
setState() {
 | 
			
		||||
    STATE="$1"
 | 
			
		||||
    COLOR="$2"
 | 
			
		||||
    MODE="$3"
 | 
			
		||||
 | 
			
		||||
    if [[ "$STATE" = "$CURRENT_STATE" ]]; then
 | 
			
		||||
        log "Already in $STATE state"
 | 
			
		||||
        return
 | 
			
		||||
    fi
 | 
			
		||||
    log "Changing state to $STATE"
 | 
			
		||||
    CURRENT_STATE="$STATE"
 | 
			
		||||
 | 
			
		||||
    ratbagctl "$DEVICE" led 0 set mode on
 | 
			
		||||
    ratbagctl "$DEVICE" led 0 set color "$COLOR"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
main
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue