--- name: open_doc_onlyoffice kind: function lang: bash domain: infra version: 1.0.0 purity: impure signature: "open_doc_onlyoffice [--restart]" description: "Abre un documento ofimático (xlsx, docx, pptx, csv, ods, odt, ...) con OnlyOffice Desktop Editors, desacoplado del shell (setsid + background). Localiza el binario por PATH sin hardcodear rutas. Flag --restart cierra toda la app OnlyOffice y la relanza para forzar la recarga desde disco de un archivo regenerado (OnlyOffice cachea en memoria la versión vieja de los documentos abiertos)." tags: - onlyoffice - desktop - office - open uses_functions: [] uses_types: [] returns: [] error_type: error_go_core params: - name: ruta_archivo desc: "Ruta (relativa o absoluta) del documento ofimático a abrir. Debe existir." - name: --restart desc: "Opcional. Si se pasa, cierra TODA la instancia de OnlyOffice (pkill -x DesktopEditors) antes de relanzar, forzando la recarga desde disco. Cierra cualquier otro documento abierto: usar solo si ninguno tiene cambios sin guardar." output: "Imprime la ruta absoluta abierta. Exit 0 si lanza OnlyOffice; exit 1 si el archivo no existe o el binario no está en PATH; exit 2 en error de uso." file_path: bash/functions/infra/open_doc_onlyoffice.sh --- ## Ejemplo ```bash # Abrir un documento (lo enfoca si OnlyOffice ya está corriendo) fn run open_doc_onlyoffice ~/Desktop/negocio_dashboards.xlsx # Tras regenerar el archivo en disco, forzar que OnlyOffice lo recargue fn run open_doc_onlyoffice ~/Desktop/negocio_dashboards.xlsx --restart ``` ## Cuando usarla Cuando necesites abrir o mostrar al usuario un documento ofimático (`.xlsx`, `.docx`, `.pptx`, `.csv`, `.ods`, `.odt`) en su escritorio. Es la forma canónica de abrir documentos en este equipo: el usuario usa OnlyOffice, nunca LibreOffice. Usa `--restart` cuando acabas de regenerar un archivo que probablemente ya está abierto y OnlyOffice muestra la versión cacheada en memoria. ## Gotchas - OnlyOffice es **instancia única**: lanzarlo con un archivo ya abierto reenfoca la pestaña existente con la versión cacheada en memoria, NO recarga desde disco. Por eso existe `--restart`. - `--restart` cierra **toda** la app (`pkill -x DesktopEditors`), no solo la pestaña del archivo. Cualquier otro documento abierto se cierra. No usar si hay documentos con cambios sin guardar. - No hay forma por CLI de cerrar/recargar una sola pestaña: o se acepta la versión cacheada, o se reinicia la app entera. - Usa `setsid` + `&` para que el editor sobreviva al proceso que lo invoca (no muere al cerrar la terminal/sesión). - Localiza el binario con `command -v onlyoffice-desktopeditors`; el proceso real subyacente es `/opt/onlyoffice/desktopeditors/DesktopEditors`. ## example ```bash open_doc_onlyoffice ~/Desktop/negocio_dashboards.xlsx open_doc_onlyoffice ~/Desktop/negocio_dashboards.xlsx --restart # fuerza recarga desde disco ```