aboutsummaryrefslogtreecommitdiff
path: root/.local/bin/scripts/scratchpad
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/scripts/scratchpad')
-rwxr-xr-x.local/bin/scripts/scratchpad88
1 files changed, 42 insertions, 46 deletions
diff --git a/.local/bin/scripts/scratchpad b/.local/bin/scripts/scratchpad
index 1b3dfeb..8a1aea0 100755
--- a/.local/bin/scripts/scratchpad
+++ b/.local/bin/scripts/scratchpad
@@ -4,65 +4,61 @@
# Created On: Tue 07 Mar 2023 15:06:47 PM CAT
# Project: Agnostic scratchpad/dropdown terminal that works on most window managers
-# Set the GDK_BACKEND and QT_QPA_PLATFORM environment variables to x11 to allow working in Wayland
+# Dependencies: wmctrl, xprop, xdo, xdotool
+# NOTE: Ensure script is included in system's path and can therefore be invoked with the command 'scratchpad'.
+# Furthermore make sure the terminal is using x11 as a backend in wayland to allow this to work.
+# Example: wezterm.lua: enable_wayland = false,
+# kitty.conf: linux_display_server x11
+
+# Set the environment variables to x11 to allow working in Wayland
export GDK_BACKEND=x11
export QT_QPA_PLATFORM=xcb
+export WAYLAND_DISPLAY=""
+export WINIT_UNIX_BACKEND=x11
-# List of supported terminals with dropdown class
-supported_terminals=(
- "wezterm"
- "kitty"
- "alacritty"
-)
+# Supported terminals and dropdown class
+supported_terminals=("wezterm" "kitty" "alacritty")
-# Check if any of the supported terminals with scratchpad class are running
+# Check if any supported terminal with scratchpad class is running
for term in "${supported_terminals[@]}"; do
- if pgrep -f "$term.*--class scratchpad" >/dev/null; then
- my_term="$term"
- break
- fi
+ if pgrep -f "$term.*--class scratchpad" >/dev/null; then
+ my_term="$term"
+ break
+ fi
done
-# If none of the supported terminals are running, start the first available one
+# If no supported terminal is running, start the first available one
if [ "$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 [ "$my_term" = "" ]; then
- echo "No supported terminal found."
- exit 1
- fi
+ for term in "${supported_terminals[@]}"; do
+ if command -v "$term" >/dev/null 2>&1; then
+ my_term="$term"
+ break
+ fi
+ done
+ if [ "$my_term" = "" ]; then
+ echo "No supported terminal found." && exit 1
+ fi
- # Start the terminal with scratchpad class
- case "$my_term" in
- "wezterm")
- wezterm start --class scratchpad -e tmux new-session -A -s tmux -e bash >/dev/null 2>&1 &
- ;;
- "kitty")
- kitty --class scratchpad tmux new-session -A -s tmux -e bash >/dev/null 2>&1 &
- ;;
- "alacritty")
- alacritty --class scratchpad -e tmux new-session -A -s tmux -e bash >/dev/null 2>&1 &
- ;;
- esac
+ # Start terminal with scratchpad class
+ case "$my_term" in
+ "wezterm") wezterm start --class scratchpad -e tmux new-session -A -s tmux -e bash & ;;
+ "kitty") kitty --class scratchpad tmux new-session -A -s tmux -e bash & ;;
+ "alacritty") alacritty --class scratchpad -e tmux new-session -A -s tmux -e bash & ;;
+ esac
fi
# Get the window ID of the scratchpad terminal
id="$(xdo id -N scratchpad)"
-# Toggle the visibility of the scratchpad terminal
+# Toggle scratchpad terminal visibility
if [ "$id" != "" ]; then
- if xwininfo -id "$id" | grep "Map State: IsViewable" >/dev/null; then
- # The scratchpad window is visible, so hide it
- dimensions="$(xwininfo -id "$id" | awk '/Width:|Height:/ { printf("%s=%s;", tolower($1), $2) }')"
- xdo hide "$id" 2>/dev/null
- else
- # The scratchpad window is hidden, so show it
- xdo show "$id"
- # Restore the dimensions of the window
- xdotool windowsize "$id" "$(echo "$dimensions" | tr ';' ' ')" 2>/dev/null
- fi
+ if xwininfo -id "$id" | grep "Map State: IsViewable" >/dev/null; then
+ # Scratchpad is visible, hide it
+ dimensions="$(xwininfo -id "$id" | awk '/Width:|Height:/ { printf("%s=%s;", tolower($1), $2) }')"
+ xdo hide "$id" 2>/dev/null
+ else
+ # Scratchpad is hidden, show it and restore dimensions
+ xdo show "$id"
+ xdotool windowsize "$id" "$(echo "$dimensions" | tr ';' ' ')" 2>/dev/null
+ fi
fi