В программе, которую я пишу, я хочу предложить функциональность, чтобы открыть каталог, в котором находится файл, который я сейчас обрабатываю, и автоматически выбрать этот файл (чтобы пользователю не нужно было искать его).
Я знаю, что могу открыть каталог в файловом менеджере по умолчанию, используя
xdg-open /path/to/directory
Я знаю, что могу открыть каталог в nautilus и выбрать файл, используя
nautilus /path/to/file.txt
Я думал, что я мог бы использовать
xdg-mime query default inode/directory
чтобы получить файловый менеджер по умолчанию и - если это nautilus - вызвать его, как показано выше. Но, несмотря на то, что nautilus является настройкой по умолчанию в моей системе ( xdg-open
открывает nautilus и меню мест в оболочке gnome), xdg-mime
возвращается Thunar.desktop
. (Я пытался, find / -name Thunar.desktop -mount 2>/dev/null
но ничего не нашел.)
Кроме того , я не знаю , как открыть каталог и выберите подраздел каталога в Nautilus (с упомянутым выше подходом было бы открыть поддиректорию).
Как я могу открыть каталог в файловом менеджере по умолчанию и выбрать файл в этом каталоге (если выбор каталога тоже возможен, это было бы здорово, но для этого приложения не требуется) или, по крайней мере, найти файловый менеджер по умолчанию, чтобы я можете позвонить напрямую?
mimeapps.list
. Не могли бы вы объяснить, в чем заключаются эти ассоциации: «если после обработки всех файлов мы еще не нашли приложение по умолчанию, выберите наиболее предпочтительное приложение (в соответствии с ассоциациями), которое поддерживает тип»? Знаете ли вы, как узнать, какая программа будет запущена автоматически, без необходимости переопределения этого алгоритма?Возможно, вы захотите использовать dbus для открытия вашего файла, так как он быстро становится все более популярным.
Концепция файлового менеджера «по умолчанию» действительно существует только в том случае, если вы сосредоточены исключительно на
xdg-mime
dbus, и, действительно, на большинстве приложений, история принимает другой поворот, и концепция файлового менеджера «по умолчанию» перестает существовать.Вот как вы открываете файл (
/home/me/path/to/folder/or/file
) в файловом менеджере (по умолчанию?), Используя dbus:Эта команда ищет любой сервис dbus, который реализует
org.freedesktop.FileManager1
интерфейс, и вызывает его с указанием пути к файлу, который вы хотите открыть.Причина, по которой я ставлю знак вопроса после дефолта, заключается в том, что dbus не уважает концепцию файлового менеджера по умолчанию; все, что он делает, это отправляет вызов первой найденной службе, которая реализует интерфейс и позволяет ему обрабатывать операцию. Теперь может оказаться, что приложение, которое оно выбирает, является вашим файловым менеджером «по умолчанию», но это не всегда является гарантией.
Большинство современных приложений будут использовать
dbus
по умолчанию, а затем использовать вxdg-mime
случае сбоя вызова dbus, поэтому я рекомендую вам это сделать.источник