53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/bin/sh
 | |
| 
 | |
| # read resolution from xrandr: "1920x1080     60.03*+"
 | |
| RES=$(xrandr | grep "*+" | awk '{print $1}' | head -1)
 | |
| 
 | |
| # parse xrandr output
 | |
| RESH=${RES%x*}
 | |
| RESV=${RES#*x}
 | |
| 
 | |
| # calculate pixel gap that should surround the window
 | |
| GAP=$(( RESH / 12 ))
 | |
| 
 | |
| # Calculate the horzontal/vertical dimensions of the window
 | |
| H=$(( RESH - 2 * GAP ))
 | |
| V=$(( RESV - 2 * GAP ))
 | |
| 
 | |
| # set the quirk in .config/spectrwm/spectrwm.conf
 | |
| # quirk[scratchpad] = FLOAT + ANYWHERE + FOCUSPREV
 | |
| 
 | |
| # get scratchpad window id
 | |
| WID=$(wmctrl -x -l scratchpad | fgrep '.scratchpad' | cut -d" " -f1)
 | |
| 
 | |
| if [ -z "$WID" ]
 | |
| then
 | |
|     # start terminal (sterm is st.suckless.org)
 | |
|     sterm -c scratchpad -g 159x42+$GAP+$GAP &
 | |
|     # XXX we cannot resize with wmctrl here, because the window is not
 | |
|     # mapped yet. Adding a sleep here and resize then is visually
 | |
|     # unpleasant. Therefore st is started with hardcoded dimensions
 | |
|     # and resized when hidden.
 | |
| else
 | |
|     # check if window is iconified or on another WS (or both)
 | |
|     if xwininfo -id $WID | fgrep -q IsUnMapped
 | |
|     then
 | |
|         # move window to current workspace
 | |
|         [ -z $_SWM_WS ] \
 | |
|             && wmctrl -i -r $WID -t $(xprop -root _NET_CURRENT_DESKTOP | cut -d'=' -f2) \
 | |
|             || wmctrl -i -r $WID -t $_SWM_WS
 | |
|         # remove hidden flag
 | |
|         wmctrl -i -r $WID -b remove,hidden
 | |
|         # activate (give focus)
 | |
|         wmctrl -i -a $WID
 | |
|     else
 | |
|         # window is visible => hide
 | |
|         wmctrl -i -r $WID -b add,hidden
 | |
|         # correct size while hidden
 | |
|         wmctrl -i -r $WID -e 0,$GAP,$GAP,$H,$V
 | |
|         # move it beyond the WS limit to completely hide it from the bar
 | |
|         # XXX could also be skip_pager / skip_taskbar?
 | |
|         wmctrl -i -r $WID -t 11
 | |
|     fi
 | |
| fi
 | 
