Я зараз створюю веб-сторінку, і мені цікаво, чи можна ввести команду в HTML, яка відкриє встановлений додаток Ubuntu, як Chromium, або вікно терміналу, або Nautilus.
Чи можливо щось подібне? Спасибі!
Я зараз створюю веб-сторінку, і мені цікаво, чи можна ввести команду в HTML, яка відкриє встановлений додаток Ubuntu, як Chromium, або вікно терміналу, або Nautilus.
Чи можливо щось подібне? Спасибі!
Відповіді:
Так, ви можете, додавши новий обробник протоколу у свій Ubuntu. Наступний метод покаже вам, як зареєструвати процес відкриття програми якapp://[application_name]
обробника протоколу в Ubuntu.
У термінальному виконанні:
mkdir -p bin
Ця команда зробить bin
каталог у вашомуhome
папці, якщо у вас його ще немає.
Після запуску:
gedit ~/bin/open_app.sh
Це створить новий файл open_app.sh
у gedit.
Скопіюйте та вставте такий сценарій у новий створений файл:
#!/bin/bash
if [[ "$1" != "app://" ]]; then
app=${1#app://}
nohup "$app" &>/dev/null &
else
nohup gnome-terminal &>/dev/null &
fi
Збережіть файл і закрийте його.
Поверніться в термінал і запустіть:
chmod +x ~/bin/open_app.sh
надати виконувати доступ до сценарію.
Тепер ви повинні створити запуску .desktop для вищевказаного сценарію і сказати Ubuntu використовувати цей запуск як app://
обробник протоколу. Створіть /usr/share/applications/appurl.desktop
файл за допомогою наступної команди:
sudo -H gedit /usr/share/applications/appurl.desktop
і додайте наступний вміст:
[Desktop Entry]
Name=TerminalURL
Exec=/home/radu/bin/open_app.sh %u
Type=Application
NoDisplay=true
Categories=System;
MimeType=x-scheme-handler/app;
Збережіть файл і закрийте його.
У наведеному вище файлі обробник схеми лінійного MimeType=x-scheme-handler/app;
реєстру app://
, але для того, щоб він працював, нам слід оновити кеш баз даних mime типів, виконавши команду:
sudo update-desktop-database
Тепер все повинно працювати. Щоб перевірити, що він працює з терміналу, запустіть, наприклад, цю команду:
xdg-open 'app://gedit'
Ви можете протестувати в браузері, використовуючи, наприклад, таку веб-сторінку 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>
Результат:
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"
)
Так, це називається "Веб-обробники протоколів". Вам потрібен Chrome 13 або Firefox 3.0 або новішої версії. Я бачив, як використовується для відкриття LibreOffice.
Як Mozilla, так і updates.html5rocks мають пояснення про те, як це працює. (Відкрийте в Chrome / Chromium, chrome://settings/handlers
і він покаже список поточних обробників. Firefox відобразить їх у списку about:config
.)
Частини з 1-го посилання:
Реєстрація
Налаштування веб-програми як обробника протоколу не є складним процесом. В основному веб-додаток використовує registerProtocolHandler (), щоб зареєструватися в браузері як потенційний обробник даного протоколу. Наприклад:
navigator.registerProtocolHandler("mailto",
"https://www.example.com/?uri=%s",
"Example Mail");
Де параметри:
Коли браузер виконує цей код, він повинен відображати запит для користувача, запитуючи дозволу, щоб веб-додаток зареєструвався як обробник протоколу. 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>
scheme
обмеження обмежено лише кількома. Прийняте рішення забезпечить кращу роздільну здатність (звичайно, з певними перетвореннями у міру необхідності).