Показать GNOME Open с диалоговым окном

Есть ли способ программно открыть диалоговое окно «Открыть с помощью» для данного файла? Я имею в виду диалоговое окно, которое вы получаете, когда щелкаете правой кнопкой мыши файл в Nautilus и выбираете «Открыть с помощью».

Я предпочитаю использовать простую команду оболочки, но также подойдет интерфейс API или DBUS. Я застрял с GNOME 2.28.2 на этом ПК, но меня также интересует решение для недавнего GNOME. Может быть, есть даже стандартизированное решение для нескольких Linux-рабочих компьютеров (что-то вроде xdg-open-as)?

Я пробовал gnome-open и xdg-open, но оба просто используют стандартную ассоциацию и не позволяют мне выбирать приложение.


person jdm    schedule 06.01.2016    source источник


Ответы (2)


Я не уверен, что понимаю ваш вопрос.

Если вы хотите, чтобы определенное приложение отображалось в меню «Открыть с помощью», вам необходимо зарегистрировать тип MIME для этого приложения с помощью xdg-mime, и тогда Nautilus покажет его.

Если вы хотите, чтобы меню, похожее на «Открыть с помощью», открывалось только для определенных файлов, вам следует написать расширение Nautilus (например, на Python или C). В коде расширения вы можете проверить такие вещи, как тип MIME, если выбрано несколько элементов и т. д. Nautilus предоставляет доступ к этой информации. См. Как создавать расширения nautilus C.

Если вы имеете в виду что-то другое, то, пожалуйста, перефразируйте свой вопрос :-)

person gpoo    schedule 09.02.2016
comment
Если щелкнуть файл правой кнопкой мыши и выбрать «Открыть с помощью/другого приложения...», откроется диалоговое окно. Я не хочу менять этот диалог, но я хочу открыть точно такой же диалог из командной строки (или какой-либо другой программы). - person jdm; 10.02.2016

Я тоже не смог найти такой инструмент командной строки, поэтому сделал его. Удивительно, но это действительно тривиально.

https://github.com/timgott/gtk-open-with

Если вы хотите сделать это программно в Gtk, потребуется всего несколько строк кода (пример с использованием привязок C++):

auto dialog = Gtk::AppChooserDialog(file);
int response = dialog.run();
if (response == Gtk::RESPONSE_OK)
    dialog.get_app_info()->launch(file);
person T - Gott    schedule 06.07.2021