Мне нужно решение для получения информации о текущем активном (сфокусированном) окне на рабочем столе Gnome 2. В основном меня интересует процесс запуска этого окна и заголовка окна.
Является ли это возможным?
РЕШЕНИЕ:
Получение заголовка окна:
xwininfo -root -children | grep $(printf '%x\n' $(xdotool getwindowfocus)) | grep -oEi '"[^"]+"' | head -1
Получение названия процесса:
ps -e | grep $(xdotool getwindowpid $(xdotool getwindowfocus)) | grep -v grep | awk '{print $4}'
или:
cat /proc/$(xdotool getwindowpid $(xdotool getwindowfocus))/comm
Проще (IMO), чем решение OP (т.е. без
ps
,grep
иawk
), чтобы получить имя процесса:Или, если вы хотите конец строки:
источник
cat /proc/
это хорошо (и, возможно, быстрее, так как это не включает в себя весьps
вывод). Я добавил его к решению в теле вопроса, чтобы будущие пользователи могли его найти.Попробуйте команду xwininfo, http://www.xfree86.org/4.2.0/xwininfo.1.html , она определенно возвращает заголовок окна и, насколько процесс идет, хорошо ...
X назначил ему идентификатор и стал родительским PID окна, а также скрыл бы его по умолчанию, поэтому, предполагая, что Gnome поддерживает NET_WM_PID, как указывает этот патч 2001 года, http://mail.gnome.org/ архивы / gtk-devel-list / 2001-октябрь / msg00238.html , тогда мы можем просмотреть этот пост, http://www.mail-archive.com/devel@xfree86.org/msg05809.html , где автор пишет короткая программа на C для преобразования идентификатора окна в PID, вуаля.
источник
xwininfo
от меня требуется вручную выбрать нужное окно. Я надеялся на способ получить сфокусированное окно из bash.Я знаю, что вопрос старый, но я чувствую, что
xprop
следует упомянуть здесь. Он легко доступен под X. Он может быть использован в интерактивном режиме:xprop
и выберите нужное окно, используя курсор мыши, затемWM_NAME
дает вам заголовок окна,_NET_WM_PID
дает пидИли вы можете напрямую сказать,
xprop
какое окно вам нужно, передав-id
или-name
опцию. Используя его,awk
вы можете получить идентификатор активного окна и передать его обратноxprop
вот так (взято отсюда ):Наконец, используя Your Favorite Tool ™ (например,
grep
илиsed
), вы можете выделить нужные значения. Например, дляpid
вывода вышеприведенной команды может быть переданоsed
:sed -nE 's/^_NET_WM_PID.*= ([0-9]+)/\1/p'
источник