Запустить веб-страницу из моего приложения в Linux

У меня есть приложение, которое запускает веб-страницу в «текущем» браузере, когда пользователь выбирает ее. Эта часть моего приложения отлично работает в версии для Windows, но я не могу понять, как это сделать в сборке Linux.

Прямо сейчас версия Linux жестко запрограммирована для Firefox в определенном каталоге и каждый раз запускает новый экземпляр и не показывает URL, который я передаю. Я бы хотел, чтобы она НЕ запускала новую версию каждый раз, а просто открывала новая страница в текущей открытой, если она уже запущена.

Для окон я использую:

ShellExecute(NULL,"open",filename,NULL,NULL,SW_SHOWNORMAL);

Для Linux я сейчас использую:

pid_t pid;
char *args[2];

char *prog=0;
char firefox[] = {"/usr/bin/firefox"};

if (strstri(filename,".html"))
    prog=firefox;

if (prog)
{
    args[0]=(char *)filename;
    args[1]=0;
    pid=fork();
    if (!pid)
        execvp(prog,args);

}
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
5
0
3 759
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Если вы пишете это для современных дистрибутивов, вы можете использовать xdg-open:

$ xdg-open http://google.com/

Если вы используете более старую версию, вам придется использовать команду для рабочего стола, например gnome-open или exo-open.

так что могу ли я просто изменить имя программы с «/ usr / bin / firefox» на «xdg-open»?

KPexEA 01.10.2008 06:33

Измените его на / usr / bin / xdg-open

John Millikin 01.10.2008 07:47

Если вы не хотите задействовать дополнительные приложения, просто используйте встроенные команды удаленного управления firefox. Например:

firefox -remote 'openurl(http://stackoverflow.com)'

См. Подробное использование на http://www.mozilla.org/unix/remote.html

xdg-open - это новый стандарт, и вы должны использовать его, когда это возможно. Однако, если дистрибутиву больше нескольких лет, он может не существовать, а альтернативные механизмы включают $ BROWSER (более старый стандарт), gnome-open (Gnome), kfmclient exec (KDE), exo-open (Xfce), или самостоятельно разбирать mailcap (обработчик text / html, скорее всего, будет браузером).

При этом большинство приложений не утруждают себя такой большой работой - если они созданы для конкретной среды, они используют механизмы запуска этой среды. Например, в Gnome есть gnome_url_show, в KDE есть KRun, большинство терминальных программ (например, mutt) анализируют mailcap и т. д. Жесткое кодирование браузера и разрешение дистрибьютору или пользователю отменять значение по умолчанию также является обычным явлением.

Я не предлагаю жестко кодировать это, но если вы действительно хотите открыть новую вкладку в Firefox, вы можете использовать «firefox -new-tab $ URL».

Примечание для xdg-open: проверьте http://portland.freedesktop.org/wiki/, раздел «Использование Xdg-utils»; в нем говорится, что вы можете включить сценарий xdg-open в свое собственное приложение и использовать его в качестве запасного варианта, если в целевой системе еще не установлен xdg-open.

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