HTML'den bir Ubuntu uygulaması açmak mümkün müdür?


16

Şu anda bir web sayfası oluşturuyorum ve HTML'de Chromium veya bir terminal penceresi veya Nautilus gibi yüklü bir Ubuntu uygulamasını açacak bir komut girmenin mümkün olup olmadığını merak ediyorum.

Böyle bir şey mümkün mü? Teşekkürler!


Windows'da öyleydi, ancak yalnızca IExplorer'ı çalıştırdıysanız, ancak bir web sayfasının sadece biraz sunucu tarafı sihriyle metin olması nedeniyle, bu bir tarayıcının yapabildiklerini sınırlar. Eminim birisi bir şey bulur. Java uygulaması olabilir mi?
SimplySimon

1
Belki şu anda çok geniş olduğu için hangi ortamda çalıştığınızı netleştirmelisiniz. Örneğin - webkit-webview içinde bir python tabanlı uygulama vb. Bağlı olabilir bir html sayfası çalışıyor olabilir
fossfreedom

Hmmm ... Saf HTML @fossfreedom> varsayım>: - D
Rinzwind

Evet, bu sadece temel bir HTML web sayfası. Veritabanları falan yok.
I Heart Ubuntu

Herhangi bir yardım varsa, site linux kullanıcıları için olacaktır. Herkes doğal olarak kullanabilir, ancak bunu kesinlikle linux / Ubuntu kullanıcıları için tasarlıyorum. Yeterince basit görünüyor. Bir web sayfasındaki bağlantıdan terminal veya hesap makinesi gibi bir Ubuntu uygulaması başlatın. Örneğin, "apt: // chromium-browser" yaparsam Ubuntu Yazılım Merkezleri Chromium Sayfasını açar. HTML'den en azından USC'yi başlatabileceğimizi biliyoruz. Ubuntu / linux uygulamaları ne olacak?
Ubuntu Kalp

Yanıtlar:


21

Evet, Ubuntu'nuza yeni bir protokol işleyici ekleyerek yapabilirsiniz. Aşağıdaki yöntem, bir uygulamayı app://[application_name]Ubuntu'da protokol işleyici olarak açma işlemini nasıl kaydedeceğinizi gösterecektir .

