지금 웹 페이지를 만들고 있는데 Chromium과 같은 설치된 Ubuntu 앱이나 터미널 창 또는 노틸러스와 같은 설치된 Ubuntu 앱을 여는 명령을 HTML로 입력 할 수 있는지 궁금합니다.
이와 같은 것이 가능합니까? 감사!
지금 웹 페이지를 만들고 있는데 Chromium과 같은 설치된 Ubuntu 앱이나 터미널 창 또는 노틸러스와 같은 설치된 Ubuntu 앱을 여는 명령을 HTML로 입력 할 수 있는지 궁금합니다.
이와 같은 것이 가능합니까? 감사!
답변:
예, 우분투에 새로운 프로토콜 핸들러를 추가하면됩니다. 다음 app://[application_name]
은 Ubuntu에서 응용 프로그램을 프로토콜 핸들러 로 여는 프로세스를 등록하는 방법을 보여줍니다 .
터미널 실행에서 :
mkdir -p bin
이 명령은 폴더에 bin
디렉토리 home
가없는 경우 디렉토리를 만듭니다 .
실행 후 :
gedit ~/bin/open_app.sh
open_app.sh
gedit에 새 파일이 생성됩니다 .
새로 만든 파일에 다음 스크립트를 복사하여 붙여 넣습니다.
#!/bin/bash
if [[ "$1" != "app://" ]]; then
app=${1#app://}
nohup "$app" &>/dev/null &
else
nohup gnome-terminal &>/dev/null &
fi
파일을 저장하고 닫습니다.
터미널로 돌아가서 다음을 실행하십시오.
chmod +x ~/bin/open_app.sh
스크립트에 대한 실행 액세스 권한을 부여합니다.
이제 위 스크립트에 대해 .desktop 런처를 작성하고이 런처를 app://
프로토콜 핸들러 로 사용하도록 Ubuntu에 지시해야 합니다. /usr/share/applications/appurl.desktop
다음 명령을 사용하여 파일을 작성 하십시오.
sudo -H gedit /usr/share/applications/appurl.desktop
다음 내용을 추가하십시오.
[Desktop Entry]
Name=TerminalURL
Exec=/home/radu/bin/open_app.sh %u
Type=Application
NoDisplay=true
Categories=System;
MimeType=x-scheme-handler/app;
파일을 저장하고 닫습니다.
위의 파일에서 라인 MimeType=x-scheme-handler/app;
레지스터 app://
스킴 처리기이지만 작동하게하려면 다음 명령을 실행하여 MIME 유형 데이터베이스 캐시를 업데이트해야합니다.
sudo update-desktop-database
이제 모든 것이 작동합니다. 터미널에서 작동하는지 테스트하려면 예를 들어 다음 명령을 실행하십시오.
xdg-open 'app://gedit'
예를 들어 다음 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>
결과:
app://
스킴 핸들러 를 사용하기 전에 1, 2 및 3 단계를 자동화하는 스크립트를 웹 사이트를 사용하여 사용자에게 제공 할 수 있습니다 . exec()
예를 들어, PHP의 기능을 사용하면 해당 스크립트를 브라우저에서 실행할 수 있습니다.
app://shell-exec myscript.sh
shell-exec가 또 다른 스크립트 ( #!/bin/sh "$@" exec "$SHELL"
) 인 경우
예, "웹 기반 프로토콜 처리기"라고합니다. Chrome 13 또는 Firefox 3.0 이상이 필요합니다. LibreOffice를 여는 데 사용되는 것을 보았습니다.
두 모질라 와 updates.html5rocks는 이것이 어떻게 작동하는지에 대한 설명이있다. (Chrome / Chromium에서 열면 chrome://settings/handlers
현재 처리기 목록이 표시됩니다. Firefox는에 나열됩니다 about:config
.)
첫 번째 링크의 부품 :
등록
웹 응용 프로그램을 프로토콜 처리기로 설정하는 것은 어려운 과정이 아닙니다. 기본적으로 웹 응용 프로그램은 registerProtocolHandler ()를 사용하여 브라우저에 지정된 프로토콜의 잠재적 인 처리기로 등록합니다. 예를 들면 다음과 같습니다.
navigator.registerProtocolHandler("mailto",
"https://www.example.com/?uri=%s",
"Example Mail");
매개 변수가있는 위치 :
브라우저가이 코드를 실행하면 웹 응용 프로그램이 프로토콜의 처리기로 등록 할 수있는 권한을 요청하는 프롬프트가 사용자에게 표시되어야합니다. Firefox는 알림 표시 줄 영역에 프롬프트를 표시합니다.
예
<!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>