aboutsummaryrefslogtreecommitdiff
path: root/unix/utils/scratchpad
diff options
context:
space:
mode:
Diffstat (limited to 'unix/utils/scratchpad')
-rwxr-xr-xunix/utils/scratchpad147
1 files changed, 0 insertions, 147 deletions
diff --git a/unix/utils/scratchpad b/unix/utils/scratchpad
deleted file mode 100755
index d47dafe..0000000
--- a/unix/utils/scratchpad
+++ /dev/null
@@ -1,147 +0,0 @@
-#!/bin/bash
-
-# Created By: srdusr
-# Created On: Tue 07 Mar 2023 15:06:47 PM CAT
-# Project: Agnostic scratchpad/dropdown terminal that works on most window managers
-
-# 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
-#export WAYLAND_DISPLAY=wayland-0
-
-# Supported terminals and dropdown class
-supported_terminals=("wezterm" "kitty" "alacritty")
-
-# 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
-done
-
-# 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
-
- # 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)"
-# Get the ID of the currently focused window
-focused_id="$(xdotool getwindowfocus)"
-
-# Get class of the currently focused window
-focused_class="$(xprop -id "$focused_id" WM_CLASS 2>/dev/null | awk -F '"' '{print $4}')"
-
-# Toggle visible/hide and smart focus
-if [ "$id" != "" ]; then
- if xwininfo -id "$id" | grep "Map State: IsViewable" >/dev/null; then
- if [ "$focused_id" = "$id" ] || [ "$focused_class" = "scratchpad" ]; then
- # Scratchpad is focused, hide it
- dimensions="$(xwininfo -id "$id" | awk '/Width:|Height:/ { printf("%s=%s;", tolower($1), $2) }')"
- xdo hide "$id" 2>/dev/null
- else
- # Scratchpad is visible but not focused
- xdotool windowactivate "$id"
- xdotool windowfocus "$id"
- hyprctl dispatch focuswindow scratchpad
- fi
- else
- # Scratchpad is hidden, show and focus it
- xdo show "$id"
- xdotool windowsize "$id" "$(echo "$dimensions" | tr ';' ' ')" 2>/dev/null
- xdotool windowactivate "$id"
- xdotool windowfocus "$id"
- hyprctl dispatch focuswindow scratchpad
- fi
-fi
-
-## Get the window ID of the PiP window by title
-#pip_id="$(xdo id -n "Picture-in-Picture")"
-#
-## Toggle scratchpad terminal visibility
-#if [ "$id" != "" ]; then
-# 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
-# xdotool windowactivate "$id"
-# xdotool windowfocus "$id"
-#
-# # Adjust layer based on PiP window presence
-# if [ "$pip_id" != "" ]; then
-# hyprctl dispatch layer "$id" 1
-# else
-# hyprctl dispatch layer "$id" 0
-# fi
-#
-# hyprctl dispatch focuswindow scratchpad
-# fi
-#fi
-
-## Get the window ID of the scratchpad terminal
-#id=$(hyprctl clients -j | jq -r '.[] | select(.class=="scratchpad").address')
-#
-## Toggle scratchpad terminal visibility
-#if [ -n "$id" ]; then
-# focused=$(hyprctl activewindow -j | jq -r '.address')
-# if [ "$focused" = "$id" ]; then
-# # Scratchpad is focused, minimize it
-# hyprctl dispatch move "address:$id workspace silent 0"
-# else
-# # Show scratchpad, set above normal windows but below PiP
-# hyprctl dispatch movetoworkspace current address:$id
-# hyprctl dispatch focuswindow address:$id
-# hyprctl dispatch layer "address:$id above"
-# hyprctl dispatch focuswindow address:$id
-# fi
-#fi
-
-## Get the window ID of the PiP window by title
-#pip_id=$(hyprctl clients -j | jq -r '.[] | select(.title=="Picture-in-Picture").address')
-#
-## Toggle scratchpad terminal visibility
-#if [ -n "$id" ]; then
-# focused=$(hyprctl activewindow -j | jq -r '.address')
-# if [ "$focused" = "$id" ]; then
-# # Scratchpad is focused, minimize it
-# hyprctl dispatch move "address:$id workspace silent 0"
-# else
-# # Show scratchpad, set above normal windows but below PiP
-# hyprctl dispatch movetoworkspace current address:$id
-# hyprctl dispatch focuswindow address:$id
-# if [ -n "$pip_id" ]; then
-# hyprctl dispatch layer "address:$id below"
-# else
-# hyprctl dispatch layer "address:$id above"
-# fi
-# hyprctl dispatch focuswindow address:$id
-# fi
-#fi