Как запустить браузер по умолчанию с терминала?

87

Мне было интересно, что это за команда терминала, чтобы открыть веб-браузер по умолчанию.

Лука
источник

Ответы:

93

sensible-browser это команда, которую вы ищете.

Evan
источник
Как насчет различий между sensible-utilsпакетом и системой альтернатив, найденных /etc/alternativesи измененных update-alternatives?
энзотиб
8
Для меня sensible-browserоткрывается Opera вместо pf по умолчанию Chrome. xdg-openработает как положено.
включи
2
то, что сказал @Incrop, все еще верно для Ubuntu 16.04, это открывает Firefox вместо моего браузера по умолчанию Chromium.
Андреас Хакер
2
sensible-browserне следует предпочтениям пользователя, настроенным в едином центре управления. xdg-openделает.
Танкист 六四
78

Поиском в гугле я нашел ответ.

xdg-open открывает файл или URL в предпочтительном приложении пользователя. Если указан URL-адрес, он будет открыт в предпочтительном веб-браузере пользователя. Если файл предоставлен, файл будет открыт в предпочтительном приложении для файлов этого типа. xdg-open поддерживает URL-адреса файлов, ftp, http и https.

xdg-open является частью пакета xdg-utils и уже установлен в Ubuntu 10.10.

Лука
источник
что означает XDG? Трудно запомнить, не зная этого.
Thupten
1
XDG расшифровывается как X Desktop Group aka freedesktop.org
Luca
Все еще работает с установкой Ubuntu 16.04 по умолчанию.
Андреас Хакер
1
если пользователь однажды настроил открытие html-файлов в текстовом редакторе по умолчанию, это не будет работать. ОП запрашивает способ открыть веб-браузер , а не приложение по умолчанию для HTML-файлов (хотя по умолчанию это то же самое)
phil294
Это будет работать на любом дистрибутиве gnu / linux, в котором есть оконный менеджер x-server (то есть почти все из них - например, debian, * buntu, fedora, manjaro, Arch и т. Д.)
flurbius,
14

Вы также можете использовать:

x-www-browser http://some-url.org

И он откроет URL в браузере по умолчанию.

Вениамин
источник
2
для меня в Ubuntu 16.04 это откроет Firefox, даже если Chromium установлен в качестве браузера по умолчанию в настройке «Приложения по умолчанию».
Андреас Хакер
4

При настройке Ubuntu по умолчанию на ум приходит только команда gnome-open.

gnome-open http://askubuntu.com
kounryusui
источник
4
С настройками Ubuntu по умолчанию, команды sensible-browser и xdg-open также работают.
marenostrum
1
Преимущество заключается в том, что вы можете использовать gnome-openпрактически все типы файлов, URI и каталоги. Это одна команда, чтобы учиться, вместо того, чтобы пытаться вспомнить о таких непонятных командах, какsensible-browser
Стефан Ласевский
6
@Stefan Lasiewski: xdg-openдолжен делать то же самое - на самом деле, он будет вызывать gnome-open, или kde-open, или как угодно, в зависимости от среды вашего рабочего стола. Таким образом, это более портативно.
Писквор
в Ubuntu 16.04 gnome-open по умолчанию не устанавливается
Andreas Hacker
1
gnome-open зависит от рабочего стола gnome, лучше использовать xdg в качестве более распространенного
flurbius
2

Я немного поиграл с этим. Существует проблема с gnome-open- он не будет вызывать веб-браузер по умолчанию, если вы не укажете URL. Это проблема, если вы хотите установить значок или ярлык, который всегда будет запускать браузер, который установлен по умолчанию. В других случаях вам может потребоваться установить его в качестве параметра для некоторых программ, которым требуется ссылка на веб-браузер и которые плохо работают с gnome-open(например:) acroread. Вы могли бы решить эту проблему с помощью любого x-www-browserили gnome-www-browserсистемы связи , которые вы можете создать с помощью update-alternatives, но те широкие настройки системы, а не пользователь конкретных (и они не синхронизированы со значениями , установленными через gnome-default-applications-properties. Все это можно решить, открыв sensible-browserисполняемый файл (который это на самом деле скрипт)

sudo gedit $(which sensible-browser)

и добавив это в начале:

#!/bin/bash
BROWSER=$(gconftool -g /desktop/gnome/url-handlers/http/command)
export BROWSER="${BROWSER//"\"%s\""/}"

Это позволит sensible-browserвсегда запускать указанный пользователем веб-браузер по умолчанию. (Я обнаружил, что gnome-default-applications-propertiesнекоторые ключи gconf изменяются в соответствии с установленным в данный момент браузером. Значение браузера по умолчанию можно получить с помощью любого из этих ключей, поэтому я /desktop/gnome/url-handlers/http/commandиспользовал его для заполнения $BROWSERпеременной (значение отбирается из "%s"части) .)

жилль
источник
1
Я не рекомендовал бы редактировать, /usr/bin/sensible-browserпоскольку этот ответ рекомендует. Это изменение будет перезаписано при обновлении системы.
Жиль
вместо того, чтобы пытаться установить модифицированный скрипт в системе пользователя, более реалистичным решением будет использование xdg-open согласно ответу Луки. Если вы укажете HTML-файл или URL, он откроет браузер - если вы укажете что-то еще, откроется соответствующее приложение для этого типа ресурса. Я сомневаюсь, что есть какая-либо веская причина открыть какой-либо файл в браузере, когда он будет лучше обрабатываться каким-либо другим приложением, либо по умолчанию, либо в соответствии с явным выбором пользователя. Если необходимо, вы можете заставить браузер открыть его с помощью x-www-browser (см. Ответ Бенджамина)
flurbius,
1

Просто вы можете найти это полезным. Резервный подход и один лайнер.

URL="https://www.url.com/some"; xdg-open $URL || sensible-browser $URL || x-www-browser $URL || gnome-open $URL

Хорошее чтение для не знакомых с логическими операторами https://www.howtogeek.com/269509/how-to-run-two-or-more-terminal-commands-at-once-in-linux/ .

; => запустить во всех случаях,

|| => выполнить, если предыдущая команда завершилась неудачно (или)

&& => запускаться только в случае успеха предыдущей команды

а также

var = someval -> установить переменную

$ var -> вызвать переменную

Мохаммед Аллал
источник
1
Попробуйте объяснить, что делает эта команда, чтобы другие, видящие это, знали больше о вашем ответе. Ссылки хороши, но вы должны убедиться, что основное содержание ссылки находится в вашем ответе, если оно является частью вашего ответа (в случае, если ссылка умирает в будущем).
Ззач ...
1
@Zzzach ... сделано! и я понял Хотя это было просто.
Мохаммед Аллал