Как получить активный адрес окна (pwd of gui)?

В Kubuntu я хочу захватить адрес активного окна (если есть, еще Home). Я хочу, чтобы это сделало пользовательское сочетание клавиш для открытия терминала (konsole в kubuntu) в этом каталоге. Например: gnome-terminal --working-directory=/path/to/dir

РЕДАКТИРОВАТЬ: Для дельфина я обнаружил, что это Shift + F4 по умолчанию, который можно легко настроить. Но я все еще хочу знать, как получить адрес (он же $ PWD) из активного окна (любого менеджера каталогов). Если для экземпляра нет открытого менеджера каталогов, установите для параметра по умолчанию значение ~ (Home).

1
задан 20 January 2018 в 08:12

1 ответ

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

Есть несколько фундаментальных проблем с подходом, который вы ищете.

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

На Wayland наличие глобального ярлыка, который просматривает свойства других окон, вероятно, невозможно из-за его модели безопасности, хотя я не знаком с деталями.

Но давайте предположим, что каким-то образом вам удастся найти процесс, принадлежащий текущему активному окну. Возможно, с использованием эвристики, например, «если заголовок окна имеет значение Files, найдите процесс nautilus».

Затем вы можете легко проверить рабочий каталог этого процесса (в /proc/<PID>/cwd), но будет ли это то, что вы ищете? Скорее всего нет. Я не знаком с Дельфином, поэтому давайте возьмем Наутилус в качестве нашего примера. Это один процесс, который может открывать несколько окон, каждое из которых показывает разные каталоги. Таким образом, он явно не может изменить свой рабочий каталог на отображаемый, поскольку он показывает вам несколько каталогов, но один рабочий каталог может быть у процесса. Таким образом, значение в /proc не даст вам того, что вы ищете. Нет никакого разумного способа взглянуть на поведение процесса в такой степени, чтобы выяснить, какой путь к каталогу принадлежит какому окну, если приложение каким-либо образом явно не поддерживает предоставление этой информации вам.

0
ответ дан 20 January 2018 в 08:12

Другие вопросы по тегам:

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