Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions clicker/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# AgentEther Auto-Clicker

Prosty auto-klikacz na pulpit dla systemu Linux/X11.

## Szybka instalacja

```bash
# Sklonuj repo i wejdź do katalogu
git clone https://github.com/HELLIOSDR/agentEther
cd agentEther/clicker

# Uruchom instalator
bash setup_clicker.sh
```

## Użycie z terminala

```bash
# Podstawowe klikanie co 1s (3s opóźnienie startu)
agentether-clicker

# Klikaj co 0.5 sekundy
agentether-clicker -i 0.5

# Klikaj na konkretnej pozycji x=500, y=300
agentether-clicker -x 500 -y 300

# Prawy przycisk co 2s, 50 razy
agentether-clicker -b right -i 2 -n 50

# Tryb hotkeys: F5=start, F6=stop
agentether-clicker --hotkeys
```

## Zatrzymanie awaryjne

Przesuń kursor myszy do **rogu ekranu** - klikacz zatrzyma się natychmiast.

## Zdalnie przez SSH (192.168.0.142)

```bash
ssh user@192.168.0.142
cd agentEther/clicker
bash setup_clicker.sh
```

Lub uruchom bezpośrednio przez SSH z X forwarding:

```bash
ssh -X user@192.168.0.142 "python3 ~/agentEther/clicker/clicker.py -i 1"
```
11 changes: 11 additions & 0 deletions clicker/agentether-clicker.desktop
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
[Desktop Entry]
Version=1.0
Type=Application
Name=AgentEther Auto-Clicker
Comment=Automatyczny klikacz dla pulpitu (F5=start, F6=stop)
Exec=bash -c 'python3 ~/.local/share/agentether-clicker/clicker.py --hotkeys; echo "Naciśnij Enter aby zamknąć"; read'
Icon=input-mouse
Terminal=true
Categories=Utility;
Keywords=clicker;auto;klikacz;autoclick;
StartupNotify=true
161 changes: 161 additions & 0 deletions clicker/clicker.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
#!/usr/bin/env python3
"""
AgentEther Desktop Auto-Clicker
Prosty auto-klikacz dla pulpitu Linux/X11
"""

import sys
import time
import threading
import argparse
from datetime import datetime

try:
import pyautogui
import keyboard
except ImportError:
print("Brak wymaganych bibliotek. Uruchom: pip install pyautogui keyboard")
sys.exit(1)

# Konfiguracja domyślna
DEFAULT_INTERVAL = 1.0 # sekundy między kliknięciami
DEFAULT_BUTTON = "left" # lewy przycisk myszy
STOP_KEY = "F6" # klawisz zatrzymania
START_KEY = "F5" # klawisz startu

pyautogui.FAILSAFE = True # ruch myszą do rogu ekranu = stop


class AutoClicker:
def __init__(self, interval=DEFAULT_INTERVAL, button=DEFAULT_BUTTON,
x=None, y=None, max_clicks=0):
self.interval = interval
self.button = button
self.x = x
self.y = y
self.max_clicks = max_clicks # 0 = bez limitu
self.running = False
self.click_count = 0
self._thread = None

def _click_loop(self):
print(f"[{datetime.now().strftime('%H:%M:%S')}] Klikanie startuje... (zatrzymaj: {STOP_KEY})")
while self.running:
if self.x is not None and self.y is not None:
pyautogui.click(self.x, self.y, button=self.button)
else:
pyautogui.click(button=self.button)

self.click_count += 1
print(f" Klik #{self.click_count}", end="\r")

if self.max_clicks > 0 and self.click_count >= self.max_clicks:
print(f"\nOsiągnięto limit {self.max_clicks} kliknięć.")
self.stop()
break

time.sleep(self.interval)

def start(self):
if self.running:
print("Klikacz już działa!")
return
self.running = True
self.click_count = 0
self._thread = threading.Thread(target=self._click_loop, daemon=True)
self._thread.start()

