---
name: open_doc_onlyoffice
kind: function
lang: bash
domain: infra
version: 1.0.0
purity: impure
signature: "open_doc_onlyoffice <ruta_archivo> [--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
```
