41 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| # Script to toggle Do not disturb mode for dunst
 | |
| 
 | |
| STOPPED_MSG='Tailscale is stopped'
 | |
| 
 | |
| # Check if tailscale is installed
 | |
| if [ ! "$( command -v tailscale )" ]; then
 | |
|     echo 'Tailscale is not installed!'
 | |
|     exit 1
 | |
| fi
 | |
| 
 | |
| # Get current state
 | |
| status="$( tailscale status )"
 | |
| current_state="$( grep -o "${STOPPED_MSG}" <<< "${status}" )"
 | |
| 
 | |
| while getopts ":g" option; do
 | |
|     case "${option}" in
 | |
|         g)
 | |
|             if [ "${current_state}" == "${STOPPED_MSG}" ]; then
 | |
|                 state='disconnected'
 | |
|                 tooltip='Connect tailnet'
 | |
|             else
 | |
|                 state='connected'
 | |
|                 tooltip="${status:='Disconnect tailnet'}"
 | |
|             fi
 | |
| 
 | |
|             printf '{"alt": "%s", "tooltip": "%q", "class": "%s" }' \
 | |
|                 "${state}" "${tooltip}" "${state}"
 | |
|             exit 0
 | |
|             ;;
 | |
|     esac
 | |
| done
 | |
| 
 | |
| # Toggle
 | |
| if [ "${current_state}" == "${STOPPED_MSG}" ] ; then
 | |
|     notify-send 'Connecting tailnet'
 | |
|     notify-send 'Connected tailnet' "$( tailscale up )"
 | |
| else
 | |
|     notify-send 'Disconnecting tailnet'
 | |
|     notify-send 'Disconnected tailnet' "$( tailscale down )"
 | |
| fi
 |