Я сейчас создаю веб-страницу, и мне интересно, можно ли ввести в HTML команду, которая откроет установленное приложение Ubuntu, такое как Chromium, или окно терминала, или Nautilus.
В Windows это было, но только если вы запустили IExplorer, но из-за того, что веб-страница является текстовой только с небольшим количеством серверной магии, это ограничивает возможности браузера. Я уверен, что кто-то придумает что-то. Java приложение может быть?
SimplySimon
1
Возможно, вам следует уточнить, в какой среде вы работаете, поскольку в данный момент она очень широка. Например, вы можете запустить html-страницу в webkit-webview, которая может быть подключена к приложению на основе Python и т. Д. И т. Д.
fossfreedom
Хммм ... Я предположил чистый HTML @fossfreedom>: - D
Rinzwind
Да, это просто базовая HTML-страница. Нет базы данных или что-нибудь.
Я Сердце Ubuntu
Если это поможет, сайт будет для пользователей Linux. Любой мог бы использовать это естественно, но я делаю это строго для пользователей Linux / Ubuntu. Кажется достаточно простым. Запустите приложение Ubuntu, такое как терминал или калькулятор, по ссылке на веб-странице. Например, если я сделаю «apt: // chromium-browser», откроется страница Chromium программных центров Ubuntu. Итак, мы знаем, что можем запустить хотя бы USC из HTML. А как насчет приложений Ubuntu / Linux?
Я Сердце Ubuntu
Ответы:
21
Да, вы можете добавить новый обработчик протокола в Ubuntu. Следующий метод покажет вам, как зарегистрировать процесс открытия приложения в качестве app://[application_name]обработчика протокола в Ubuntu.
1. Создайте скрипт запуска приложения
В терминале запустить:
mkdir -p bin
Эта команда создаст binкаталог в вашей homeпапке, если у вас его еще нет.
После запуска:
gedit ~/bin/open_app.sh
Это создаст новый файл open_app.shв gedit.
Скопируйте и вставьте следующий скрипт в новый созданный файл:
Теперь вы должны создать модуль запуска .desktop для вышеуказанного сценария и указать Ubuntu использовать этот модуль запуска в качестве app://обработчика протокола. Создайте /usr/share/applications/appurl.desktopфайл, используя следующую команду:
В указанном файле, линии MimeType=x-scheme-handler/app;регистра app://обработчика схемы, но чтобы заставить его работать , мы должны обновить мим кэш типа базы данных, выполнив команду:
sudo update-desktop-database
4. Тест с терминала
Теперь все должно работать. Чтобы проверить, работает ли он из терминала, запустите, например, эту команду:
xdg-open 'app://gedit'
4. Тест из браузера с использованием HTML
Вы можете проверить из браузера, используя, например, следующую веб-страницу HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Open some applications</title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>
<h3>Open some applications in Ubuntu from HTML</h3>
<p>Open terminal: <a title="Open" href="app://">app://</a>
(equivalent with: <a title="Open" href="app://gnome-terminal">app://gnome-terminal</a>)</p>
<p>Open Nautilus: <a title="Open" href="app://nautilus">app://nautilus</a></p>
<p>Open Chromium: <a title="Open" href="app://chromium-browser">app://chromium-browser</a></p>
<p>Open Ubuntu Software Center: <a title="Open" href="app://software-center">app://software-center</a>
(equivalent with: <a title="Open" href="apt://">apt://</a>)</p>
<p>...and so on</p>
</body>
</html>
Очень очень хорошо. 1 небольшая проблема: пользователи, использующие веб-сайт, не будут иметь таких скриптов, пусковых установок и пантомимы. Таким образом, вы также должны предоставить их каким-либо образом с веб-сайта. С помощью navigator.registerProtocolHandler должна быть возможность сделать это без установки программного обеспечения. Но это выглядит очень очень красиво :-D
Rinzwind
@Rinzwind Хорошо, сценарий, который автоматизирует шаги 1, 2 и 3, может быть предоставлен пользователям, использующим веб-сайт, прежде чем использовать app://обработчик схемы. exec()Например, используя функцию из PHP, этот скрипт можно запустить в браузере.
Раду Рэдяну
exec () будет работать на стороне сервера, а не на стороне клиента. Если вы попробуете на стороне клиента, вы обнаружите, что безопасность браузеров предотвратит запуск скриптов
NGRhodes
1
Здорово! Не забудьте изменить raduсвое имя в appurl.desktop. Как будто:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
@ RaduRădeanu Можно ли запустить приложение вместо приложения? Например, app://shell-exec myscript.shгде shell-exec - это просто другой скрипт ( #!/bin/sh "$@" exec "$SHELL")
Хуршид Алам
5
Да, это называется «обработчики протоколов на основе Web». Вам нужен Chrome 13 или Firefox 3.0 или выше. Я видел, как раньше открывал LibreOffice.
И Mozilla, и updates.html5rocks объясняют, как это работает. (Откройте в Chrome / Chromium, chrome://settings/handlersи он покажет список текущих обработчиков. Firefox перечислит их в about:config.)
Запчасти из 1-й ссылки:
регистрирующий
Настройка веб-приложения в качестве обработчика протокола не является сложным процессом. По сути, веб-приложение использует registerProtocolHandler (), чтобы зарегистрироваться в браузере в качестве потенциального обработчика для данного протокола. Например:
Шаблон URL, используемый в качестве обработчика. "% S" заменяется ссылкой на ссылку, и для результирующего URL-адреса выполняется GET.
Удобное имя для обработчика протокола.
Когда браузер выполняет этот код, он должен отобразить пользователю подсказку, запрашивающую разрешение, чтобы веб-приложение могло зарегистрироваться в качестве обработчика протокола. Firefox отображает подсказку в области панели уведомлений.
пример
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html lang="en">
<head>
<title>Web Protocol Handler Sample - Register</title>
<script type="text/javascript">
navigator.registerProtocolHandler("fake", "http://starkravingfinkle.org/projects/wph/handler.php?value=%s", "Fake Protocol");
</script>
</head>
<body>
<h1>Web Protocol Handler Sample</h1>
<p>This web page will install a web protocol handler for the <code>fake:</code> protocol.</p>
</body>
</html>
Ницца. Есть ли способ передать параметры в локальное приложение?
Алик Эльзин-килака
1
Похоже, что это позволяет приложения, такие как веб-мейлер, но не внешние (локальные) приложения.
geek-merlin
Читайте подробности здесь и здесь . Кроме того, по первой ссылке вы также увидите, что schemeона ограничена несколькими. Принятое решение обеспечит лучшее разрешение (конечно, с некоторыми изменениями по мере необходимости).
Ответы:
Да, вы можете добавить новый обработчик протокола в Ubuntu. Следующий метод покажет вам, как зарегистрировать процесс открытия приложения в качестве
app://[application_name]
обработчика протокола в Ubuntu.1. Создайте скрипт запуска приложения
В терминале запустить:
Эта команда создаст
bin
каталог в вашейhome
папке, если у вас его еще нет.После запуска:
Это создаст новый файл
open_app.sh
в gedit.Скопируйте и вставьте следующий скрипт в новый созданный файл:
Сохраните файл и закройте его.
Вернитесь в терминал и запустите:
предоставить доступ для выполнения сценария.
2. Создайте файл .desktop для запуска приложений
Теперь вы должны создать модуль запуска .desktop для вышеуказанного сценария и указать Ubuntu использовать этот модуль запуска в качестве
app://
обработчика протокола. Создайте/usr/share/applications/appurl.desktop
файл, используя следующую команду:и добавьте следующее содержание:
Сохраните файл и закройте его.
3. Обновить базу данных MIME-типов
В указанном файле, линии
MimeType=x-scheme-handler/app;
регистраapp://
обработчика схемы, но чтобы заставить его работать , мы должны обновить мим кэш типа базы данных, выполнив команду:4. Тест с терминала
Теперь все должно работать. Чтобы проверить, работает ли он из терминала, запустите, например, эту команду:
4. Тест из браузера с использованием HTML
Вы можете проверить из браузера, используя, например, следующую веб-страницу HTML:
Результат:
источник
app://
обработчик схемы.exec()
Например, используя функцию из PHP, этот скрипт можно запустить в браузере.radu
свое имя вappurl.desktop
. Как будто:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
app://shell-exec myscript.sh
где shell-exec - это просто другой скрипт (#!/bin/sh "$@" exec "$SHELL"
)Да, это называется «обработчики протоколов на основе Web». Вам нужен Chrome 13 или Firefox 3.0 или выше. Я видел, как раньше открывал LibreOffice.
И Mozilla, и updates.html5rocks объясняют, как это работает. (Откройте в Chrome / Chromium,
chrome://settings/handlers
и он покажет список текущих обработчиков. Firefox перечислит их вabout:config
.)Запчасти из 1-й ссылки:
регистрирующий
Настройка веб-приложения в качестве обработчика протокола не является сложным процессом. По сути, веб-приложение использует registerProtocolHandler (), чтобы зарегистрироваться в браузере в качестве потенциального обработчика для данного протокола. Например:
Где параметры:
Когда браузер выполняет этот код, он должен отобразить пользователю подсказку, запрашивающую разрешение, чтобы веб-приложение могло зарегистрироваться в качестве обработчика протокола. Firefox отображает подсказку в области панели уведомлений.
пример
источник
scheme
она ограничена несколькими. Принятое решение обеспечит лучшее разрешение (конечно, с некоторыми изменениями по мере необходимости).