HTML에서 Ubuntu 앱을 열 수 있습니까?


16

지금 웹 페이지를 만들고 있는데 Chromium과 같은 설치된 Ubuntu 앱이나 터미널 창 또는 노틸러스와 같은 설치된 Ubuntu 앱을 여는 명령을 HTML로 입력 할 수 있는지 궁금합니다.

이와 같은 것이 가능합니까? 감사!


Windows에서는 IExplorer를 실행 한 경우에만 있었지만 웹 페이지는 약간의 서버 측 마법이 적용된 텍스트이므로 브라우저가 수행 할 수있는 기능을 제한합니다. 누군가 무언가를 생각 해낼 것입니다. Java 앱일까요?
SimplySimon

1
현재 환경이 매우 광범위하므로 실행중인 환경을 명확히해야합니다. 예를 들어, 파이썬 기반 앱 등에 연결할 수있는 webkit-webview 내에서 html 페이지를 실행할 수 있습니다.
fossfreedom

흠 ... 난 순수 HTML @fossfreedom>
:-D

예, 기본 HTML 웹 페이지 일뿐입니다. 데이터베이스 나 아무것도 없습니다.
나는 심장 우분투

도움이된다면 리눅스 사용자를위한 사이트가 될 것입니다. 누구나 자연스럽게 사용할 수 있지만 Linux / Ubuntu 사용자를 위해 엄격하게 설계하고 있습니다. 충분히 간단 해 보입니다. 웹 페이지의 링크에서 터미널 또는 계산기와 같은 Ubuntu 앱을 실행하십시오. 예를 들어 "apt : // chromium-browser"를 수행하면 Ubuntu Software Centers Chromium 페이지가 열립니다. 따라서 HTML에서 최소한 USC를 시작할 수 있다는 것을 알고 있습니다. 우분투 / 리눅스 앱은 어떻습니까?
나는 심장 우분투

답변:


21

예, 우분투에 새로운 프로토콜 핸들러를 추가하면됩니다. 다음 app://[application_name]은 Ubuntu에서 응용 프로그램을 프로토콜 핸들러 로 여는 프로세스를 등록하는 방법을 보여줍니다 .

1. 애플리케이션 런처 스크립트 생성

  • 터미널 실행에서 :

    mkdir -p bin
    

    이 명령은 폴더에 bin디렉토리 home가없는 경우 디렉토리를 만듭니다 .

  • 실행 후 :

    gedit ~/bin/open_app.sh
    

    open_app.shgedit에 새 파일이 생성됩니다 .

  • 새로 만든 파일에 다음 스크립트를 복사하여 붙여 넣습니다.

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

    스크립트에 대한 실행 액세스 권한을 부여합니다.

2. 응용 프로그램 시작 관리자 용 .desktop 파일을 만듭니다.

이제 위 스크립트에 대해 .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;

파일을 저장하고 닫습니다.

3. MIME 유형 데이터베이스 새로 고침

위의 파일에서 라인 MimeType=x-scheme-handler/app;레지스터 app://스킴 처리기이지만 작동하게하려면 다음 명령을 실행하여 MIME 유형 데이터베이스 캐시를 업데이트해야합니다.

sudo update-desktop-database 

4. 터미널에서 테스트

이제 모든 것이 작동합니다. 터미널에서 작동하는지 테스트하려면 예를 들어 다음 명령을 실행하십시오.

xdg-open 'app://gedit'

4. HTML을 사용하여 브라우저에서 테스트

예를 들어 다음 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>

결과:

앱://


2
아주 아주 좋은. 1 약간의 문제 : 웹 사이트를 사용하는 사용자는 그러한 흠집, 발사기 및 마임 유형을 갖지 않습니다. 따라서 웹 사이트에서 어떤 방식 으로든 제공해야합니다. navigator.registerProtocolHandler를 사용하면 소프트웨어를 설치하지 않고도 할 수 있습니다. 그러나 그것은 매우 멋져 보인다
-D

@Rinzwind 음, app://스킴 핸들러 를 사용하기 전에 1, 2 및 3 단계를 자동화하는 스크립트를 웹 사이트를 사용하여 사용자에게 제공 할 수 있습니다 . exec()예를 들어, PHP의 기능을 사용하면 해당 스크립트를 브라우저에서 실행할 수 있습니다.
Radu Rădeanu

exec ()는 클라이언트가 아닌 서버 측을 실행합니다. 클라이언트 쪽을 시도하면 브라우저 보안으로 인해 스크립트가 실행되지 않을 수 있습니다.
NGRhodes

1
멋있는! radu에서 이름 을 변경 해야합니다 appurl.desktop. : 등Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u

@ RaduRădeanu 앱 대신 스크립트를 실행할 수 있습니까? 예를 들어 app://shell-exec myscript.shshell-exec가 또 다른 스크립트 ( #!/bin/sh "$@" exec "$SHELL") 인 경우
Khurshid Alam

5

예, "웹 기반 프로토콜 처리기"라고합니다. 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");

매개 변수가있는 위치 :

  • 프로토콜.
  • 핸들러로 사용되는 URL 템플리트입니다. "% s"는 링크의 href로 바뀌고 결과 URL에서 GET이 실행됩니다.
  • 프로토콜 핸들러의 사용자 친화적 이름입니다.

브라우저가이 코드를 실행하면 웹 응용 프로그램이 프로토콜의 처리기로 등록 할 수있는 권한을 요청하는 프롬프트가 사용자에게 표시되어야합니다. 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>

좋은. 매개 변수를 로컬 앱에 전달하는 방법이 있습니까?
AlikElzin-kilaka

1
이것은 웹 메일러와 같은 앱은 허용하지만 외부 (로컬) 애플리케이션은 허용하지 않는 것 같습니다.
괴짜 멀린

여기여기 에서 세부 사항을 읽으 십시오 . 또한 첫 번째 링크 에서는 scheme몇 개로 만 제한되어 있음을 알 수 있습니다. 수용된 솔루션은 더 나은 해상도를 제공 할 것입니다 (물론 약간의 조정이 필요합니다).
Fr0zenFyr

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.