Apakah mungkin untuk membuka aplikasi Ubuntu dari HTML?


16

Saya sedang membuat halaman web sekarang dan saya bertanya-tanya apakah mungkin untuk memasukkan perintah dalam HTML yang akan membuka aplikasi Ubuntu yang diinstal seperti Chromium, atau jendela terminal, atau Nautilus.

Apakah hal seperti ini mungkin? Terima kasih!


Di Windows, tetapi hanya jika Anda menjalankan IExplorer, tetapi karena fakta bahwa halaman web hanya teks dengan sedikit sisi server, ini membatasi kemampuan browser. Saya yakin seseorang akan datang dengan sesuatu. Aplikasi Java mungkin?
SimplySimon

1
Anda mungkin harus mengklarifikasi dalam lingkungan apa yang Anda jalankan karena sangat luas saat ini. Misalnya - Anda dapat menjalankan halaman html di dalam webkit-webview yang dapat dihubungkan ke aplikasi berbasis python dll. Dll
fossfreedom

Hmmm ... Saya menganggap HTML murni @fossfreedom>: - D
Rinzwind

Ya, ini hanya halaman web HTML dasar. Tidak ada database atau apa pun.
I Heart Ubuntu

Jika ada bantuan, situs ini akan untuk pengguna linux. Siapa pun dapat menggunakannya secara alami, tapi saya merancang ini hanya untuk pengguna linux / Ubuntu. Tampak cukup sederhana. Luncurkan aplikasi Ubuntu seperti terminal atau kalkulator dari tautan di halaman web. Sebagai contoh jika saya melakukan "apt: // chromium-browser" itu membuka halaman Ubuntu Software Center Chromium. Jadi kami tahu kami dapat meluncurkan setidaknya USC dari HTML. Bagaimana dengan aplikasi Ubuntu / linux?
I Heart Ubuntu

Jawaban:


21

Ya, Anda bisa dengan menambahkan pengendali protokol baru di Ubuntu Anda. Metode berikut akan menunjukkan kepada Anda cara mendaftar proses membuka aplikasi sebagai app://[application_name]pengendali protokol di Ubuntu.

