私は今、Webページを作成していますが、Chromiumなどのインストール済みUbuntuアプリ、ターミナルウィンドウ、Nautilusを開くコマンドをHTMLで入力できるかどうか疑問に思っています。
このようなことは可能ですか?ありがとう!
私は今、Webページを作成していますが、Chromiumなどのインストール済みUbuntuアプリ、ターミナルウィンドウ、Nautilusを開くコマンドをHTMLで入力できるかどうか疑問に思っています。
このようなことは可能ですか?ありがとう!
回答:
はい、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ランチャーを作成し、このランチャーをapp://
プロトコルハンドラーとして使用するようUbuntuに指示する必要があります。/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 Webページを使用して、ブラウザーからテストできます。
<!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://
スキームハンドラーを使用する前にWebサイトを使用するユーザーに提供できます。exec()
たとえば、PHPの関数を使用すると、そのスクリプトをブラウザーで実行できます。
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
。)
最初のリンクのパーツ:
登録する
Webアプリケーションをプロトコルハンドラーとして設定するのは難しいプロセスではありません。基本的に、WebアプリケーションはregisterProtocolHandler()を使用して、特定のプロトコルの潜在的なハンドラーとしてブラウザーに登録します。例えば:
navigator.registerProtocolHandler("mailto",
"https://www.example.com/?uri=%s",
"Example Mail");
パラメータは次のとおりです。
ブラウザがこのコードを実行すると、Webアプリケーションがプロトコルのハンドラーとして登録することを許可する許可を求めるプロンプトがユーザーに表示されます。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
少数に制限されていることもわかります。承認されたソリューションは、より良い解像度を提供します(もちろん、必要に応じていくつかの調整を行います)。