Как открыть файл с помощью системного веб-браузера?

Я сделал функцию, которая создает HTML-файл. Как открыть его в браузере в системе пользователя?

В Python я бы импортировал webbrower и затем вызвал webbrowser.open("file.html").

Как добиться такого же результата в джинне?

2 ответа

Решение

Питон webbrowser Модуль - это кроссплатформенный способ открытия окна браузера. Я не знаю подобного кроссплатформенного модуля для Genie или Vala, поэтому вам придется использовать команды, специфичные для платформы.

На платформе Linux xdg-open это команда для стандартного открытия приложения на рабочих столах. Это должно работать на современных версиях Gnome, KDE, XFCE и других.

Начиная с GLib 2.40, предпочтительным способом открыть внешнюю команду в Genie является использование GSub-процесса GLib GIO. В Genie это будет что-то вроде:

init
    try
        var command = new Subprocess( SubprocessFlags.NONE,
                                      "xdg-open",
                                      "http://stackru.com/tags/genie/"
                                      )
        command.wait()
    except error:Error
        print error.message

Это должно быть скомпилировано с пакетом GIO:

valac --pkg gio-2.0 my_xdg_open_example.gs

Приведенный выше пример ожидает завершения команды, GSubprocess может использоваться асинхронно. Вы также можете легко получить доступ к STDIN, STDOUT и STDERR. См. Подпроцесс - Valadoc и SubprocessFlags - Valadoc

Это также можно использовать для открытия локальных файлов в веб-браузере, если MIME-тип для этого файла настроен на открытие в браузере. HTML-файлы должны быть в порядке.

Один из возможных вариантов для Linux:

Process.spawn_command_line_async ("sensible-browser file.html")

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