Estoy creando una página web en este momento y me pregunto si es posible ingresar un comando en HTML que abra una aplicación Ubuntu instalada como Chromium, o una ventana de terminal, o Nautilus.
¿Es posible algo así? ¡Gracias!
Estoy creando una página web en este momento y me pregunto si es posible ingresar un comando en HTML que abra una aplicación Ubuntu instalada como Chromium, o una ventana de terminal, o Nautilus.
¿Es posible algo así? ¡Gracias!
Respuestas:
Sí, puedes agregar un nuevo controlador de protocolo en tu Ubuntu. El siguiente método le mostrará cómo registrar el proceso de abrir una aplicación como app://[application_name]
controlador de protocolo en Ubuntu.
En una ejecución de terminal:
mkdir -p bin
Este comando creará un bin
directorio en su home
carpeta si aún no lo tiene.
Despues de correr:
gedit ~/bin/open_app.sh
Esto creará el nuevo archivo open_app.sh
en gedit.
Copie y pegue el siguiente script en el nuevo archivo creado:
#!/bin/bash
if [[ "$1" != "app://" ]]; then
app=${1#app://}
nohup "$app" &>/dev/null &
else
nohup gnome-terminal &>/dev/null &
fi
Guarde el archivo y ciérrelo.
Vuelve a la terminal y ejecuta:
chmod +x ~/bin/open_app.sh
para otorgar acceso de ejecución para el script.
Ahora debe crear un iniciador .desktop para el script anterior y decirle a Ubuntu que use este iniciador como app://
controlador de protocolo. Cree un /usr/share/applications/appurl.desktop
archivo con el siguiente comando:
sudo -H gedit /usr/share/applications/appurl.desktop
y agregue el siguiente contenido:
[Desktop Entry]
Name=TerminalURL
Exec=/home/radu/bin/open_app.sh %u
Type=Application
NoDisplay=true
Categories=System;
MimeType=x-scheme-handler/app;
Guarde el archivo y ciérrelo.
En el archivo anterior, el controlador del esquema de MimeType=x-scheme-handler/app;
registro de línea app://
, pero para que funcione, debemos actualizar el caché de la base de datos de tipos MIME ejecutando el comando:
sudo update-desktop-database
Ahora todo debería funcionar. Para probar que funciona desde la terminal, ejecute, por ejemplo, este comando:
xdg-open 'app://gedit'
Puede probar desde el navegador utilizando, por ejemplo, la siguiente página 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>
El resultado:
app://
controlador de esquema. Usando la exec()
función de PHP, por ejemplo, ese script puede ejecutarse en el navegador.
radu
su nombre en appurl.desktop
. Como:Exec=/home/{YOUR NAME HERE}/bin/open_app.sh %u
app://shell-exec myscript.sh
donde shell-exec es solo otro script ( #!/bin/sh "$@" exec "$SHELL"
)
Sí, se llama "controladores de protocolos basados en la web". Necesita Chrome 13 o Firefox 3.0 o superior. He visto que solía abrir LibreOffice.
Tanto Mozilla como updates.html5rocks tienen una explicación sobre cómo funciona esto. (Abra en Chrome / Chromium chrome://settings/handlers
y mostrará una lista de controladores actuales. Firefox los incluirá about:config
).
Partes del primer enlace:
Registrarse
Configurar una aplicación web como un controlador de protocolo no es un proceso difícil. Básicamente, la aplicación web utiliza registerProtocolHandler () para registrarse en el navegador como un posible controlador para un protocolo dado. Por ejemplo:
navigator.registerProtocolHandler("mailto",
"https://www.example.com/?uri=%s",
"Example Mail");
Donde los parámetros son:
Cuando un navegador ejecuta este código, debe mostrar un mensaje al usuario, pidiéndole permiso para permitir que la aplicación web se registre como un controlador para el protocolo. Firefox muestra un mensaje en el área de la barra de notificaciones.
Ejemplo
<!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
está restringido a solo unos pocos. La solución aceptada ofrecerá una mejor resolución (por supuesto, con algunos ajustes según sea necesario).