Usando Microsoft Office en GNU/Linux

No suelo usar Microsoft Office, en casa Linux está presente por todas partes y siempre me las he apañado con Libre Office; sin embargo, la escuela virtual de Derek en la materia de informática este año se dedicarán a usar la suite ofimática de Microsoft.

Considerando el hecho que recientemente Derek migró su X230 a Pop OS! me puse manos a la acción para buscar alguna aplicación que parezca nativa ya que aún no existe una app nativa para Linux y no tengo muchas ganas de usar wine que digamos.

Después de algunas horas de búsqueda con San Google, la mejor opción que hallé fue usar un wrapper que empaquetara la versión web de Office y que se viera como la aplicación nativa. La desventaja principal de este método es que al ser una aplicación web, depende de internet y no puede ser usado offline. Siendo así, no queda más remedio que hacerlo de este modo.

Lo que haré será empaquetar las aplicaciones que necesito de la versión online de Office en un contenedor electron por medio de nativefier. Cómo estos archivos se guardan en la nube de One Drive, usaré un cliente que actualice una carpeta con este contenido, de manera tal que siempre haya un acceso a ellos dentro del /home.

Empaquetando con electron/nativefier

Lo primero que necesitaremos es npm.

$ sudo apt update
$ sudo apt install npm

Ahora podemos instalar nativefier

$ sudo npm -g install nativefier

Necesitamos un ícono para cada aplicación, así que empaquete un zip con los íconos. Solo lo extraemos en el directorio donde estamos trabajando.

$ nativefier -p linux -a x64 -i word.png --disable-context-menu --disable-dev-tools --single-instance --internal-urls ".*" https://www.office.com/launch/word

Esto nos creara un directorio nuevo, con un binario de la nueva aplicación. En mi caso, el directorio generado se llama Signintoyouraccount-linux-x64. Lo renombramos y también el binario a algo un poco más tradicional.

$ mv Signintoyouraccount-linux-x64/ microsoft-word/
$ mv microsoft-word/Signintoyouraccount microsoft-word/word

Ahora movemos nuestra recién generada aplicación al directorio /opt y le damos permisos 775.

$ sudo mv microsoft-word/ /opt/
sudo chmod 775 -R /opt/microsoft-word/

Por último, movemos el ícono que estaba fuera del directorio que se creó.

$ cp word.png /opt/microsoft-word/

Creando el lanzador

El lanzador de aplicación es un simple archivo .desktop. Creamos el archivo microsoft-word.desktop y le ponemos este contenido:

[Desktop Entry]
Comment[en_US]=Access Microsoft Word on Linux.
Exec=/opt/microsoft-word/word
GenericName=Microsoft Word
Name=Microsoft Word
Icon=/opt/microsoft-word/word.png
Categories=Office
Type=Application

Ahora damos permiso de ejecución al lanzador de aplicación.

$ sudo chmod +x microsoft-word.desktop

Y lo movemos a su destino final.

$ sudo mv microsoft-word.desktop /usr/share/applications/

Una vez hecho esto, nos aparecerá en nuestro cajón de aplicaciones.

Resultados

Ahora, solo es cuestión de hacer click en nuestro lanzador reción agregado.

Microsoft Word corriendo empaquetado como aplicación nativa

Podemos replicar cada aplicación de Office 365, en los pasos anteriores cambiando la palabra word por excel para Microsoft Excel, y por powerpoint para Microsoft Powerpoint.

Microsoft Excel como aplicación nativa
Microsoft Powerpoint como aplicación nativa

Sincronizando con One Drive

Los documentos que sean creados con las aplicaciones en línea de Microsoft Office se guardan en One Drive, lo que dificulta tenerlos físicamente en nuestro dispositivo a menos que usemos un cliente que sincronice los archivos hacia nuestro PC. En Pop OS!, tenemos una aplicación en el repositorio llamado onedrive, el proyecto lo encontramos en github, instalarla solo es cuestión de hacer:

$ sudo apt install onedrive

La primera vez que ejecutemos onedrive en la terminal, nos dará un enlace tipo token que debemos abrir en un navegador para autorizar la aplicación.

$ onedrive
Configuring Global Azure AD Endpoints
Authorize this app visiting:

https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=d50ff740-c80f-4c1b-a515-12c514354f0c&scope=Files.ReadWrite%20Files.ReadWrite.all%20Sites.Read.All%20Sites.ReadWrite.All%20offline_access&response_type=code&redirect_uri=https://login.microsoftonline.com/common/oauth2/nativeclient

Enter the response uri:

Veremos una ventana así

Autorizando OneDrive Client for Linux

Al finalizar, tendremos una página en blanco. En la barra de dirección copiaremos la respuesta generada y la pegamos en la terminal nuevamente. De esta manera habremos autorizado la aplicación.

Ahora sincronizamos manualmente por primera vez:

$ onedrive --synchronize

Configuring Global Azure AD Endpoints
Initializing the Synchronization Engine ...
Syncing changes from OneDrive ...
Downloading file Documento.docx ... done.
Downloading file Libro.xlsx ... done.
Downloading file Presentación.pptx ... done.
Uploading differences of ~/OneDrive
Uploading new items of ~/OneDrive

Para resincronizar manualmente:

$ onedrive --synchronize --resync

Para automatizar esto, el cliente proveé unidades de systemd para iniciarlo y detenerlo. Para activarlo:

$ systemctl --user enable onedrive

Para iniciar el cliente de One Drive

$ systemctl --user start onedrive

Y por acá podremos monitorearlo

$ systemctl status --user onedrive

Si deseamos detenerlo

$ systemctl --user stop onedrive

Por último si en algún momento necesitamos salir de la cuenta de One Drive

$ onedrive --logout

Conclusiones

Tener Microsoft Office en Linux de manera nativa, aún no es posible, pero podemos acercanos de un modo bastante singular utilizando las aplicaciones web de Microsoft Office. Esto dista de ser perfecto, pero es un buen workaround para lograrlo.


avatar
Moisés Serrano Samudio Médico de atención primaria, fotógrafo aficionado, apasionado de las tecnologías relacionadas con el EdTech y el eHealth y diseñador/desarrollador de sitios web de salud. Médico, apasionado del EdTech/eHealth y diseñador/desarrollador de sitios web de salud.
  1. Aún no hay comentarios...

Deja una respuesta

Su email no será publicado. Required fields are marked *