никто не может больше напрямую вызывать на Chrome внешнее приложение, кроме как через
выделенное расширение, но я не мог найти тот, который не использует NPAPI.
существует еще один метод, который должен работать, который должен быть установлен в
операционная система: пользовательские протоколы, называемые также пользовательскими схемами URI.
схема URI-это часть, которую можно найти в начале URL-адреса.
Некоторые из них являются общими:http(s)://
,ftp://
,feed://
,mailto:
,news:
.
Список всех известные из них можно найти в списке IANA
схемы универсального идентификатора ресурса (URI).
все, что делают эти протоколы, это запускают приложение, которое обрабатывает параметр.
После успешного запуска приложение может использовать параметры командной строки для получения URI, запустившего его.
Обычным методом является вызов известного скрипта, который обрабатывает его аргумент
и запускает необходимую программу.
включая здесь учебник для Windows, Linux и Mac слишком тяжелый,
но вот несколько полезных ссылок:
на запрос постер, ниже есть Linux скрипт KDE, которые наборы
/path/prog
как обработчик протокола xyz://
. Он создает для KDE файл
$KDEDIR/share/services/xyz.protocol
и заполняет ее.
Настройки гнома также (если это возможно), так как некоторые приложения все еще используют их
даже если работает на KDE.
Скрипт адаптирован от github.
#!/usr/bin/env bash
#
# This script attempts to register a protocol handler for
# links that look like sgaction://blah.
#
# It should be sufficient for gnome apps like pidgin and kde apps
# like konqueror. Firefox seems to pay attention to the gnome
# settings at least to the degree that it recognizes links of the
# form $protocol://blah as hot-links, but it may still ask you to
# select the application the first time you click on one.
protocol=xyz
handler="/path/prog"
echo "Installing $protocol protocol handler for Gnome."
gconfTool="$(which gconftool-2)"
if [[ "$gconfTool" ]]; then
gconftool-2 --set --type=string /desktop/gnome/url-handlers/$protocol/command "$handler \"%s\""
gconftool-2 --set --type=bool /desktop/gnome/url-handlers/$protocol/enabled true
gconftool-2 --set --type=bool /desktop/gnome/url-handlers/$protocol/need-terminal false
else
echo "WARNING: gconftool-2 not found: skipping gnome url-handler registration."
fi
echo "Installing $protocol protocol handler for KDE."
kdeProtoDir=~/.kde/share/services
if [[ "$KDEDIR" ]]; then
kdeProtoDir="$KDEDIR/share/services"
fi
if [[ ! -e "$kdeProtoDir" ]]; then
mkdir -p "$kdeProtoDir"
fi
if [[ -e "$kdeProtoDir" ]]; then
kdeProtoFile="$kdeProtoDir/$protocol.protocol"
rm -f $kdeProtoFile
cat > $kdeProtoFile << EOF
[Protocol]
exec=$handler "%u"
protocol=$protocol
input=none
output=none
helper=true
listing=false
reading=false
writing=false
makedir=false
deleting=false
EOF
else
echo "WARNING: can't find or create KDE protocol directory: $kdeProtoDir: skipping KDE url-handler registration."
fi
echo "Done."