120 lines
3.4 KiB
Bash
Executable File
120 lines
3.4 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set +e
|
|
|
|
ACTION="$(printf '%s' "$1" | tr '[:lower:]' '[:upper:]')"
|
|
[ -n "$ACTION" ] || ACTION="ENSURE"
|
|
|
|
case "$ACTION" in
|
|
ENSURE|FOCUS|STATUS) ;;
|
|
*)
|
|
echo "PROGRESS_CONSOLE_GATE=FAIL"
|
|
echo "ERROR=INVALID_ACTION"
|
|
exit 2
|
|
;;
|
|
esac
|
|
|
|
TITLE="FrameBridge - Progreso DIG"
|
|
LOG_DIR="${FRAMEBRIDGE_PROGRESS_DIR:-$HOME/.local/state/framebridge/progress}"
|
|
LOG="${FRAMEBRIDGE_PROGRESS_LOG:-$LOG_DIR/framebridge-progress.log}"
|
|
DISPLAY_VALUE="$(printenv DISPLAY 2>/dev/null)"
|
|
[ -n "$DISPLAY_VALUE" ] || DISPLAY_VALUE=":0"
|
|
XAUTH_VALUE="$(printenv XAUTHORITY 2>/dev/null)"
|
|
[ -n "$XAUTH_VALUE" ] || XAUTH_VALUE="$HOME/.Xauthority"
|
|
|
|
mkdir -p "$LOG_DIR"
|
|
chmod 700 "$LOG_DIR" 2>/dev/null || true
|
|
touch "$LOG"
|
|
chmod 600 "$LOG" 2>/dev/null || true
|
|
|
|
if [ ! -s "$LOG" ]; then
|
|
cat > "$LOG" <<'HEADER'
|
|
============================================================
|
|
FRAMEBRIDGE ASUS // DIG PROGRESS
|
|
MODO: SOLO LECTURA
|
|
============================================================
|
|
HEADER
|
|
fi
|
|
|
|
find_window()
|
|
{
|
|
DISPLAY="$DISPLAY_VALUE" XAUTHORITY="$XAUTH_VALUE" xdotool search --name "^$TITLE$" 2>/dev/null | tail -n1
|
|
}
|
|
|
|
W="$(find_window)"
|
|
|
|
if [ "$ACTION" = "STATUS" ]; then
|
|
echo "PROGRESS_CONSOLE_GATE=PASS"
|
|
if [ -n "$W" ]; then
|
|
echo "STATE=ON"
|
|
echo "WINDOW_ID=$W"
|
|
else
|
|
echo "STATE=OFF"
|
|
echo "WINDOW_ID="
|
|
fi
|
|
echo "LOG=$LOG"
|
|
echo "READ_ONLY=YES"
|
|
echo "STYLE=GREEN_MONOCHROME_DIG"
|
|
exit 0
|
|
fi
|
|
|
|
if [ -z "$W" ]; then
|
|
export FB_PROGRESS_LOG="$LOG"
|
|
export FB_PROGRESS_TITLE="$TITLE"
|
|
|
|
if command -v gnome-terminal >/dev/null 2>&1; then
|
|
DISPLAY="$DISPLAY_VALUE" XAUTHORITY="$XAUTH_VALUE" gnome-terminal --title="$TITLE" -- bash -lc '
|
|
printf "\033]0;%s\007" "$FB_PROGRESS_TITLE"
|
|
printf "\033]10;#a8ffb5\007"
|
|
printf "\033]11;#010402\007"
|
|
printf "\033[1;38;2;168;255;181m"
|
|
printf "============================================================\n"
|
|
printf " FRAMEBRIDGE // DIG PROGRESS // SOLO LECTURA\n"
|
|
printf "============================================================\n"
|
|
exec tail -n 200 -F "$FB_PROGRESS_LOG"
|
|
' >/dev/null 2>&1 &
|
|
elif command -v xterm >/dev/null 2>&1; then
|
|
DISPLAY="$DISPLAY_VALUE" XAUTHORITY="$XAUTH_VALUE" xterm -T "$TITLE" -fg "#a8ffb5" -bg "#010402" -e bash -lc 'exec tail -n 200 -F "$FB_PROGRESS_LOG"' >/dev/null 2>&1 &
|
|
else
|
|
echo "PROGRESS_CONSOLE_GATE=FAIL"
|
|
echo "ERROR=NO_SUPPORTED_TERMINAL"
|
|
exit 3
|
|
fi
|
|
|
|
for _ in $(seq 1 50); do
|
|
W="$(find_window)"
|
|
[ -n "$W" ] && break
|
|
sleep 0.1
|
|
done
|
|
fi
|
|
|
|
if [ -z "$W" ]; then
|
|
echo "PROGRESS_CONSOLE_GATE=FAIL"
|
|
echo "ERROR=WINDOW_NOT_FOUND"
|
|
exit 4
|
|
fi
|
|
|
|
if command -v wmctrl >/dev/null 2>&1; then
|
|
GEOM="$(DISPLAY="$DISPLAY_VALUE" XAUTHORITY="$XAUTH_VALUE" xdotool getdisplaygeometry 2>/dev/null)"
|
|
SW="$(printf '%s' "$GEOM" | awk '{print $1}')"
|
|
SH="$(printf '%s' "$GEOM" | awk '{print $2}')"
|
|
if [ -n "$SW" ] && [ -n "$SH" ]; then
|
|
H=330
|
|
Y=$((SH - H - 28))
|
|
[ "$Y" -lt 0 ] && Y=0
|
|
DISPLAY="$DISPLAY_VALUE" XAUTHORITY="$XAUTH_VALUE" wmctrl -ir "$W" -e "0,0,$Y,$SW,$H" >/dev/null 2>&1 || true
|
|
fi
|
|
fi
|
|
|
|
if [ "$ACTION" = "FOCUS" ]; then
|
|
DISPLAY="$DISPLAY_VALUE" XAUTHORITY="$XAUTH_VALUE" xdotool windowactivate --sync "$W" >/dev/null 2>&1 || true
|
|
fi
|
|
|
|
echo "PROGRESS_CONSOLE_GATE=PASS"
|
|
echo "ACTION=$ACTION"
|
|
echo "STATE=ON"
|
|
echo "WINDOW_ID=$W"
|
|
echo "LOG=$LOG"
|
|
echo "READ_ONLY=YES"
|
|
echo "STYLE=GREEN_MONOCHROME_DIG"
|
|
exit 0
|