Aktywne Wpisy

thority +8
Mireczki pomysły na nazwę firmy?
Usługi IT, utrzymanie, architektura, migracje z on prem do chmury itp.
Imię Krzysztof.
#pracbaza
#jdg
#pracait
#januszex
#korposwiat
Usługi IT, utrzymanie, architektura, migracje z on prem do chmury itp.
Imię Krzysztof.
#pracbaza
#jdg
#pracait
#januszex
#korposwiat

g455 +72
Do napisania tego wysrywu zainspirował mnie wpis z gorących. Wróciłem dopiero do domu po 14 godzinach w pracy. Żona oczywiście już śpi razem z dziećmi, bo ona jest zmęczona i rano wstaje do pracy (ma na 8...). Śpi z nimi w pokoju. Przez cały dzień nie rozmawialiśmy. Do jedzenia nic nie przygotowane. Łóżko w sypialni nie rozścielone. W lodówce w miseczce stała porcja obiadu z soboty - do dziś nikt tego nie




Próbuję zrobić prosty skrypt, który będzie w tylko konkretnym oknie klikał myszką w 1 punkcie co 1 sekundę:
while truedo
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]
źródło: comment_1637263262KOA43oliGM8GAPM132lJdQ.jpg
Pobierz@PortowySzczur: czytałem i odniosłem się do tego na końcu
while() {id=$(xdotool search --name "Abcde .*")
xdotool --window "$id" mousemove 500 100 click 1
sleep 1
}
A co do klikanie w zminimalizowanych, niesfokusowanych okanach to zależy od programu, często takie zdarzenia są odrzucane np. przez chromium, dodatkowo
https://linuxhint.com/autokey_automate_linux_games/
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 klika
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
export DISPLAY=:44
case "$1" in
start) Xvfb $DISPLAY & ;;
run) ./program & ;;
xdo) xdotool mousemove 500 100 click 1
show)
xwd -root | xwud -display $save & ;;
stop) ps auxww | grep "Xvfb $DISPLAY" | awk '{print $2}' | xargs kill ;;
all) DISPLAY=$save; $0 start; $0 calc; sleep
xvfbtrzeba użyćXephyr@BArtus: co sekundę zwraca w konsoli dokładnie taki błąd (bez względu na to, które okno mam sfokusowane):
5: [: Illegal number: id(5. linia jest z "if [ "$(xdotool getwindowfocus)" -eq "id" ]; then")
(odnośnie 4. punktu jeszcze nie kombinowałem)
Komentarz usunięty przez autora
No tu to powinieneś sam ogarnąć ( ͡~ ͜ʖ ͡°) brakuje
$przedidwięc zamiast zmiennej masz porównanie do stringa.Powinno być:
if [ "$(xdotool getwindowfocus)" -eq "$id" ]; thenxdotool --window "$id" mousemove 500 100 click 1
fi
Masz tu automata na
xvfbktórego@BArtus: ooomg faktycznie (-‸ლ) działa już elegancko, dzięki :D
A z tym fajnym skryptem na xvfb jeszcze muszę poogarniać, dam znać ( ͡° ͜ʖ ͡°) Dzięki mistrzu!