Puncte:0

Folosind Xdotool pentru a tasta un document Libreoffice

drapel us

M-am întrebat adesea cum să automatizez libreoffice folosind xdotool. Știu că fereastra trebuie selectată din stiva de ferestre și am încercat să o programez ca variabilă bash de fereastră sub xdotool în scriptul bash. Apoi am încercat să trimit următoarea apăsare de tastă în fereastră, dar fără rezultat. Chiar acum vreau să trec comanda ctrl+N în fereastra Office Libre pentru a deschide un document nou.

#!/bin/bash
/usr/bin/libreoffice
mywindow=$(xdotool search --class libreoffice)
xdotool windowactivate $mywindow && tasta xdotool --window $mywindow Următorul
tasta xdotool ctrl+n

Primesc un cod de eroare

Nu există ferestre în stivă.
Fereastra „%1” nevalidă
Utilizare: windowactivate [opțiuni] [window=%1]
--sync - ieșiți numai odată ce fereastra este activă (este vizibilă + activă)
Dacă nu este dată nicio fereastră, se folosește %1. Vedeți STACK pentru ferestre în xdotool(1)
Puncte:1
drapel cn
  • Pentru a găsi mai selectiv o fereastră LibreOffice Writer (și, de exemplu, nu o fereastră Calc), utilizați aceasta: mywindow=$(xdotool search --class libreoffice-writer). Puteți vedea clasa ferestrelor deschise cu comanda wmctrl -lx. Aceasta listează cu atât mai multe generic classname și clasa mai specifică, separate printr-un punct. Pentru libreoffice, este libreoffice.libreoffice-writer.
  • Atenție: cel căutare xdotool comanda va prelua toate ferestrele dintr-o anumită clasă. Astfel, cu mai multe ferestre, variabila va conține mai mulți identificatori separați printr-un spațiu, de ex. 66167017 65540686. windowactivate, totuși, susține doar un singur argument.
  • După executarea libreoffice comandă, procesul va trece în fundal. Nu a fost creată încă o fereastră. Acesta este motivul pentru care winactivate eșuează. Folosește --sincronizare opțiunea de a avea winactivate comanda așteptați ca fereastra să fie creată efectiv: mywindow=$(xdotool search --sync --class libreoffice.writer)
CraigslistCesium avatar
drapel us
Funcționează! Mulțumiri. Aș putea folosi și windowfocus? Este pe același desktop virtual, așa că ar fi necesară activarea windows-ului?
vanadium avatar
drapel cn
`man xdotool` recomandă să preferați `windowactivate`, deși `windowfocus` poate funcționa și în cazul dvs. Aceste două implică metode diferite.
Puncte:1
drapel sd

O soluție simplă ar fi punerea LO în fundal, apoi adăugarea de întârziere între xdotool comanda.

#!/bin/bash
/usr/bin/libreoffice &
dormi 10
mywindow=$(xdotool search --class libreoffice)
xdotool windowactivate $mywindow && tasta xdotool --window $mywindow Următorul
tasta xdotool ctrl+n

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.