Skip to content

Instantly share code, notes, and snippets.

@zumikkebe
Last active November 3, 2021 15:20
Show Gist options
  • Save zumikkebe/371c1f30b0139f61831b283d17e4e1a6 to your computer and use it in GitHub Desktop.
Save zumikkebe/371c1f30b0139f61831b283d17e4e1a6 to your computer and use it in GitHub Desktop.
quaketerm.sh. emulates guess what, depends on my winpwnr.sh
#! /bin/sh
### the unique window title prefix for our terminal session
terminalKeyword="QuakeTerm"
### optionally set the location of a custom terminal profile to be used
### it must contain whatever is used as the terminalKeyword at the beginning of the "Window title"
### for example: "Window title" , "QuakeTerm %i: %t"
# terminalProfile="/boot/home/config/non-packaged/apps/MyCustomTerminal"
### watch and minimize the window even if it was activated by Deskbar/twitcher/....
### otherwise only auto-hide if it's been activated by this script
### comment out the line to disable
continuousWatch=1
### how frequently should we check the status of the window
### lower numbers give faster response and can be decimal numbers like 0.5,1.5,2.2,...
watcherSleepTime=1
move_by=$(hey Tracker get Frame of Window 0 | awk '/result/{sub(/...$/,"");print ($7+1)/2-10}')
### function to find the process ID of our custom terminal session
function findTerminalSession() {
QTERMPID=-99
for i in `roster | fgrep /apps/Terminal | awk '{ print $1 }'`;do
title=`hey -o $i get Title of Window 0 | grep "^${terminalKeyword}"`
if [ -n "${title}" ];then
QTERMPID=$i
break
fi
done
}
### initial check to see if we're already running
findTerminalSession
if [ ${QTERMPID} -lt 0 ];then
### no existing terminal session, start a new one
if [ -n "${terminalProfile}" ];then
open "${terminalProfile}"
else
/boot/system/apps/Terminal -t "${terminalKeyword}" &
fi
### loop a few times to give the terminal process time to start before giving up
for i in {1..6};do
findTerminalSession
if [ ${QTERMPID} -gt 0 ];then
break;
elif [ ${i} -eq 6 ];then
### last time through the loop and we haven't found our terminal
alert --stop "Error finding custom Terminal process"
exit 1
else
sleep 1
fi
done
### disable the fullscreen button in the tabbar
hey ${QTERMPID} set Enabled of View 1 of View 1 of Window 0 to false
### resize and then hide the menubar
### extract our current BRect(left,top,right,bottom) frame and replace the fourth number with 0.0
menuFrame=`hey ${QTERMPID} get Frame of View 0 of Window 0 | grep -o 'BRect(.*)$' | sed 's/[0-9]\+.[0-9]\+/0.0/4'`
hey ${QTERMPID} set Frame of View 0 of Window 0 to "${menuFrame}"
hey ${QTERMPID} set Hidden of View 0 of Window 0 to true
### resize the tabview to take up the empty menubar space
### extract our current BRect(left,top,right,bottom) frame and replace the second number with 0.0
tabFrame=`hey ${QTERMPID} get Frame of View 1 of Window 0 | grep -o 'BRect(.*)$' | sed 's/[0-9]\+.[0-9]\+/0.0/2'`
hey ${QTERMPID} set Frame of View 1 of Window 0 to "${tabFrame}"
# shows Terminal on all workspaces, w/o tab only borders, not resizable, movable, minimizable or zoomable, shown in the upper half of the screen not overlapping the Deskbar
winpwnr.sh -a Terminal -s ${terminalKeyword} -d -H 8 -w all -G nm,nr,nb,nz -L b
startWatcher=1
fi
if [ -n "${startWatcher}" ];then
was_active="true"
while true;do
### check to see if our window is inactive but still showing
active=`hey -o ${QTERMPID} get Active of Window 0`
if [ "${active}" == "false" ] && [ "${was_active}" == "true" ]
then
# when the window is not active it will be moved upward showing a small clickable area of 10x10
winpwnr.sh -a Terminal -s ${terminalKeyword} -p 0,-${move_by}
was_active="false"
[ -z "${continuousWatch}" ] && exit
else
if [ "${active}" == "true" ] && [ "${was_active}" == "false" ]
then
# when the window is active again will be moved downward
winpwnr.sh -a Terminal -s ${terminalKeyword} -p 0,${move_by}
was_active="true"
fi
[ -z "${active}" ] && exit
sleep ${watcherSleepTime}
fi
done
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment