Насколько я знаю, приведенная ниже строка кода должна обратить внимание на открытое окно nautilus
xdotool windowactivate `xdotool search --onlyvisible --class nautilus`
Но я получаю ошибку
xdotool: Неизвестная команда: 21043361
blockquote>
Я думаю, что внутренняя команда 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)
Автор 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