xdotool: неизвестная команда: 21043361

Насколько я знаю, приведенная ниже строка кода должна обратить внимание на открытое окно nautilus

xdotool windowactivate `xdotool search --onlyvisible --class nautilus`

Но я получаю ошибку

xdotool: Неизвестная команда: 21043361

2
задан 31 October 2012 в 02:28

2 ответа

Я думаю, что внутренняя команда xdotool сообщает о нескольких идентификаторах окон. Таким образом, внешняя команда видит что-то вроде xdotool windowactivate 12345678 21043361 и не знает, что делать со вторым числом.

Если вы не возражаете против того, какое открытое окно Nautilus вы активируете, вы можете выбрать первое:

xdotool windowactivate $(xdotool search --onlyvisible --class nautilus | head -n 1)

. ].

Чтобы исключить корневое окно, предоставляемое Nautilus, это должно сработать:

xdotool windowactivate $(xdotool search --onlyvisible --class nautilus |
                         grep -vxF $(xwininfo -int -size -root |
                                     sed -n 's/.*Window id: *\([0-9]\+\).*/\1/p') |
                         head -n 1)
0
ответ дан 31 October 2012 в 02:28

Автор xdotool здесь.

То, что вы видите, очень вероятно, что есть два идентификатора окна. Вы могли бы попытаться выяснить, какой именно идентификатор окна был тем, который вы хотели, но в большинстве случаев можете просто использовать функции «цепочки команд» и «стек окон» - см. «WINDOW STACK» и «COMMAND CHAINING» на странице руководства xdotool.

Самое простое решение вашего вопроса - выполнить поиск в xdotool и передать идентификаторы окна непосредственно команде windowactivate, например так:

xdotool search --onlyvisible --class nautilus windowactivate

Приведенный выше поиск выполняет поиск и сохраняет результаты в стеке окон. , затем вызывает windowactivate, которое без аргументов применяется к первому окну в стеке окон (также известное как «% 1»). Думайте об этом как о способе передачи результатов поиска в другие команды xdotool в той же командной строке.

Вот еще один пример, чтобы получить заголовки всех окон Google Chrome, используя стек «% @», означающий «все окна в стеке» (в отличие от% 1,% 2 и т. Д., Которые являются конкретными окнами в стеке). )

% xdotool search --onlyvisible --class chrome getwindowname %@   
asdf - Google Search - Google Chrome
CNN.com - Breaking News, U.S., World, Weather, Entertainment & Video News - Google Chrome
Ask Ubuntu - Google Chrome
Google Chrome

Как правило, любая команда, которая генерирует идентификатор окна (search, selectwindow, getactivewindow и т. Д.), Заполняет стек окон для использования с связанными командами. Другой пример, убивая окно (обычно закрывающее приложение), нажав на него:

% xdotool selectwindow windowkill
0
ответ дан 31 October 2012 в 02:28

Другие вопросы по тегам:

Похожие вопросы: