diff options
| author | srdusr <trevorgray@srdusr.com> | 2023-03-07 15:08:10 +0200 |
|---|---|---|
| committer | srdusr <trevorgray@srdusr.com> | 2023-03-07 15:08:10 +0200 |
| commit | f40d2cd7a4d0b24956bd8fbfd47c901b99555360 (patch) | |
| tree | dfdc58b268823a094db534aa523654ca67af2af0 /dropdown | |
| parent | 4b073028c17697e2254464e2b54678d07489c14e (diff) | |
| download | dotfiles-f40d2cd7a4d0b24956bd8fbfd47c901b99555360.tar.gz dotfiles-f40d2cd7a4d0b24956bd8fbfd47c901b99555360.zip | |
New agnostic dropdown terminal
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 + + |
