
Mirasy z #bash #linux #programowanie (problem ze skryptem + #pytaniedoeksperta )
Próbuję zrobić prosty skrypt, który będzie w tylko konkretnym oknie klikał myszką w 1 punkcie co 1 sekundę:
(mam to w pliku "skrypt.sh", który odpalam z konsoli komendą "sh skrypt.sh")
Powyższy skrypt nie działa do końca dobrze, bo:
- jeżeli na oknie z nazwą "Abcde xyxy xyxy" pojawi się inne okno, które będzie zasłaniać koordynaty 500 100, to będzie klikać na tym nowym oknie.
Jak poprawić, żeby:
1. koordynaty dotyczyły tylko danego okna ("Abcde xyxy xyxy"), a nie całego ekranu (wychodzi na to, że tak jest teraz)?
2. skrypt pauzował się przy zmienie aktywnego okna ("Abcde xyxy xyxy") na inne (np. poprzez Alt+Tab)?
3. Sam początek nazwy okna "Abcde " jest zawsze taki sam, ale czasem (po paru dniach) dalsza część jest inna. Można jakoś użyć w skrypcie samego początku "Abdce " z jakimś myczkiem zastępującym dalszą część nazwy, żeby nie musieć aktualizować nazwy okna w skrypcie?
4. W ogóle jest taka możliwość, żeby klikało w zminimalizowanym oknie i można było normalnie działać myszką w innym oknie? (z tego co się orientowałem, to chyba nie ma takiej opcji)
(Wiem, że chyba można zamiast "search --name [nazwa]" użyć "--window [ID]", ale musiałbym często sprawdzać ID okna (po ponownym włączeniu) i podmieniać w pliku ze skryptem, więc no wygodniej byłoby z nazwą jak opisałem wyżej)
[operuję na Xubuntu 20.04.3 LTS]
Próbuję zrobić prosty skrypt, który będzie w tylko konkretnym oknie klikał myszką w 1 punkcie co 1 sekundę:
while true
do
xdotool search --name "Abcde xyxy xyxy" mousemove 500 100 click 1
sleep 1
done(mam to w pliku "skrypt.sh", który odpalam z konsoli komendą "sh skrypt.sh")
Powyższy skrypt nie działa do końca dobrze, bo:
- jeżeli na oknie z nazwą "Abcde xyxy xyxy" pojawi się inne okno, które będzie zasłaniać koordynaty 500 100, to będzie klikać na tym nowym oknie.
Jak poprawić, żeby:
1. koordynaty dotyczyły tylko danego okna ("Abcde xyxy xyxy"), a nie całego ekranu (wychodzi na to, że tak jest teraz)?
2. skrypt pauzował się przy zmienie aktywnego okna ("Abcde xyxy xyxy") na inne (np. poprzez Alt+Tab)?
3. Sam początek nazwy okna "Abcde " jest zawsze taki sam, ale czasem (po paru dniach) dalsza część jest inna. Można jakoś użyć w skrypcie samego początku "Abdce " z jakimś myczkiem zastępującym dalszą część nazwy, żeby nie musieć aktualizować nazwy okna w skrypcie?
4. W ogóle jest taka możliwość, żeby klikało w zminimalizowanym oknie i można było normalnie działać myszką w innym oknie? (z tego co się orientowałem, to chyba nie ma takiej opcji)
(Wiem, że chyba można zamiast "search --name [nazwa]" użyć "--window [ID]", ale musiałbym często sprawdzać ID okna (po ponownym włączeniu) i podmieniać w pliku ze skryptem, więc no wygodniej byłoby z nazwą jak opisałem wyżej)
[operuję na Xubuntu 20.04.3 LTS]

- Najlepsze
- Wszystkie komentarze







while() {id=$(xdotool search --name "Abcde .*")
xdotool --window "$id" mousemove 500 100 click 1
https://linuxhint.com/autokey_automate_linux_games/
2. Dodaj check w pętli porównujący z id aktualnie wybranego okna.
if [ "$(xdotool getwindowfocus)" -eq "id" ]; thenxdotool --window "$id" mousemove 500 100 click 1
fi
#!/usr/bin/env bash
save=$DISPLAY
xvfbtrzeba użyćXephyrNo tu to powinieneś sam ogarnąć ( ͡~ ͜ʖ ͡°) brakuje
$przedidwięc zamiast zmiennej masz@PortowySzczur: czytałem i odniosłem się do tego na końcu
Więc problemy nr 1. i nr 3. są rozwiązane. Nr 4. z tym skryptem dalej nie klika w zminimalizowanym/niesfokusowanym oknie (czego się w sumie spodziewałem, no ale widocznie się nie da z tą aplikacją).
A jest przynajmniej sposób na nr 2. - żeby skrypt pauzował się jeśli zmienię np. Alt-Tabem okno (na którym klika) na inne? Bo jak
@