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

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

EDIT: для дельфина я обнаружил, что по умолчанию Shift + F4, который можно легко настроить. Но я все еще хочу знать, как получить адрес (aka $ PWD) из активного окна (любого менеджера каталогов). Если диспетчер каталогов не открыт для экземпляра, установите параметр по умолчанию как ~ (Главная).

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

2 ответа

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

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

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

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

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

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

0
ответ дан 17 July 2018 в 22:40

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

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

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

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

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

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

0
ответ дан 24 July 2018 в 13:16
  • 1
    Спасибо за ответ! На простом языке, как right click & gt; open in terminal работает в наутилусе? Он должен захватить текущее местоположение. – subtleseeker 20 January 2018 в 15:35
  • 2
    Это меню представлено самим nautilus, поэтому, очевидно, знает местоположение. – egmont 20 January 2018 в 17:29
  • 3
    Это именно то, что я хочу преобразовать в сочетание клавиш. Каждый параметр в контекстном меню должен иметь код, похожий на bash, который я хочу преобразовать в скрипт. – subtleseeker 20 January 2018 в 18:16
  • 4
    "похожий на" код " что? Я действительно потерялся здесь. Что вы пытаетесь совершить в первую очередь? (См. [D0] XY Проблема .) Графические приложения предназначены для использования в интерактивном режиме, а не из внешних скриптов. – egmont 20 January 2018 в 19:51
  • 5
    Спасибо, однако, я понял это сейчас. Поэтому я считаю, что действительно невозможно сделать то, что я хочу здесь. – subtleseeker 20 January 2018 в 20:46

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

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