27 lines
		
	
	
		
			835 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
			
		
		
	
	
			27 lines
		
	
	
		
			835 B
		
	
	
	
		
			Bash
		
	
	
		
			Executable file
		
	
	
	
	
| #!/usr/bin/env bash
 | |
| 
 | |
| # Toggle a scratch terminal window. A scratch terminal is a disposable terminal
 | |
| # for one-off, quick commands that don't warrant a dedicated terminal.
 | |
| 
 | |
| SCRID=scratch
 | |
| CMD=${1:-'tmux new-session -A -s scratch -n scratch'}
 | |
| focused=$(xdotool getactivewindow)
 | |
| scratch=$(xdotool search --onlyvisible --classname $SCRID)
 | |
| if [[ -n $scratch ]]; then
 | |
|     if [[ $focused == $scratch ]]; then
 | |
|         xdotool windowkill $scratch
 | |
|     else
 | |
|         xdotool windowactivate $scratch
 | |
|     fi
 | |
| elif command -v urxvt >/dev/null; then
 | |
|     urxvt -name $SCRID \
 | |
|           -e $SHELL -c "$CMD"
 | |
| elif command -v xst >/dev/null; then
 | |
|     xst -t $SCRID -n $SCRID -c $SCRID \
 | |
|         -f "$(xrdb -query | grep 'scratch\.font' | cut -f2)" \
 | |
|         -e $SHELL -c "$CMD"
 | |
| else
 | |
|     >&2 echo "No shell to launch the scratch terminal with"
 | |
|     exit 1
 | |
| fi
 |