def stop(self):
self.running = False
if self._thread:
self._thread.join(timeout=2)
print(f"\n[{datetime.now().strftime('%H:%M:%S')}] Zatrzymano. Łącznie kliknięć: {self.click_count}")


def parse_args():
parser = argparse.ArgumentParser(
description="AgentEther Auto-Clicker",
formatter_class=argparse.RawDescriptionHelpFormatter,
epilog="""
Przykłady użycia:
python3 clicker.py # klikaj co 1s w bieżącej pozycji
python3 clicker.py -i 0.5 # klikaj co 0.5s
python3 clicker.py -x 500 -y 300 # klikaj na pozycji x=500, y=300
python3 clicker.py -i 2 -b right # prawy przycisk co 2s
python3 clicker.py -n 100 # dokładnie 100 kliknięć
python3 clicker.py --hotkeys # tryb z klawiszami F5/F6
"""
)
parser.add_argument("-i", "--interval", type=float, default=DEFAULT_INTERVAL,
help=f"Interwał między kliknięciami w sekundach (domyślnie: {DEFAULT_INTERVAL})")
parser.add_argument("-b", "--button", choices=["left", "right", "middle"],
default=DEFAULT_BUTTON,
help=f"Przycisk myszy (domyślnie: {DEFAULT_BUTTON})")
parser.add_argument("-x", type=int, default=None,
help="Pozycja X na ekranie (domyślnie: bieżąca pozycja)")
parser.add_argument("-y", type=int, default=None,
help="Pozycja Y na ekranie (domyślnie: bieżąca pozycja)")
parser.add_argument("-n", "--max-clicks", type=int, default=0,
help="Maksymalna liczba kliknięć (0 = bez limitu)")
parser.add_argument("--hotkeys", action="store_true",
help=f"Tryb hotkeys: {START_KEY}=start, {STOP_KEY}=stop")
parser.add_argument("--delay", type=float, default=3.0,
help="Opóźnienie przed startem w sekundach (domyślnie: 3)")
return parser.parse_args()


def main():
args = parse_args()

print("=" * 50)
print(" AgentEther Auto-Clicker")
print("=" * 50)
print(f" Interwał: {args.interval}s")
print(f" Przycisk: {args.button}")
if args.x and args.y:
print(f" Pozycja: x={args.x}, y={args.y}")
else:
print(" Pozycja: bieżąca pozycja kursora")
if args.max_clicks:
print(f" Limit: {args.max_clicks} kliknięć")
print(f" FAILSAFE: przesuń mysz do rogu ekranu = awaryjne zatrzymanie")
print("=" * 50)

clicker = AutoClicker(
interval=args.interval,
button=args.button,
x=args.x,
y=args.y,
max_clicks=args.max_clicks
)

if args.hotkeys:
print(f"\nTryb hotkeys: {START_KEY} = start, {STOP_KEY} = stop")
print("Oczekiwanie na naciśnięcie klawisza...\n")

keyboard.add_hotkey(START_KEY, clicker.start)
keyboard.add_hotkey(STOP_KEY, clicker.stop)

try:
keyboard.wait("esc")
except KeyboardInterrupt:
clicker.stop()
else:
if args.delay > 0:
print(f"\nStart za {args.delay:.0f}s... (Ctrl+C aby anulować)")
try:
time.sleep(args.delay)
except KeyboardInterrupt:
print("\nAnulowano.")
sys.exit(0)

clicker.start()
try:
while clicker.running:
time.sleep(0.1)
except KeyboardInterrupt:
clicker.stop()


if __name__ == "__main__":
main()
111 changes: 111 additions & 0 deletions clicker/setup_clicker.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
#!/bin/bash
# AgentEther Desktop Clicker - Skrypt instalacyjny
# Użycie: bash setup_clicker.sh
# Działa na Ubuntu/Debian/Mint

set -e

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
INSTALL_DIR="$HOME/.local/share/agentether-clicker"
DESKTOP_DIR="$HOME/.local/share/applications"
BIN_DIR="$HOME/.local/bin"

echo "======================================"
echo " AgentEther Auto-Clicker Installer"
echo "======================================"

