57 lines
1.1 KiB
Bash
Executable File
57 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
echo "-- initiate -- "
|
|
date
|
|
echo ""
|
|
|
|
tui_name=$1
|
|
active_popup=$(hyprctl clients -j | jq -r '.[] | select(.class | startswith("org.hakase.")) | .class')
|
|
|
|
if [[ -z ${tui_name} ]]; then
|
|
echo "Usage: $(basename "$0") [tui-name]"
|
|
exit 1
|
|
fi
|
|
|
|
popup_checker() {
|
|
if [[ -z "$active_popup" ]]; then
|
|
echo "no_popup"
|
|
elif [[ "$active_popup" != "org.hakase.popup.${tui_name}" ]]; then
|
|
echo "different"
|
|
else
|
|
echo "same"
|
|
fi
|
|
}
|
|
|
|
launch() {
|
|
echo "[LOG: $(date)]"
|
|
exec setsid uwsm-app -- xdg-terminal-exec --app-id=org.hakase.popup."${tui_name}" -e "${tui_name}"
|
|
}
|
|
|
|
focus() {
|
|
exec hyprctl dispatch focuswindow "class:org.hakase.popup.${tui_name}"
|
|
}
|
|
|
|
replace() {
|
|
hyprctl dispatch closewindow "class:${active_popup}"
|
|
sleep 1
|
|
launch
|
|
}
|
|
|
|
run() {
|
|
local status
|
|
status=$(popup_checker)
|
|
|
|
if [[ "$status" == "no_popup" ]]; then
|
|
echo "[LOG: $(date)] no popup, launching..."
|
|
launch
|
|
elif [[ "$status" == "same" ]]; then
|
|
echo "[LOG: $(date)] same popup, focusing..."
|
|
focus
|
|
elif [[ "$status" == "different" ]]; then
|
|
echo "[LOG: $(date)] different popup, closing and relaunching..."
|
|
replace
|
|
fi
|
|
}
|
|
|
|
run
|