Aplicación de escritorio basada en Electron para trabajar con Microsoft 365 desde Linux con una interfaz de pestañas propia, integración con bandeja del sistema y soporte para abrir documentos y aplicaciones de Microsoft 365 sin depender de un navegador tradicional.
Versión actual: 2.7.3
O365 Linux Desktop abre Microsoft 365 dentro de una ventana nativa con una barra de pestañas personalizada. La aplicación está orientada principalmente a Linux y en la configuración actual de desarrollo usa X11 por defecto, con una opción explícita para probar Wayland.
El proyecto incluye:
- una pestaña principal fija para Microsoft 365
- apertura de documentos y aplicaciones en pestañas internas
- desacople de pestañas a ventanas separadas
- menú de bandeja con accesos rápidos y favoritos
- modales flotantes para configuración, lanzador de aplicaciones y tarjeta contextual de pestaña
- arquitectura modular inicial con bootstrap limpio, servicios separados y worker para integración nativa Linux
- Barra de pestañas personalizada con una pestaña principal fija (
M365 Copilot). - Creación de nuevas pestañas desde el botón
+. - Cambio, recarga y cierre de pestañas.
- Reordenamiento de pestañas mediante drag and drop.
- Desacople de pestañas a una ventana separada:
- desde la tarjeta de información de pestaña
- o arrastrando una pestaña fuera de la barra
- Reacople de pestañas desacopladas al arrastrar la ventana separada de vuelta sobre la zona superior de la ventana principal, conservando el contenido vivo de la pestaña.
- Sistema de overflow horizontal para pestañas con navegación por flechas cuando no entran todas en pantalla.
- La pestaña activa se mantiene visible dentro de la ventana de overflow.
- Apertura interna de enlaces y documentos de Microsoft 365, Office, OneDrive, SharePoint, Outlook, Teams y OneNote.
- Normalización de URLs de lanzamiento para aplicaciones de Microsoft 365.
- Manejo de popups internos para flujos de Outlook y otras ventanas necesarias.
- Apertura de enlaces externos en el navegador del sistema cuando no corresponden al dominio/flujo interno.
- Tarjeta contextual flotante al pasar el mouse sobre una pestaña.
- Muestra icono, título, servicio, ubicación y dato de “Última vez guardado”.
- Para documentos Word, Excel y PowerPoint abiertos desde OneDrive o SharePoint, la tarjeta intenta leer metadata real de Microsoft 365 desde
_wopiContextJson. - Cuando Microsoft 365 expone metadata WOPI, la tarjeta usa:
- nombre real del archivo
- carpeta padre desde
ParentFolderFullUrl - última modificación desde
LastModified
- La ubicación cloud se muestra como breadcrumb (
OneDrive > Carpeta > Subcarpeta) y los niveles con URL confiable se pueden abrir en una pestaña nueva. - Para OneDrive personal y OneDrive empresarial sobre SharePoint se generan URLs de carpeta compatibles con los patrones de navegación web de Microsoft 365.
- Si Microsoft 365 no expone una fecha real de modificación, la tarjeta muestra
No disponiblede forma explícita. - Permite:
- marcar o desmarcar favoritos
- desacoplar la pestaña a una ventana
- La pestaña principal no muestra esta tarjeta.
- Los favoritos se guardan de forma persistente.
- El menú de bandeja incluye:
- mostrar/ocultar la ventana principal
- recargar la aplicación
- submenú
Favoritos - submenú
Aplicaciones - salir
- Los favoritos del tray se agrupan por tipo usando iconos y separadores entre grupos no vacíos.
- El submenú
Aplicacionesmuestra el icono de cada aplicación y abre accesos directos a:- Word
- Excel
- PowerPoint
- Outlook
- OneDrive
- Teams
- OneNote
- Modal flotante de configuración.
- Panel
Acerca dedesde configuración con logo, versión de la aplicación y versiones de Electron, Chromium y Node.js. - Configuración persistente para:
- URL principal: define la página que se abrirá al iniciar la aplicación y la que se usará para crear o recrear la pestaña principal.
- User-Agent personalizado: permite cambiar cómo se identifica la aplicación ante los sitios web; no cambia la URL cargada. Si se deja vacío, la aplicación usa por defecto un User-Agent de Firefox en Linux.
Ejemplos útiles:
Firefox (predeterminado actual):Mozilla/5.0 (X11; Linux x86_64; rv:137.0) Gecko/20100101 Firefox/137.0Chrome en Linux:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36Edge en Linux:Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36 Edg/135.0.0.0 - tema (
system,light,dark) - reapertura de pestañas/documentos al iniciar
- Restauración opcional de pestañas al arrancar.
- Persistencia del tamaño, posición y estado maximizado de la ventana principal.
- Validación de bounds para evitar reabrir la ventana fuera de pantalla en cambios de monitor.
- Soporte de permisos para:
- cámara y micrófono
- notificaciones
- portapapeles
- fullscreen
- Soporte para
getDisplayMedia/ compartir pantalla mediantedesktopCapturer. - Atajos de portapapeles manejados también a nivel de vista:
Ctrl+C,Ctrl+VShift+InsertShift+Delete
- Diagnóstico manual de pestaña activa con
Ctrl+Shift+D, que exporta un JSON local con información del DOM, scripts, recursos y estado visible de la pestaña para análisis de compatibilidad. El volcado solo se genera al invocar explícitamente el atajo o la API de diagnóstico desde DevTools. - Registro del protocolo personalizado
ms365://. - Bloqueo de múltiples instancias con recuperación de foco en la ventana existente.
- La aplicación no se registra como manejador de archivos locales de Dolphin; los documentos locales deben abrirse con una app nativa o desde los flujos web de Microsoft 365.
- Menú contextual personalizado dentro de las vistas web.
- Para enlaces a documentos compatibles, el menú contextual puede ofrecer apertura con aplicaciones nativas detectadas en Linux.
- La detección de aplicaciones, descargas y apertura externa se encapsulan detrás de
nativeAppServicey un worker dedicado basado enworker_threads. - Para imágenes se ofrecen acciones como copiar y guardar.
- En desarrollo, también se expone inspección de elementos desde el menú contextual.
main.jses un bootstrap mínimo que cargasrc/main/index.js.- Las constantes, rutas, logging, navegación, favoritos, tray, IPC, persistencia de pestañas, integración nativa, ventanas auxiliares y workers viven en módulos dedicados bajo
src/main/. - El documento src/ARCHITECTURE.md describe la estructura modular, responsabilidades y el contrato del worker.
- El proyecto mantiene CommonJS para alinearse con el código existente y reducir riesgo durante la migración.
- La carpeta heredada
src/utils/se eliminó: las reglas de URL viven ensrc/main/navigation/y la integración nativa vive ensrc/main/native/+src/main/workers/.
- Linux
- Entornos X11 como ruta estable recomendada
- Wayland como ruta de prueba explícita en desarrollo
npm startynpm run start:x11fuerzan X11.npm run start:waylandpermite probar la aplicación en Wayland.- La configuración de empaquetado actual genera artefactos Linux:
AppImagedebtar.gz
- Los artefactos Linux empaquetados fuerzan X11 para evitar incompatibilidades con las ventanas auxiliares flotantes.
- Aunque parte del código es portable por Electron, este repositorio está preparado y documentado actualmente como objetivo Linux.
- Node.js 18 o superior
- npm 8 o superior
- Linux moderno con entorno gráfico compatible con Electron
npm installnpm startEsto ejecuta:
electron . --enable-features=UseOzonePlatform --ozone-platform=x11npm start
npm run start:x11
npm run start:wayland
npm run build
npm run build:linux
npm run build:appimage
npm run build:debnpm testEl test local valida JSON, sintaxis de los archivos JavaScript y consistencia entre package.json, package-lock.json, README y CHANGELOG.
GitHub Actions ejecuta CI en cada push y pull request:
- instala dependencias con
npm ci - ejecuta
npm test - valida el empaquetado Linux con
npm run build:dir
npm test git status git diff --stat git add . git commit -m "Release 2.7.3" git push origin V2.7.3
La configuración de electron-builder actual genera builds Linux con estos formatos:
- AppImage
- deb
- tar.gz
Los artefactos se escriben en dist/.
Al subir un tag con formato Vx.y.z o vx.y.z, GitHub Actions ejecuta tests, genera los artefactos Linux y publica una Release en GitHub.
Ejemplo:
git tag V2.7.3
git push origin V2.7.3O365LinuxDesktop/
├── main.js
├── package.json
├── icons/
├── src/
│ ├── ARCHITECTURE.md
│ ├── assets/
│ │ └── icons/
│ ├── config/
│ │ └── configManager.js
│ ├── main/
│ │ ├── app/
│ │ ├── favorites/
│ │ ├── ipc/
│ │ ├── logging/
│ │ ├── native/
│ │ ├── navigation/
│ │ ├── tabs/
│ │ ├── tray/
│ │ ├── windows/
│ │ ├── workers/
│ │ ├── index.js
│ │ ├── appSession.js
│ │ ├── floatingModal.js
│ │ └── windowState.js
│ ├── preload/
│ │ ├── main-preload.js
│ │ └── modal-preload.js
│ ├── ui/
│ │ ├── main-window/
│ │ │ ├── index.html
│ │ │ └── renderer.js
│ │ ├── modal/
│ │ │ ├── index.html
│ │ │ ├── modal.css
│ │ │ └── modal.js
│ │ └── shared/
│ │ └── styles.css
└── dist/
La aplicación almacena configuración y estado mediante electron-store, incluyendo:
- preferencias de tema
- URL principal: página de arranque y referencia para la pestaña principal
- User-Agent: identificador del navegador que la app envía a los sitios web; si no se personaliza, actualmente se usa Firefox en Linux por defecto
- favoritos
- pestañas restaurables
- estado y bounds de ventana
- La documentación y el empaquetado están orientados a Linux.
- La restauración de pestañas depende de URLs restaurables; si un documento ya no está disponible, la aplicación lo omite en sesiones posteriores.
- La información mostrada en la tarjeta de pestaña se infiere desde título, URL y metadatos disponibles; no todas las fuentes exponen la misma calidad de datos.
- La detección de aplicaciones nativas para “Abrir con…” está orientada a Linux.
- Los documentos Office locales (
.docx,.xlsx,.pptx, etc.) no se abren directamente desde Dolphin dentro de la app web; deben estar disponibles en OneDrive/SharePoint o abrirse con una aplicación nativa. - La migración modular es incremental: el siguiente bloque grande pendiente es extraer
tabManager, creación deWebContentsViewy navegación por pestaña desdesrc/main/index.js.
MIT
Este proyecto no está afiliado oficialmente con Microsoft. Microsoft 365, Office 365, OneDrive, Outlook, Teams, Word, Excel, PowerPoint y OneNote son marcas de sus respectivos propietarios.