1. Buat skrip peluncur aplikasi

  • Dalam terminal run:

    mkdir -p bin
    

    Perintah ini akan membuat bindirektori di homefolder Anda jika Anda belum memilikinya.

  • Setelah lari:

    gedit ~/bin/open_app.sh
    

    Ini akan membuat file baru open_app.shdi gedit.

  • Salin dan rekatkan skrip berikut ke file yang baru dibuat:

    #!/bin/bash
    
    if [[ "$1" != "app://" ]]; then 
        app=${1#app://}
        nohup "$app" &>/dev/null &
    else 
        nohup gnome-terminal &>/dev/null &
    fi
  • Simpan file dan tutup.

  • Kembali ke terminal dan jalankan:

    chmod +x ~/bin/open_app.sh
    

    untuk memberikan akses eksekusi untuk skrip.

2. Buat file .desktop untuk peluncur aplikasi

Sekarang Anda harus membuat peluncur .desktop untuk skrip di atas, dan beri tahu Ubuntu untuk menggunakan peluncur ini sebagai app://penangan protokol. Buat /usr/share/applications/appurl.desktopfile menggunakan perintah berikut:

sudo -H gedit /usr/share/applications/appurl.desktop

dan tambahkan konten berikut:

[Desktop Entry]
Name=TerminalURL
Exec=/home/radu/bin/open_app.sh %u
Type=Application
NoDisplay=true
Categories=System;
MimeType=x-scheme-handler/app;

Simpan file dan tutup.

3. Refresh database tipe mime

Dalam file di atas, pengendali skema MimeType=x-scheme-handler/app;register baris app://, tetapi untuk membuatnya bekerja kita harus memperbarui cache database tipe mime dengan mengeksekusi perintah:

sudo update-desktop-database 

4. Tes dari terminal

Sekarang semuanya harus bekerja. Untuk menguji apakah ia bekerja dari terminal, jalankan misalnya perintah ini:

xdg-open 'app://gedit'

4. Uji dari browser menggunakan HTML

Anda dapat menguji dari browser dengan menggunakan misalnya halaman web HTML berikut:

<!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>

Hasil:

aplikasi://


2
Sangat sangat bagus. 1 masalah kecil: pengguna yang menggunakan situs web tidak akan memiliki skrip, peluncur dan tipe pantomim tersebut. Jadi, Anda juga perlu menyediakannya dengan cara tertentu dari situs web. Dengan navigator.registerProtocolHandler seharusnya dapat dilakukan tanpa menginstal perangkat lunak. Tapi itu terlihat sangat sangat bagus :-D
Rinzwind

@Rinzwind Nah, skrip yang mengotomatiskan langkah 1, 2 dan 3 dapat diberikan kepada pengguna menggunakan situs web sebelumnya untuk menggunakan app://penangan skema. Menggunakan exec()fungsi dari PHP, misalnya, skrip itu dapat dibuat untuk dijalankan di browser.
Radu Rădeanu

exec () akan menjalankan sisi server, bukan sisi klien. Jika Anda mencoba sisi klien, Anda akan menemukan keamanan browser akan mencegah skrip berjalan
NGRhodes

1
Keren! Ingatlah untuk mengubah radunama Anda di appurl.desktop. Seperti:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u

@ RaduRădeanu Apakah mungkin untuk meluncurkan skrip alih-alih aplikasi? Misalnya di app://shell-exec myscript.shmana shell-exec hanyalah sebuah skrip lain ( #!/bin/sh "$@" exec "$SHELL")
Khurshid Alam

5

Ya, ini disebut "pengendali protokol berbasis web". Anda perlu Chrome 13 atau Firefox 3.0 atau lebih tinggi. Saya telah melihatnya digunakan untuk membuka LibreOffice.

Baik Mozilla maupun updates.html5rocks memiliki penjelasan tentang cara kerjanya. (Buka di Chrome / Chromium chrome://settings/handlersdan itu akan menampilkan daftar penangan saat ini. Firefox akan mencantumkannya di about:config.)

Bagian dari tautan 1:

Mendaftar

Menyiapkan aplikasi web sebagai pengendali protokol bukanlah proses yang sulit. Pada dasarnya, aplikasi web menggunakan registerProtocolHandler () untuk mendaftar sendiri dengan browser sebagai penangan potensial untuk protokol yang diberikan. Sebagai contoh:

navigator.registerProtocolHandler("mailto",
                              "https://www.example.com/?uri=%s",
                              "Example Mail");

Di mana parameternya adalah:

  • Protokolnya.
  • Template URL, digunakan sebagai penangan. "% S" diganti dengan href dari tautan dan GET dieksekusi pada URL yang dihasilkan.
  • Nama ramah pengguna untuk pengendali protokol.

Ketika browser mengeksekusi kode ini, itu akan menampilkan prompt kepada pengguna, meminta izin untuk memungkinkan aplikasi web untuk mendaftar sebagai penangan untuk protokol. Firefox menampilkan prompt di area bilah notifikasi.

Contoh

<!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>

Bagus. Apakah ada cara untuk mengirimkan params ke aplikasi lokal?
AlikElzin-kilaka

1
Ini sepertinya memungkinkan aplikasi seperti webmailer, tetapi tidak ada aplikasi eksternal (lokal).
geek-merlin

Baca detailnya di sini dan di sini . Selain itu, pada tautan pertama , Anda juga akan melihat bahwa tautan schemeterbatas hanya beberapa. Solusi yang diterima akan memberikan resolusi yang lebih baik (tentu saja dengan beberapa penyesuaian sesuai kebutuhan).
Fr0zenFyr

Untuk yang penasaran, lihat spesifikasi konsorsium W3
Fr0zenFyr
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.