aboutsummaryrefslogtreecommitdiff
path: root/.local/bin/dropdown-terminal
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/dropdown-terminal')
-rwxr-xr-x.local/bin/dropdown-terminal22
1 files changed, 22 insertions, 0 deletions
diff --git a/.local/bin/dropdown-terminal b/.local/bin/dropdown-terminal
new file mode 100755
index 0000000..a41ad46
--- /dev/null
+++ b/.local/bin/dropdown-terminal
@@ -0,0 +1,22 @@
+#!/bin/sh -eu
+name=dropdown-terminal
+state=/tmp/"$name"_lQ5GnvRpQ6
+terminal="urxvt -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;