aboutsummaryrefslogtreecommitdiff
path: root/dropdown
diff options
context:
space:
mode:
authorsrdusr <trevorgray@srdusr.com>2023-03-07 15:08:10 +0200
committersrdusr <trevorgray@srdusr.com>2023-03-07 15:08:10 +0200
commitf40d2cd7a4d0b24956bd8fbfd47c901b99555360 (patch)
treedfdc58b268823a094db534aa523654ca67af2af0 /dropdown
parent4b073028c17697e2254464e2b54678d07489c14e (diff)
downloaddotfiles-f40d2cd7a4d0b24956bd8fbfd47c901b99555360.tar.gz
dotfiles-f40d2cd7a4d0b24956bd8fbfd47c901b99555360.zip
New agnostic dropdown terminal
Diffstat (limited to 'dropdown')
-rwxr-xr-xdropdown67
1 files changed, 67 insertions, 0 deletions
diff --git a/dropdown b/dropdown
new file mode 100755
index 0000000..b124b1a
--- /dev/null
+++ b/dropdown
@@ -0,0 +1,67 @@
+#!/bin/bash
+
+# Created By: srdusr
+# Created On: Tue 07 Mar 2023 15:06:47 PM CAT
+# Project: Agnostic dropdown/scratchpad terminal that works on most window managers
+
+
+# List of supported terminals with dropdown class
+supported_terminals=(
+ "wezterm"
+ "kitty"
+ "alacritty"
+)
+
+# Check if any of the supported terminals with dropdown class are running
+for term in "${supported_terminals[@]}"; do
+ if pgrep -f "$term.*--class dropdown" > /dev/null; then
+ my_term="$term"
+ break
+ fi
+done
+
+# If none of the supported terminals are running, start the first available one
+if [ -z "$my_term" ]; then
+ for term in "${supported_terminals[@]}"; do
+ if command -v "$term" > /dev/null 2>&1; then
+ my_term="$term"
+ break
+ fi
+ done
+ if [ -z "$my_term" ]; then
+ echo "No supported terminal found."
+ exit 1
+ fi
+
+ # Start the terminal with dropdown class
+ case "$my_term" in
+ "wezterm")
+ wezterm start --class dropdown -e tmux new-session -A -s dropdown -e bash > /dev/null 2>&1 &
+ ;;
+ "kitty")
+ kitty --class dropdown tmux new-session -A -s dropdown -e bash > /dev/null 2>&1 &
+ ;;
+ "alacritty")
+ alacritty --class dropdown -e tmux new-session -A -s dropdown -e bash > /dev/null 2>&1 &
+ ;;
+ esac
+fi
+
+# Get the window ID of the dropdown terminal
+id="$(xdo id -N dropdown)"
+
+# Toggle the visibility of the dropdown terminal
+if [ -n "$id" ]; then
+ if xwininfo -id "$id" | grep "Map State: IsViewable" > /dev/null; then
+ # The dropdown window is visible, so hide it
+ dimensions="$(xwininfo -id "$id" | awk '/Width:|Height:/ { printf("%s=%s;", tolower($1), $2) }')"
+ xdo hide "$id"
+ else
+ # The dropdown window is hidden, so show it
+ xdo show "$id"
+ # Restore the dimensions of the window
+ xdotool windowsize "$id" "$(echo "$dimensions" | tr ';' ' ')"
+ fi
+fi
+
+