Tôi đang tạo một trang web ngay bây giờ và tự hỏi liệu có thể nhập một lệnh trong HTML sẽ mở một ứng dụng Ubuntu đã cài đặt như Chromium hoặc cửa sổ đầu cuối hoặc Nautilus.
Có phải bất cư thứ gì như thế này đều được? Cảm ơn!
Tôi đang tạo một trang web ngay bây giờ và tự hỏi liệu có thể nhập một lệnh trong HTML sẽ mở một ứng dụng Ubuntu đã cài đặt như Chromium hoặc cửa sổ đầu cuối hoặc Nautilus.
Có phải bất cư thứ gì như thế này đều được? Cảm ơn!
Câu trả lời:
Có, bạn có thể bằng cách thêm trình xử lý giao thức mới trong Ubuntu. Phương pháp sau đây sẽ chỉ cho bạn cách đăng ký quy trình mở ứng dụng làm app://[application_name]
trình xử lý giao thức trong Ubuntu.
Trong một thiết bị đầu cuối chạy:
mkdir -p bin
Lệnh này sẽ tạo một bin
thư home
mục trong thư mục của bạn nếu bạn chưa có nó.
Sau khi chạy:
gedit ~/bin/open_app.sh
Điều này sẽ tạo ra các tập tin mới open_app.sh
trong gedit.
Sao chép và dán đoạn mã sau vào tệp đã tạo mới:
#!/bin/bash
if [[ "$1" != "app://" ]]; then
app=${1#app://}
nohup "$app" &>/dev/null &
else
nohup gnome-terminal &>/dev/null &
fi
Lưu file và đóng nó lại.
Quay trở lại thiết bị đầu cuối và chạy:
chmod +x ~/bin/open_app.sh
để cấp quyền truy cập thực thi cho tập lệnh.
Bây giờ bạn phải tạo một trình khởi chạy .desktop cho tập lệnh trên và bảo Ubuntu sử dụng trình khởi chạy này làm app://
trình xử lý giao thức. Tạo /usr/share/applications/appurl.desktop
tập tin bằng lệnh sau:
sudo -H gedit /usr/share/applications/appurl.desktop
và thêm nội dung sau:
[Desktop Entry]
Name=TerminalURL
Exec=/home/radu/bin/open_app.sh %u
Type=Application
NoDisplay=true
Categories=System;
MimeType=x-scheme-handler/app;
Lưu file và đóng nó lại.
Trong tệp trên, trình xử lý lược đồ MimeType=x-scheme-handler/app;
đăng ký dòng app://
, nhưng để làm cho nó hoạt động, chúng ta nên cập nhật bộ đệm cơ sở dữ liệu loại mime bằng cách thực hiện lệnh:
sudo update-desktop-database
Bây giờ mọi thứ nên làm việc. Để kiểm tra xem nó hoạt động từ terminal, hãy chạy ví dụ lệnh này:
xdg-open 'app://gedit'
Bạn có thể kiểm tra từ trình duyệt bằng cách sử dụng ví dụ trang web HTML sau:
<!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>
Kết quả:
app://
trình xử lý lược đồ. exec()
Ví dụ, sử dụng hàm từ PHP, đoạn script đó có thể được tạo để chạy trong trình duyệt.
radu
tên của bạn trong appurl.desktop
. Giống như:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
app://shell-exec myscript.sh
nơi shell-exec chỉ là một tập lệnh khác ( #!/bin/sh "$@" exec "$SHELL"
)
Có, nó được gọi là "Trình xử lý giao thức dựa trên web". Bạn cần Chrome 13 hoặc Firefox 3.0 trở lên. Tôi đã thấy nó được sử dụng để mở LibreOffice.
Cả Mozilla và update.html5rocks đều có lời giải thích về cách thức hoạt động của nó. (Mở trong Chrome / Chromium chrome://settings/handlers
và nó sẽ hiển thị danh sách các trình xử lý hiện tại. Firefox sẽ liệt kê chúng trong about:config
.)
Các phần từ liên kết 1:
Đăng ký
Thiết lập một ứng dụng web như một trình xử lý giao thức không phải là một quá trình khó khăn. Về cơ bản, ứng dụng web sử dụng registerProtocolHandler () để tự đăng ký với trình duyệt như một trình xử lý tiềm năng cho một giao thức nhất định. Ví dụ:
navigator.registerProtocolHandler("mailto",
"https://www.example.com/?uri=%s",
"Example Mail");
Trong đó các tham số là:
Khi một trình duyệt thực thi mã này, nó sẽ hiển thị lời nhắc cho người dùng, xin phép cho phép ứng dụng web đăng ký làm trình xử lý cho giao thức. Firefox hiển thị lời nhắc trong khu vực thanh thông báo.
Thí dụ
<!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
chỉ giới hạn ở một số ít. Giải pháp được chấp nhận sẽ cung cấp độ phân giải tốt hơn (tất nhiên với một số điều chỉnh khi cần thiết).