определение рабочего стола или окна ID данного окна эмулятора терминала от PID

Я хочу знать, в каком рабочем столе данный процесс работает. Я могу получить это от использования окна ID wmctrl. Я могу также узнать, в каком процессе эмулятора терминала данный процесс работает путем трассировки родительского происхождения до терминального процесса.

Однако данный терминальный процесс будет иметь несколько распространений окон через несколько рабочих столов.

Я использую эмулятор терминала roxterm в эти дни, хотя и Konsole и терминал гнома подобны ему в этом отношении.

Существует ли способ запросить один или несколько из этих приложений для обнаружения, в каком из их окон работает данный процесс? Если это требует gdb хакерство, ну, в общем, взламывает далеко. Хотя что-то, вероятно, чтобы продолжить работать после обновления, вероятно, было бы лучше :)

Я не совсем настроен против отслеживания этого материала при инициализации удара, но я, ненавидят для разбираний во всех окровавленных деталях, и кажется вероятным, что существуют некоторые значительные пограничные случаи, которые не будут работать с таким подходом. Хотя, возможно, кто-то уже понял это?

С другой стороны, если существует другой эмулятор терминала, который обеспечивает более богатый интерфейс для доступа к таким самосозерцательным данным, которые были бы хороши для знания.

Я мог обойти это путем выполнения каждого окна в отдельном процессе, но компромиссы и с точки зрения использования памяти и с точки зрения универсальности (например, перемещение вкладки от одного окна до другого), вероятно, недопустимы. Главным образом это - использование памяти.

2
задан 08.08.2010, 19:58

1 ответ

Много эмуляторов терминала (включая rxvt, xterm, терминал гнома и консоль; я не протестировал с roxterm), устанавливает переменную среды WINDOWID к идентификатору окна подпроцесс (например, оболочка) был запущен в. Таким образом на Linux,

</proc/$pid/environ tr \\0 \\n | sed -n 's/^WINDOWID=//p'

говорит Вам который окно $pid работает в.

Это не будет работать, если процесс мигрировал между окнами, например, если он работает под экраном или если Вы переместили вкладки между окнами.

3
ответ дан 08.12.2019, 07:32

Теги

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