Ş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!
Ş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!
Yanıtlar:
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 .
Bir terminal çalışmasında:
mkdir -p bin
Bu komut, klasörünüz yoksa klasörünüzde bir bin
dizin oluşturur home
.
Çalıştırdıktan sonra:
gedit ~/bin/open_app.sh
Bu işlem yeni dosyayı open_app.sh
gedit'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.
Ş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.desktop
Aş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.
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
Ş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'
Ö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://
ş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
adınızı değiştirmeyi unutmayın appurl.desktop
. Gibi:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
app://shell-exec myscript.sh
, shell-exec sadece başka bir senaryo ( #!/bin/sh "$@" exec "$SHELL"
)
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:
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>
scheme
yalnı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).