59 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			59 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
| { pkgs, ... }:
 | |
| let
 | |
|   xpub = pkgs.fetchurl {
 | |
|     url =
 | |
|       "https://raw.githubusercontent.com/Ventto/xpub/f2eadaaf9c8539abbd46b23c0b2f6d93d2ebd658/src/xpub.sh";
 | |
|     sha256 = "sha256-88t9lr6DxrWrg6E4YsWGzYV9/GbRgwLafAklXHObqsI=";
 | |
|     executable = true;
 | |
|   };
 | |
| in pkgs.writeShellScriptBin "battery-notify" ''
 | |
|   #!${pkgs.bash}/bin/bash
 | |
| 
 | |
|   # ''${DISPLAY:=":0"}
 | |
|   #: $\{XUSER:=":james"\}
 | |
| 
 | |
|   touch /tmp/battery-notify
 | |
|   echo "display:$DISPLAY" >> /tmp/battery-notify
 | |
|   echo "tty:$TTY" >> /tmp/battery-notify
 | |
|   echo "XUSER:$XUSER" >> /tmp/battery-notify
 | |
|   echo "DBUS_SESSION_BUS_ADDRESS:$DBUS_SESSION_BUS_ADDRESS" >> /tmp/battery-notify
 | |
| 
 | |
|   export $(${xpub}) ;
 | |
|   function last_chance {
 | |
|       if [ -f /tmp/last_chance ] ; then
 | |
|           echo "There already exist another processing doing this. Aborting."
 | |
|           exit
 | |
|       else
 | |
|           ${pkgs.coreutils}/bin/touch /tmp/last_chance
 | |
|       fi
 | |
| 
 | |
|       countdown=30
 | |
|       while [[ $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/AC/online) -eq 0 ]] ; do
 | |
|           if [[ countdown -gt 0 ]] ; then
 | |
|               ${pkgs.libnotify}/bin/notify-send -h string:x-canonical-private-synchronous:battery -u critical " Critical Battery - Suspension imminent." "You have $countdown seconds." ; sleep 1
 | |
|               let "countdown=countdown-1"
 | |
|           else
 | |
|               ${pkgs.libnotify}/bin/notify-send -h string:x-canonical-private-synchronous:battery -u low " Critical Battery" "PlaceHolder"
 | |
|               break;
 | |
|           fi
 | |
|       done
 | |
| 
 | |
|       ${pkgs.coreutils}/bin/rm /tmp/last_chance
 | |
|   }
 | |
| 
 | |
|   case $1 in
 | |
|       charging)
 | |
|           ${pkgs.libnotify}/bin/notify-send -h string:x-canonical-private-synchronous:battery -u low " Power Connected" "Battery at $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/BAT0/capacity)%";;
 | |
|       discharging)
 | |
|           ${pkgs.libnotify}/bin/notify-send -h string:x-canonical-private-synchronous:battery -u low " Power Disconnected" "Battery at $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/BAT0/capacity)%";;
 | |
|       warn)
 | |
|           ${pkgs.libnotify}/bin/notify-send -h string:x-canonical-private-synchronous:battery -u normal " Discharging" "Battery at $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/BAT0/capacity)%";;
 | |
|       danger)
 | |
|           ${pkgs.libnotify}/bin/notify-send -h string:x-canonical-private-synchronous:battery -u critical " Low Battery" "Battery at $(${pkgs.coreutils}/bin/cat /sys/class/power_supply/BAT0/capacity)%. Will suspend soon.";;
 | |
|       ohfuck)
 | |
|           last_chance ;;
 | |
|       *)
 | |
|             echo "invalid command" ;;
 | |
|   esac
 | |
| ''
 | 
