diff options
Diffstat (limited to 'dropdown')
| -rwxr-xr-x | dropdown | 67 |
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 + + |
