aboutsummaryrefslogtreecommitdiff
path: root/.local/bin/dropdown-terminal
blob: 46f83eab2f98a81d300a3573a9910cbf6b97a40f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#!/bin/sh -eu
name=dropdown-terminal
state=/tmp/"$name"_lQ5GnvRpQ6
terminal="urxvt -pe tabbed -geometry 150x20 -title $name"

[ ! -f $state ] && {
  $terminal && sed --in-place '1s/.*/1/' "$state" &
  touch $state && exit;
}

options=$(grep --count . $state || true)
[ "$options" != "1" ] && { printf '1\n' > $state; }

pid=$(pgrep --full "title $name" | head --lines 1)
[ -z "$pid" ] && rm $state && "$0" && exit;

window=$(wmctrl -lpGx  | awk "/$pid/"'{ print $1 }')
[ -z "$window" ] && rm "$state" && "$0" && exit;

visible=$(awk 'NR==1 { print; exit }' $state)
[ "$visible" = 0 ] && wmctrl -i -u -R "$window"      && wmctrl -i -u -r "$window" -b add,above               && sed --in-place '1s/.*/1/' "$state" && exit;
[ "$visible" = 1 ] && xdotool mousemove_relative 0 1 && wmctrl -i -u -r "$window" -b add,skip_taskbar,hidden && sed --in-place '1s/.*/0/' "$state" && exit;