Oh, and finally pushed the ai.py script I have been using for some time without pushing. I guess several months of testing should be fine. lol
53 lines
1.9 KiB
Bash
Executable File
53 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Find out if we're using i3 or sway
|
|
if ! [[ -n "${WAYLAND_DISPLAY}" ]]; then
|
|
cmd="i3-msg"
|
|
scratchConfig="${XDG_CONFIG_HOME:-$HOME/.config}/i3"
|
|
usingWayland=false
|
|
else
|
|
cmd="swaymsg"
|
|
scratchConfig="${XDG_CONFIG_HOME:-$HOME/.config}/sway"
|
|
usingWayland=true
|
|
fi
|
|
scratchConfig+="/scratchpad"
|
|
touch "${scratchConfig}"
|
|
|
|
# Get the class name of the focused window
|
|
if [[ "$usingWayland" == "true" ]]; then
|
|
# Wayland/Sway: use swaymsg to get focused window info
|
|
class=$($cmd -t get_tree | jq -r '.. | select(.focused? == true) | .app_id // .window_properties.class' | head -n 1)
|
|
else
|
|
# X11/i3: use xdotool and xprop
|
|
if ! command -v xdotool &> /dev/null || ! command -v xprop &> /dev/null; then
|
|
notify-send "Error: xdotool and xprop required for i3"
|
|
exit 1
|
|
fi
|
|
windowId=$(xdotool getactivewindow)
|
|
class=$(xprop -id "$windowId" WM_CLASS | awk -F '"' '{print $4}')
|
|
fi
|
|
|
|
if [[ -z "$class" ]]; then
|
|
notify-send "Unable to move to scratchpad."
|
|
exit 1
|
|
fi
|
|
|
|
# Check if it's already in the config
|
|
if [[ "$usingWayland" == "true" ]]; then
|
|
# Sway uses app_id for Wayland-native apps, class for XWayland apps
|
|
if ! grep -q "app_id=\"$class\"" "$scratchConfig" && ! grep -q "class=\"$class\"" "$scratchConfig"; then
|
|
echo "for_window [app_id=\"$class\"] move to scratchpad" >> "$scratchConfig"
|
|
notify-send "Added window app_id $class to scratchpad"
|
|
fi
|
|
# Move the window to scratchpad now (try both app_id and class)
|
|
$cmd "[app_id=\"$class\"] move to scratchpad" 2>/dev/null || $cmd "[class=\"$class\"] move to scratchpad"
|
|
else
|
|
# i3 uses class
|
|
if ! grep -q "class=\"$class\"" "$scratchConfig"; then
|
|
echo "for_window [class=\"$class\"] move to scratchpad" >> "$scratchConfig"
|
|
notify-send "Added window class $class to scratchpad"
|
|
fi
|
|
# Move the window to scratchpad now
|
|
$cmd "[class=\"$class\"] move to scratchpad"
|
|
fi
|