Obecnie tworzę stronę internetową i zastanawiam się, czy można wprowadzić polecenie w języku HTML, które otworzy zainstalowaną aplikację Ubuntu, taką jak Chromium, okno terminalu lub Nautilus.
Czy coś takiego jest możliwe? Dzięki!
Obecnie tworzę stronę internetową i zastanawiam się, czy można wprowadzić polecenie w języku HTML, które otworzy zainstalowaną aplikację Ubuntu, taką jak Chromium, okno terminalu lub Nautilus.
Czy coś takiego jest możliwe? Dzięki!
Odpowiedzi:
Tak, możesz dodając nowy moduł obsługi protokołu w systemie Ubuntu. Poniższa metoda pokaże, jak zarejestrować proces otwierania aplikacji jako app://[application_name]
procedury obsługi protokołu w Ubuntu.
W biegu terminalowym:
mkdir -p bin
To polecenie utworzy bin
katalog w home
folderze, jeśli jeszcze go nie masz.
Po uruchomieniu:
gedit ~/bin/open_app.sh
Spowoduje to utworzenie nowego pliku open_app.sh
w gedit.
Skopiuj i wklej następujący skrypt w nowo utworzonym pliku:
#!/bin/bash
if [[ "$1" != "app://" ]]; then
app=${1#app://}
nohup "$app" &>/dev/null &
else
nohup gnome-terminal &>/dev/null &
fi
Zapisz plik i zamknij go.
Wróć do terminala i uruchom:
chmod +x ~/bin/open_app.sh
aby udzielić dostępu do skryptu.
Teraz musisz utworzyć program uruchamiający .desktop dla powyższego skryptu i powiedzieć Ubuntu, aby używał tego programu uruchamiającego jako app://
procedury obsługi protokołu. Utwórz /usr/share/applications/appurl.desktop
plik za pomocą następującego polecenia:
sudo -H gedit /usr/share/applications/appurl.desktop
i dodaj następującą treść:
[Desktop Entry]
Name=TerminalURL
Exec=/home/radu/bin/open_app.sh %u
Type=Application
NoDisplay=true
Categories=System;
MimeType=x-scheme-handler/app;
Zapisz plik i zamknij go.
W powyższym pliku moduł obsługi schematu MimeType=x-scheme-handler/app;
rejestru linii app://
, ale aby działał, należy zaktualizować pamięć podręczną bazy danych typów MIME, wykonując polecenie:
sudo update-desktop-database
Teraz wszystko powinno działać. Aby sprawdzić, czy działa z terminala, uruchom na przykład następującą komendę:
xdg-open 'app://gedit'
Możesz przetestować w przeglądarce, używając na przykład następującej strony internetowej 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>
Wynik:
app://
programu do obsługi schematów. exec()
Na przykład za pomocą funkcji z PHP skrypt można uruchomić w przeglądarce.
radu
na swoje imię w appurl.desktop
. Podobnie jak:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
app://shell-exec myscript.sh
gdzie shell-exec jest po prostu kolejnym skryptem ( #!/bin/sh "$@" exec "$SHELL"
)
Tak, nazywa się to „programami obsługującymi protokół internetowy”. Potrzebujesz przeglądarki Chrome 13 lub Firefox 3.0 lub nowszej. Widziałem, jak kiedyś otwierał LibreOffice.
Zarówno Mozilla, jak i updates.html5rocks mają wyjaśnienie, jak to działa. (Otwórz w Chrome / Chromium chrome://settings/handlers
i wyświetli listę bieżących programów obsługi. Firefox wyświetli je about:config
.)
Części z pierwszego linku:
Rejestracyjny
Konfigurowanie aplikacji internetowej jako procedury obsługi protokołu nie jest trudnym procesem. Zasadniczo aplikacja internetowa używa registerProtocolHandler (), aby zarejestrować się w przeglądarce jako potencjalny moduł obsługi dla danego protokołu. Na przykład:
navigator.registerProtocolHandler("mailto",
"https://www.example.com/?uri=%s",
"Example Mail");
Gdzie parametry to:
Gdy przeglądarka wykonuje ten kod, powinna wyświetlić użytkownikowi monit z prośbą o pozwolenie, aby zezwolić aplikacji internetowej na zarejestrowanie się jako moduł obsługi protokołu. Firefox wyświetla monit w obszarze paska powiadomień.
Przykład
<!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
jest on ograniczony tylko do kilku. Zaakceptowane rozwiązanie zapewni lepszą rozdzielczość (oczywiście z pewnymi poprawkami w razie potrzeby).