Last active
November 3, 2021 15:20
-
-
Save zumikkebe/371c1f30b0139f61831b283d17e4e1a6 to your computer and use it in GitHub Desktop.
quaketerm.sh. emulates guess what, depends on my winpwnr.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#! /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