Рейтинг:0

Использование Xdotool для ввода документа Libreoffice

флаг us

Я часто задавался вопросом, как автоматизировать libreoffice с помощью xdotool. Я знаю, что окно должно быть выбрано из стека окон, и я попытался запрограммировать его как переменную окна bash в xdotool в сценарии bash. Затем я попытался отправить следующее нажатие клавиши в окно, но безрезультатно. Прямо сейчас я хочу передать команду ctrl+N в окно libre office, чтобы открыть новый документ.

#!/бин/баш
/USR/бен/либреофис
mywindow=$(xdotool search --class libreoffice)
xdotool windowactivate $mywindow && ключ xdotool --window $mywindow Далее
Клавиша xdotool ctrl+n

Я получаю код ошибки

В стеке нет окон.
Недопустимое окно "%1"
Использование: windowactivate [параметры] [окно=%1]
--sync - выйти только после того, как окно станет активным (видимо + активно)
Если окно не задано, используется %1. См. СТЕК ОКНА в xdotool(1)
Рейтинг:1
флаг cn
  • Чтобы более избирательно найти окно LibreOffice Writer (а, например, не окно Calc), используйте это: mywindow=$(xdotool search --class libreoffice-writer). Посмотреть класс открытых окон можно командой wmctrl-lx. В этом списке более общее имя класса и более конкретный класс, разделенные точкой. Для libreoffice это libreoffice.libreoffice-писатель.
  • Осторожно: xdotool поиск Команда извлечет все окна определенного класса. Таким образом, с несколькими окнами переменная будет содержать несколько идентификаторов, разделенных пробелом, например. 66167017 65540686. активировать окнооднако поддерживает только один аргумент.
  • После выполнения либреофис команда, процесс перейдет в фоновый режим. Окно еще не создано. Поэтому винактивировать терпит неудачу. Использовать --синхронизация возможность иметь винактивировать команда ждет, пока окно будет эффективно создано: mywindow=$(xdotool search --sync --class libreoffice.writer)
CraigslistCesium avatar
флаг us
Оно работает! Спасибо. Могу ли я также использовать оконный фокус? Это на том же виртуальном рабочем столе, так нужна ли активация окна?
vanadium avatar
флаг cn
`man xdotool` рекомендует предпочесть `windowactivate`, хотя `windowfocus` также может работать в вашем случае. Эти два включают разные методы.
Рейтинг:1
флаг sd

Простым обходным решением было бы перевести LO в фоновый режим, а затем добавить задержку между xdotool команда.

#!/бин/баш
/usr/bin/libreoffice &
спать 10
mywindow=$(xdotool search --class libreoffice)
xdotool windowactivate $mywindow && ключ xdotool --window $mywindow Далее
Клавиша xdotool ctrl+n

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.