85 lines
1.6 KiB
Bash
85 lines
1.6 KiB
Bash
#!/bin/bash
|
||
source "$HOME/.config/capture-ai/env.sh"
|
||
|
||
set -e
|
||
|
||
BASE="$HOME/.cache/capture-ai"
|
||
IMG_DIR="$BASE/images"
|
||
CHAT_DIR="$BASE/chats"
|
||
|
||
mkdir -p "$IMG_DIR"
|
||
mkdir -p "$CHAT_DIR"
|
||
|
||
MODE="$1"
|
||
|
||
case "$MODE" in
|
||
|
||
image)
|
||
GEOM="$(slurp 2>/dev/null || true)"
|
||
[ -z "$GEOM" ] && exit 0
|
||
|
||
POS_PART="${GEOM%% *}"
|
||
SIZE_PART="${GEOM#* }"
|
||
|
||
X="${POS_PART%,*}"
|
||
Y="${POS_PART#*,}"
|
||
W="${SIZE_PART%x*}"
|
||
H="${SIZE_PART#*x}"
|
||
|
||
case "$X" in ''|*[!0-9]*) exit 0 ;; esac
|
||
case "$Y" in ''|*[!0-9]*) exit 0 ;; esac
|
||
case "$W" in ''|*[!0-9]*) exit 0 ;; esac
|
||
case "$H" in ''|*[!0-9]*) exit 0 ;; esac
|
||
|
||
# Tek tıklama -> tıklanan monitörün tamamı
|
||
if [ "$W" -le 5 ] || [ "$H" -le 5 ]; then
|
||
IMG="$IMG_DIR/tam-ekran-$(date +%Y%m%d-%H%M%S).png"
|
||
|
||
MON_GEOM="$(
|
||
hyprctl monitors -j 2>/dev/null | python3 -c '
|
||
import sys, json
|
||
|
||
x = int(sys.argv[1])
|
||
y = int(sys.argv[2])
|
||
|
||
try:
|
||
mons = json.load(sys.stdin)
|
||
except Exception:
|
||
sys.exit(1)
|
||
|
||
for m in mons:
|
||
mx = int(m.get("x", 0))
|
||
my = int(m.get("y", 0))
|
||
mw = int(m.get("width", 0))
|
||
mh = int(m.get("height", 0))
|
||
|
||
if mx <= x < mx + mw and my <= y < my + mh:
|
||
print(f"{mx},{my} {mw}x{mh}")
|
||
sys.exit(0)
|
||
|
||
sys.exit(1)
|
||
' "$X" "$Y"
|
||
)"
|
||
|
||
[ -z "$MON_GEOM" ] && exit 0
|
||
|
||
grim -g "$MON_GEOM" "$IMG"
|
||
else
|
||
IMG="$IMG_DIR/secili-alan-$(date +%Y%m%d-%H%M%S).png"
|
||
grim -g "$GEOM" "$IMG"
|
||
fi
|
||
|
||
python "$HOME/capture-ai/ui.py" "$IMG"
|
||
;;
|
||
|
||
text)
|
||
python "$HOME/capture-ai/ui.py"
|
||
;;
|
||
|
||
*)
|
||
echo "Usage:"
|
||
echo " capture-ai.sh image"
|
||
echo " capture-ai.sh text"
|
||
;;
|
||
esac
|