É possível abrir um aplicativo Ubuntu a partir de HTML?
16
Estou criando uma página da Web no momento e estou imaginando se é possível inserir um comando em HTML que abra um aplicativo Ubuntu instalado, como o Chromium, ou uma janela de terminal ou o Nautilus.
No Windows, foi, mas apenas se você executou o IExplorer, mas devido ao fato de uma página da Web ser texto apenas com um pouco de mágica do servidor, isso limita a capacidade de um navegador. Tenho certeza de que alguém irá inventar alguma coisa. Aplicativo Java pode ser?
precisa saber é o seguinte
11
Talvez você deva esclarecer em que ambiente está executando, pois é muito amplo no momento. Por exemplo - você pode estar executando uma página html dentro webkit-webview que pode ser conectado a um python baseado app etc etc.
fossfreedom
Hmmm ... Eu assumi HTML puro @fossfreedom>: - D
Rinzwind
Sim, esta é apenas uma página HTML básica. Sem bancos de dados ou qualquer coisa.
I Heart Ubuntu
Se houver alguma ajuda, o site será para usuários do Linux. Qualquer um poderia usá-lo naturalmente, mas estou projetando isso estritamente para usuários de Linux / Ubuntu. Parece bastante simples. Inicie um aplicativo Ubuntu como o terminal ou a calculadora a partir de um link em uma página da web. Por exemplo, se eu fizer "apt: // chromium-browser", ele abrirá a página do Ubuntu Software Centers Chromium. Portanto, sabemos que podemos lançar pelo menos o USC a partir de HTML. E os aplicativos Ubuntu / Linux?
I Heart Ubuntu
Respostas:
21
Sim, você pode adicionar um novo manipulador de protocolo no seu Ubuntu. O método a seguir mostrará como registrar o processo de abertura de um aplicativo como app://[application_name]manipulador de protocolo no Ubuntu.
1. Criar script do iniciador de aplicativos
Em uma execução de terminal:
mkdir -p bin
Este comando criará um bindiretório em sua homepasta se você ainda não o tiver.
Após a execução:
gedit ~/bin/open_app.sh
Isso criará o novo arquivo open_app.shno gedit.
Copie e cole o seguinte script no novo arquivo criado:
2. Crie um arquivo .desktop para o iniciador de aplicativos
Agora você deve criar um iniciador .desktop para o script acima e dizer ao Ubuntu para usá-lo como app://manipulador de protocolo. Crie um /usr/share/applications/appurl.desktoparquivo usando o seguinte comando:
No arquivo acima, o manipulador do esquema de MimeType=x-scheme-handler/app;registro de linha app://, mas para fazê-lo funcionar, devemos atualizar o cache do banco de dados de tipos mime executando o comando:
sudo update-desktop-database
4. Teste do terminal
Agora tudo deve funcionar. Para testar se funciona a partir do terminal, execute, por exemplo, este comando:
xdg-open 'app://gedit'
4. Teste no navegador usando HTML
Você pode testar no navegador usando, por exemplo, a seguinte página da Web 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>
Muito muito bom. Um pequeno problema: os usuários que usam o site não terão esses scripts, lançadores e tipos MIME. Então, você também precisa fornecê-los de alguma maneira no site. Com o navigator.registerProtocolHandler, deve ser possível instalar o software sem a instalação. Mas parece muito, muito bom :-D
Rinzwind
@Rinzwind Bem, um script que automatiza as etapas 1, 2 e 3 pode ser fornecido aos usuários que usam o site antes de usar o app://manipulador de esquema. Usando a exec()função do PHP, por exemplo, esse script pode ser criado para ser executado no navegador.
Radu Rădeanu 14/08
exec () executará no lado do servidor, não no lado do cliente. Se você tentar lado do cliente, você vai encontrar segurança navegadores irá impedir os scripts rodando
NGRhodes
11
Legal! Lembre-se de mudar radupara o seu nome em appurl.desktop. Como:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
@ RaduRădeanu É possível iniciar um script em vez de um aplicativo? Por exemplo app://shell-exec myscript.sh, onde shell-exec é apenas um outro script ( #!/bin/sh "$@" exec "$SHELL")
Khurshid Alam
5
Sim, é chamado de "manipuladores de protocolo baseados na Web". Você precisa do Chrome 13 ou Firefox 3.0 ou superior. Eu já vi isso usado para abrir o LibreOffice.
Ambos Mozilla e updates.html5rocks ter uma explicação sobre como isso funciona. (Abra no Chrome / Chromium chrome://settings/handlerse ele mostrará uma lista dos manipuladores atuais. O Firefox os listará about:config.)
Peças do 1º link:
Registrando
Configurar um aplicativo Web como manipulador de protocolo não é um processo difícil. Basicamente, o aplicativo da Web usa registerProtocolHandler () para se registrar no navegador como um manipulador em potencial para um determinado protocolo. Por exemplo:
O modelo de URL, usado como manipulador. O "% s" é substituído pelo href do link e um GET é executado no URL resultante.
O nome amigável para o manipulador de protocolo.
Quando um navegador executa esse código, ele deve exibir um prompt para o usuário, solicitando permissão para permitir que o aplicativo da Web se registre como manipulador do protocolo. O Firefox exibe um prompt na área da barra de notificação.
Exemplo
<!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>
Agradável. Existe uma maneira de passar parâmetros para o aplicativo local?
AlikElzin-Kilaka
11
Isso parece permitir aplicativos como um webmailer, mas nenhum aplicativo externo (local).
Geek-merlin #
Leia os detalhes aqui e aqui . Além disso, no primeiro link , você também verá que o schemeconteúdo está restrito a apenas alguns. A solução aceita fornecerá uma resolução melhor (é claro, com alguns ajustes conforme necessário).
Respostas:
Sim, você pode adicionar um novo manipulador de protocolo no seu Ubuntu. O método a seguir mostrará como registrar o processo de abertura de um aplicativo como
app://[application_name]
manipulador de protocolo no Ubuntu.1. Criar script do iniciador de aplicativos
Em uma execução de terminal:
Este comando criará um
bin
diretório em suahome
pasta se você ainda não o tiver.Após a execução:
Isso criará o novo arquivo
open_app.sh
no gedit.Copie e cole o seguinte script no novo arquivo criado:
Salve o arquivo e feche-o.
Volte ao terminal e execute:
para conceder acesso de execução ao script.
2. Crie um arquivo .desktop para o iniciador de aplicativos
Agora você deve criar um iniciador .desktop para o script acima e dizer ao Ubuntu para usá-lo como
app://
manipulador de protocolo. Crie um/usr/share/applications/appurl.desktop
arquivo usando o seguinte comando:e adicione o seguinte conteúdo:
Salve o arquivo e feche-o.
3. Atualizar banco de dados de tipos MIME
No arquivo acima, o manipulador do esquema de
MimeType=x-scheme-handler/app;
registro de linhaapp://
, mas para fazê-lo funcionar, devemos atualizar o cache do banco de dados de tipos mime executando o comando:4. Teste do terminal
Agora tudo deve funcionar. Para testar se funciona a partir do terminal, execute, por exemplo, este comando:
4. Teste no navegador usando HTML
Você pode testar no navegador usando, por exemplo, a seguinte página da Web HTML:
O resultado:
fonte
app://
manipulador de esquema. Usando aexec()
função do PHP, por exemplo, esse script pode ser criado para ser executado no navegador.radu
para o seu nome emappurl.desktop
. Como:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
app://shell-exec myscript.sh
, onde shell-exec é apenas um outro script (#!/bin/sh "$@" exec "$SHELL"
)Sim, é chamado de "manipuladores de protocolo baseados na Web". Você precisa do Chrome 13 ou Firefox 3.0 ou superior. Eu já vi isso usado para abrir o LibreOffice.
Ambos Mozilla e updates.html5rocks ter uma explicação sobre como isso funciona. (Abra no Chrome / Chromium
chrome://settings/handlers
e ele mostrará uma lista dos manipuladores atuais. O Firefox os listaráabout:config
.)Peças do 1º link:
Registrando
Configurar um aplicativo Web como manipulador de protocolo não é um processo difícil. Basicamente, o aplicativo da Web usa registerProtocolHandler () para se registrar no navegador como um manipulador em potencial para um determinado protocolo. Por exemplo:
Onde os parâmetros são:
Quando um navegador executa esse código, ele deve exibir um prompt para o usuário, solicitando permissão para permitir que o aplicativo da Web se registre como manipulador do protocolo. O Firefox exibe um prompt na área da barra de notificação.
Exemplo
fonte
scheme
conteúdo está restrito a apenas alguns. A solução aceita fornecerá uma resolução melhor (é claro, com alguns ajustes conforme necessário).