Вам нужен инструмент Devil's Pie (версия 1 и версия 2, обратите внимание, что они используют совершенно разные языки конфигурации). На этом сайте есть несколько примеров, например 1 2 3 4 .
Проблема с вашим сценарием уже была указана Джеффом Шаллером в комментарии: строка, извлекающая вывод из xwininfo
, не подключается к строке, вызывающей ] wmctrl
. Чтобы использовать вывод команды в сценарии, используйте замену команды .
windowid=$(xwininfo -name "xfce4-settings-manager" | awk '$1 == "xwininfo:" {printf $4}')
wmctrl -i -r "$windowid" -b add,maximized_vert,maximized_horz &
Я использовал промежуточную переменную, чтобы строка не становилась нечитабельно длинной, но вы можете сделать все это в строке:
wmctrl -i -r "$(xwininfo -name "xfce4-settings-manager" | awk '$1 == "xwininfo:" {printf $4}')" -b add,maximized_vert,maximized_horz &
Я также объединил вызовы grep и awk, здесь мне проще использовать один инструмент.
Вам не нужно использовать xwininfo
, чтобы найти идентификатор окна: wmctrl
может это сделать, просто передайте ему имя окна.
wmctrl -r "xfce4-settings-manager" -b add,maximized_vert,maximized_horz &
Не думаю, что можно найти более быстрый способ, чем рекурсивныйgrep
:
grep -r foo /
Это будет искать в каждом файле в вашей файловой системе слово foo
. Вы можете немного ускорить его, сказав, чтобы он совпадал только один раз для каждого файла с-m
:
grep -rm 1 foo /
Таким образом, если он найдет совпадение в файле, он напечатает совпадающую строку и перейдет к следующему файлу, поэтому ему не нужно каждый раз обрабатывать весь файл, но он всегда будет медленным, если только вы можете каким-то образом ограничить количество файлов, которые вы хотите искать.