Как программно определить приложения по умолчанию в Linux - PullRequest
7 голосов
/ 07 января 2012

В Linux, как я могу определить текстовый редактор по умолчанию, терминал и т. Д.?

это зависит от дистрибутива?

Ответы [ 6 ]

3 голосов
/ 07 января 2012

Некоторое время назад я получил доступ к списку довольно уродливо, и я уверен, что это не лучший способ. Опции хранятся в файле с именем defaults.list (я думаю, что это обычно так). Расположение менее общее, я думаю, оно находится в / usr / share / Applications / в моей системе Ubuntu, хотя, по-моему, оно появляется в другом месте. Затем я обработал его как текстовый файл.

2 голосов
/ 07 января 2012

Порядок разрешения: $EDITOR -> editor -> некоторый предопределенный список редакторов консоли. В Debian / Ubuntu sensible-editorsensible-browser и sensible-pager) выполнят поиск за вас, включая поиск правильных переменных среды. Аналогичные переменные $PAGER, $SHELL, $BROWSER. Для поиска ассоциации файлов вы можете использовать xdg-open.

1 голос
/ 03 мая 2015

Подсказка из ответа @ Bowler и чисто bash:

editor=$(grep "text/plain" -r -i -I /usr/share/applications/defaults.list | awk -F';' '{print $1}' | awk -F'.desktop' '{print $1}' | awk -F'=' '{print $2}')
1 голос
/ 07 января 2012

Это работает в Ubuntu / GNOME:

>>> query_lines = subprocess.check_output(['update-alternatives',
                                           '--query',
                                           'gnome-text-editor']).split('\n')
>>> bestlist = filter(lambda l: 'Best' in l, query_lines)
>>> bestlist[0].split()[1]
'/usr/bin/gedit'

Если не в GNOME, вы могли бы по крайней мере получить редактор командной строки:

>>> query_lines = subprocess.check_output(['update-alternatives',
...                                        '--query',
...                                        'editor']).split('\n')
>>> bestlist = filter(lambda l: 'Best' in l, query_lines)
>>> bestlist[0].split()[1]
'/bin/nano'
1 голос
/ 07 января 2012

Я не думаю, что понятие default редактор или терминал имеет смысл. Для редактора существует соглашение об использовании $EDITOR, когда оно определено.

В Debian и связанных с ним (например, Ubuntu, Mint) у вас есть пути, такие как /usr/bin/editor и /usr/bin/x-terminal-emulator по символическим ссылкам (через символические ссылки в /etc/alternatives/) по умолчанию для некоторых систем.

См. Также Ответ Дакава

1 голос
/ 07 января 2012

Пользовательские переменные среды сообщают вам, что.

  • $ EDITOR дает вам команду для запуска в качестве текстового редактора;
  • $ BROWSER дает вам браузер
  • $ PAGER дает вам пейджер (например, больше или меньше).

Это, однако, действительно для программ командной строки, в то время как обычно среды рабочего стола используют свои собственные (внутренние) переменные.

Также в python вы можете читать переменные окружения, используя os.getenv.

...