1. Uygulama başlatıcı komut dosyası oluşturma

  • Bir terminal çalışmasında:

    mkdir -p bin
    

    Bu komut, klasörünüz yoksa klasörünüzde bir bindizin oluşturur home.

  • Çalıştırdıktan sonra:

    gedit ~/bin/open_app.sh
    

    Bu işlem yeni dosyayı open_app.shgedit'te oluşturur.

  • Aşağıdaki komut dosyasını yeni oluşturulan dosyaya kopyalayıp yapıştırın:

    #!/bin/bash
    
    if [[ "$1" != "app://" ]]; then 
        app=${1#app://}
        nohup "$app" &>/dev/null &
    else 
        nohup gnome-terminal &>/dev/null &
    fi
  • Dosyayı kaydedin ve kapatın.

  • Terminale geri dönün ve çalıştırın:

    chmod +x ~/bin/open_app.sh
    

    komut dosyasına yürütme erişimi vermek için.

2. Uygulama başlatıcı için .desktop dosyası oluşturun

Şimdi yukarıdaki komut dosyası için bir .desktop başlatıcısı oluşturmanız ve Ubuntu'ya bu başlatıcıyı app://protokol işleyicisi olarak kullanmasını söylemeniz gerekir . /usr/share/applications/appurl.desktopAşağıdaki komutu kullanarak dosya oluşturun :

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

ve aşağıdaki içeriği ekleyin:

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

Dosyayı kaydedin ve kapatın.

3. MIME türleri veritabanını yenile

Yukarıdaki dosyada, satır MimeType=x-scheme-handler/app;kayıt app://şeması işleyicisi, ancak çalışmasını sağlamak için şu komutu çalıştırarak mime türleri veritabanı önbelleğini güncellemeliyiz:

sudo update-desktop-database 

4. Terminalden test edin

Şimdi her şey çalışmalı. Terminalden çalıştığını test etmek için, örneğin şu komutu çalıştırın:

xdg-open 'app://gedit'

4. HTML kullanarak tarayıcıdan test edin

Örneğin aşağıdaki HTML web sayfasını kullanarak tarayıcıdan test edebilirsiniz:

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

Sonuç:

app: //


2
Çok çok güzel. 1 küçük sorun: web sitesini kullanan kullanıcılar bu komut dosyalarına, başlatıcılara ve mime tiplerine sahip olmayacaklar. Bu yüzden bunları web sitesinden bir şekilde sağlamanız gerekir. Navigator.registerProtocolHandler ile yazılım yüklemeden yapılabilmelidir. Ama çok çok hoş görünüyor :-D
Rinzwind

@Rinzwind Peki, app://şema işleyicisini kullanmadan önce web sitesini kullanan kullanıcılara 1, 2 ve 3 adımlarını otomatikleştiren bir komut dosyası sağlanabilir . exec()Örneğin PHP'nin işlevini kullanarak bu komut dosyasını tarayıcıda çalıştırabilirsiniz.
Radu Rădeanu

exec (), istemci tarafında değil sunucu tarafında çalışacaktır. İstemci tarafını denerseniz, tarayıcıların komut dosyalarının çalışmasını engelleyeceğini göreceksiniz
NGRhodes

1
Güzel! Konumunda raduadınızı değiştirmeyi unutmayın appurl.desktop. Gibi:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u

@ RaduRădeanu Uygulama yerine komut dosyası başlatmak mümkün mü? Örneğin app://shell-exec myscript.sh, shell-exec sadece başka bir senaryo ( #!/bin/sh "$@" exec "$SHELL")
Khurshid Alam

5

Evet, buna "Web tabanlı protokol işleyicileri" denir. Chrome 13 veya Firefox 3.0 veya üst sürümüne ihtiyacınız var. LibreOffice'i açmak için kullandığını gördüm.

Hem Mozilla hem de updates.html5rocks , bunun nasıl çalıştığı hakkında bir açıklamaya sahiptir. (Chrome / Chromium'da açın chrome://settings/handlers, mevcut işleyicilerin bir listesini gösterecektir. Firefox bunları listeleyecektir about:config.)

1. bağlantıdan parçalar:

Kaydetme

Bir web uygulamasını protokol işleyici olarak ayarlamak zor bir süreç değildir. Temel olarak, web uygulaması kendisini belirli bir protokol için potansiyel bir işleyici olarak tarayıcıya kaydetmek için registerProtocolHandler () yöntemini kullanır. Örneğin:

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

Parametreler nerede:

  • Protokol.
  • İşleyici olarak kullanılan URL şablonu. "% S", bağlantının href'i ile değiştirilir ve elde edilen URL'de bir GET yürütülür.
  • Protokol işleyici için kullanıcı dostu ad.

Bir tarayıcı bu kodu yürüttüğünde, kullanıcıya web uygulamasının protokol için bir işleyici olarak kaydolmasına izin vermek için izin isteyen bir istem göstermelidir. Firefox, bildirim çubuğu alanında bir istem görüntüler.

Misal

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

Güzel. Yerel uygulamaya params geçirmenin bir yolu var mı?
AlikElzin-kilaka

1
Bu, bir web postası gibi uygulamalara izin veriyor gibi görünüyor, ancak harici (yerel) uygulamalar yok.
geek-merlin

Ayrıntıları burada ve burada okuyun . Ayrıca, ilk bağlantıda , bunun schemeyalnızca birkaç taneyle sınırlı olduğunu göreceksiniz . Kabul edilen çözüm daha iyi bir çözünürlük sağlayacaktır (elbette gerektiğinde bazı ayarlamalar ile).
Fr0zenFyr

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.