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.
É algo assim possível? Obrigado!
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.
É algo assim possível? Obrigado!
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.
Em uma execução de terminal:
mkdir -p bin
Este comando criará um bin
diretório em sua home
pasta se você ainda não o tiver.
Após a execução:
gedit ~/bin/open_app.sh
Isso criará o novo arquivo open_app.sh
no gedit.
Copie e cole o seguinte script no novo arquivo criado:
#!/bin/bash
if [[ "$1" != "app://" ]]; then
app=${1#app://}
nohup "$app" &>/dev/null &
else
nohup gnome-terminal &>/dev/null &
fi
Salve o arquivo e feche-o.
Volte ao terminal e execute:
chmod +x ~/bin/open_app.sh
para conceder acesso de execução ao script.
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:
sudo -H gedit /usr/share/applications/appurl.desktop
e adicione o seguinte conteúdo:
[Desktop Entry]
Name=TerminalURL
Exec=/home/radu/bin/open_app.sh %u
Type=Application
NoDisplay=true
Categories=System;
MimeType=x-scheme-handler/app;
Salve o arquivo e feche-o.
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
Agora tudo deve funcionar. Para testar se funciona a partir do terminal, execute, por exemplo, este comando:
xdg-open 'app://gedit'
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>
O resultado:
app://
manipulador de esquema. Usando a exec()
função do PHP, por exemplo, esse script pode ser criado para ser executado no navegador.
radu
para o seu nome em appurl.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:
navigator.registerProtocolHandler("mailto",
"https://www.example.com/?uri=%s",
"Example Mail");
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
<!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
conteúdo está restrito a apenas alguns. A solução aceita fornecerá uma resolução melhor (é claro, com alguns ajustes conforme necessário).