LINUX.ORG.RU

Как получить имя активного приложения

 , ,


0

3

Добрый день! Подскажите советом, мне нужно получить имя приложения активного в данный момент (т.е. того, с которым сейчас работает пользователь). Покопался немного в X11 и смог получить id активного окна. А вопрос вот в чем, как зная этот id окна получить имя программы?


Ответ на: комментарий от shserg

Выше приведённая програма на Go почти один в один перекладывается на C.

Тебе нужны следующие атомы: _NET_ACTIVE_WINDOW и _NET_WM_NAME (а так же WM_NAME и возможно WM_CLASS).

Как это всё делать именно на C можешь глянуть в исходниках xprop.

beastie ★★★★★
()
Ответ на: комментарий от shserg

С этим уже сложнее. Единственное, что могу ещё предложить — это атом WM_COMMAND.

PS: ещё — _NET_WM_PID а там уже смотреть, who-is-who.

beastie ★★★★★
()
Последнее исправление: beastie (всего исправлений: 1)

Ты же понимаешь, что это «активное приложение» может выполняться на другой машине, а не на той, на которой икссервер?

anonymous
()
Ответ на: комментарий от f1u77y

Моя задача в том, чтобы мониторить с какой программой в данное время работает пользователь. Например если он работает с терминалом, то нужно получить не имя окна (например «user@user-Ubuntu-14-02-2-64: ~») а имя программы (т.е. «Terminal»)

shserg
() автор топика
Ответ на: комментарий от shserg

тогда наиболее общее решение — смотреть за WM_CLASS

f1u77y ★★★★
()
Ответ на: комментарий от anonymous

Думаю, что если Wayland взлетит, к нему в конце концов тоже понаприкрутят костылей для всего перечисленного.

Другое дело, что тогда окажется, что система получилась ничуть не легче иксов, «но это будет потом».

hobbit ★★★★★
()
Ответ на: комментарий от x905

а если в терминале он запустит mc - с какой программой он работает ?

С программой mc.

В программе терминал.

Первое не существует без второго, но не наоборот.

iu0v1
()
Ответ на: комментарий от iu0v1

в терминале может быть несколько вкладок, несколько программ ...
делать вывод об активной программе по заголовку окна - сомнительное решение )

x905 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.