# 1. Sprawdź Python
if ! command -v python3 &>/dev/null; then
echo "[!] Python3 nie znaleziony. Instaluję..."
sudo apt-get update && sudo apt-get install -y python3 python3-pip
fi
echo "[OK] Python3: $(python3 --version)"

# 2. Zainstaluj zależności systemowe (X11 dla pyautogui)
echo "[*] Instaluję zależności systemowe..."
sudo apt-get install -y --no-install-recommends \
python3-pip \
python3-tk \
python3-dev \
scrot \
xdotool \
libxtst-dev \
2>/dev/null || echo "[!] Niektóre pakiety systemowe mogą być pominięte"

# 3. Zainstaluj biblioteki Python
echo "[*] Instaluję biblioteki Python..."
pip3 install --user pyautogui keyboard 2>/dev/null || \
python3 -m pip install --user pyautogui keyboard

# 4. Skopiuj pliki do katalogu instalacji
echo "[*] Kopiuję pliki..."
mkdir -p "$INSTALL_DIR"
cp "$SCRIPT_DIR/clicker.py" "$INSTALL_DIR/clicker.py"
chmod +x "$INSTALL_DIR/clicker.py"

# 5. Utwórz skrypt startowy w PATH
mkdir -p "$BIN_DIR"
cat > "$BIN_DIR/agentether-clicker" << EOF
#!/bin/bash
# Wrapper startowy dla AgentEther Auto-Clicker
python3 "$INSTALL_DIR/clicker.py" "\$@"
EOF
chmod +x "$BIN_DIR/agentether-clicker"

# 6. Dodaj do PATH jeśli potrzeba
if [[ ":$PATH:" != *":$BIN_DIR:"* ]]; then
echo "export PATH=\"\$PATH:$BIN_DIR\"" >> "$HOME/.bashrc"
echo "[*] Dodano $BIN_DIR do PATH w ~/.bashrc"
fi

# 7. Utwórz plik .desktop
mkdir -p "$DESKTOP_DIR"
ICON_PATH="$INSTALL_DIR/icon.png"

# Pobierz/utwórz ikonę (fallback: systemowa ikona)
if command -v convert &>/dev/null; then
convert -size 64x64 xc:'#1a1a2e' \
-fill '#e94560' -draw 'circle 32,32 32,10' \
-fill white -pointsize 20 -gravity center -annotate 0 'AC' \
"$ICON_PATH" 2>/dev/null || ICON_PATH="input-mouse"
else
ICON_PATH="input-mouse"
fi

cat > "$DESKTOP_DIR/agentether-clicker.desktop" << EOF
[Desktop Entry]
Version=1.0
Type=Application
Name=AgentEther Auto-Clicker
Comment=Automatyczny klikacz dla pulpitu
Exec=bash -c 'python3 $INSTALL_DIR/clicker.py --hotkeys; read'
Icon=$ICON_PATH
Terminal=true
Categories=Utility;
Keywords=clicker;auto;klikacz;
StartupNotify=true
EOF

chmod +x "$DESKTOP_DIR/agentether-clicker.desktop"
echo "[OK] Plik .desktop utworzony: $DESKTOP_DIR/agentether-clicker.desktop"

# 8. Odśwież bazę aplikacji pulpitu
if command -v update-desktop-database &>/dev/null; then
update-desktop-database "$DESKTOP_DIR" 2>/dev/null || true
fi

echo ""
echo "======================================"
echo " Instalacja zakończona pomyślnie!"
echo "======================================"
echo ""
echo "Uruchomienie:"
echo " z terminala: agentether-clicker"
echo " z pulpitu: szukaj 'AgentEther Auto-Clicker' w menu aplikacji"
echo ""
echo "Opcje:"
echo " agentether-clicker -i 0.5 # klikaj co 0.5s"
echo " agentether-clicker -x 500 -y 300 # klikaj na pozycji x=500,y=300"
echo " agentether-clicker --hotkeys # F5=start, F6=stop"
echo " agentether-clicker --help # pełna pomoc"
echo ""
Loading