Чи можливо відкрити додаток Ubuntu з HTML?


16

Я зараз створюю веб-сторінку, і мені цікаво, чи можна ввести команду в HTML, яка відкриє встановлений додаток Ubuntu, як Chromium, або вікно терміналу, або Nautilus.

Чи можливо щось подібне? Спасибі!


У Windows це було, але лише у тому випадку, якщо ви запустили IExplorer, але через те, що веб-сторінка є текстовою лише з невеликою магією на стороні сервера, це обмежує те, на що здатний браузер. Я впевнений, що хтось щось придумає. Додаток Java може бути?
SimplySimon

1
Можливо, вам слід уточнити, в якому середовищі ви працюєте, оскільки воно наразі дуже широке. Наприклад - ви можете запустити сторінку html в webkit-webview, яку можна було б підключити до програми на основі пітона тощо тощо
fossfreedom

Гммм ... я припустив чистий HTML @fossfreedom>: - D
Rinzwind

Так, це лише основна веб-сторінка HTML. Ніяких баз даних чи нічого.
I Heart Ubuntu

Якщо це допоможе, сайт буде призначений для користувачів Linux. Будь-хто міг би використовувати його природним шляхом, але я розробляю це строго для користувачів Linux / Ubuntu. Здається, досить просто. Запустіть додаток Ubuntu, наприклад термінал або калькулятор, за посиланням на веб-сторінці. Наприклад, якщо я роблю "apt: // Chrome-браузер", він відкриє сторінку програмного забезпечення Ubuntu Chromium. Тож ми знаємо, що можемо запустити принаймні USC з HTML. Що з програмами Ubuntu / linux?
I Heart Ubuntu

Відповіді:


21

Так, ви можете, додавши новий обробник протоколу у свій Ubuntu. Наступний метод покаже вам, як зареєструвати процес відкриття програми якapp://[application_name] обробника протоколу в Ubuntu.

1. Створіть скрипт запуску програми

  • У термінальному виконанні:

    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
    

    надати виконувати доступ до сценарію.

2. Створіть .desktop файл для запуску програм

Тепер ви повинні створити запуску .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;

Збережіть файл і закрийте його.

3. Оновлення бази даних типів mime

У наведеному вище файлі обробник схеми лінійного MimeType=x-scheme-handler/app;реєстру app://, але для того, щоб він працював, нам слід оновити кеш баз даних mime типів, виконавши команду:

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>

Результат:

додаток: //


2
Дуже-дуже хороший. 1 невелика проблема: користувачі, які використовують веб-сайт, не матимуть цих скриптів, запусків та типів mime. Тому вам також потрібно якось надсилати їх із веб-сайту. За допомогою navigator.registerProtocolHandler слід мати можливість без встановлення програмного забезпечення. Але це виглядає дуже приємно :-D
Rinzwind

@Rinzwind Ну, сценарій, що автоматизує кроки 1, 2 і 3, може бути наданий користувачам, які використовують веб-сайт, перш ніж використовувати app://обробник схем. exec()Наприклад, використовуючи функцію PHP, цей скрипт можна зробити для запуску в браузері.
Radu Rădeanu

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

Так, це називається "Веб-обробники протоколів". Вам потрібен 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");

Де параметри:

  • Протокол.
  • Шаблон URL-адреси, який використовується як обробник. "% S" замінюється на href посилання, і GET виконується за результатом URL.
  • Зручне ім'я для обробника протоколу.

Коли браузер виконує цей код, він повинен відображати запит для користувача, запитуючи дозволу, щоб веб-додаток зареєструвався як обробник протоколу. 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обмеження обмежено лише кількома. Прийняте рішення забезпечить кращу роздільну здатність (звичайно, з певними перетвореннями у міру необхідності).
Fr0zenFyr

Для цікавих звертайтесь до специфікацій консорціуму W3
Fr0zenFyr,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.