Files
fn_registry/bash/functions/shell/reload_onlyoffice_file.md
T
egutierrez e1e9bb7499 feat(shell): auto-commit con 31 cambios
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-06-14 23:55:16 +02:00

4.7 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, params, output, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports params output tested tests test_file_path file_path
reload_onlyoffice_file function bash shell 1.0.0 impure reload_onlyoffice_file(file_path: string, instance: string = demo) -> json Recarga en la ventana de ONLYOFFICE Desktop Editors los datos que el caller edito EN DISCO, cerrando y reabriendo el archivo en la INSTANCIA AISLADA (slot). Es la funcion estrella del grupo: ONLYOFFICE no recarga cambios externos del archivo (GitHub Issue #2313 abierto, no implementado), asi que la unica forma de mostrar datos editados fuera de la app es cerrar la ventana (wmctrl -ic) y reabrir (ONLYOFFICE lee fresco del disco al abrir). Localiza la ventana por basename, la cierra y espera a que desaparezca (timeout ~10s), relanza con el env del slot aislado y espera la ventana nueva (timeout ~25s), todo por evento sin sleep en foreground. Si no habia ventana previa, actua como open. NO edita el archivo: el caller lo edita antes de llamar. Imprime JSON con wid_old, wid_new, reopened, elapsed_s y status (reloaded|timeout).
onlyoffice
desktop
x11
shell
false error_go_core
name desc
file_path ruta (relativa o absoluta) al archivo cuya ventana se recarga; DEBE existir. El caller ya lo edito en disco antes de llamar. Se busca la ventana por su basename
name desc
instance nombre del slot aislado (default: demo); debe coincidir con el usado en open_onlyoffice_file para reusar la misma instancia. Determina HOME/XDG_RUNTIME_DIR/XDG_CONFIG_HOME bajo /tmp
una linea JSON a stdout: {"instance":"<i>","file":"<abs>","wid_old":"<hex>|null","wid_new":"<hex>|null","reopened":true|false,"elapsed_s":<n>,"status":"reloaded"|"timeout"}. Exit 0 si reabrio (status reloaded), exit 1 si la ventana nueva no aparecio en el timeout (status timeout) o falta dependencia/archivo, exit 2 si falta file_path false
bash/functions/shell/reload_onlyoffice_file.sh

Ejemplo

# Flujo tipico: editas el .xlsx en disco con tu herramienta y refrescas la vista
# (este ejemplo asume que /tmp/demo_reload.xlsx ya esta abierto en el slot demo)
bash bash/functions/shell/reload_onlyoffice_file.sh /tmp/demo_reload.xlsx demo

# Via fn run
./fn run reload_onlyoffice_file_bash_shell /tmp/demo_reload.xlsx demo

# Sourceado, dentro de un bucle de "editar en disco -> ver en ONLYOFFICE"
source bash/functions/shell/reload_onlyoffice_file.sh
# ... el caller modifica /tmp/demo_reload.xlsx por su cuenta ...
out=$(reload_onlyoffice_file /tmp/demo_reload.xlsx demo)
echo "$out"
# {"instance":"demo","file":"/tmp/demo_reload.xlsx","wid_old":"0x3c00007","wid_new":"0x3c0000b","reopened":true,"elapsed_s":4,"status":"reloaded"}

Cuando usarla

  • Cuando editaste un archivo en disco fuera de ONLYOFFICE (script, otra herramienta, generador) y necesitas que la ventana de ONLYOFFICE muestre los datos nuevos: esta funcion cierra y reabre para forzar la lectura fresca del disco.
  • En bucles de iteracion rapida "modificar el archivo -> ver el resultado en ONLYOFFICE" sin tocar la instancia personal del usuario.
  • Como reemplazo del reload nativo inexistente (Issue #2313): es la unica via fiable de refrescar la vista desde disco.

Gotchas

  • No edita el archivo: solo recarga la ventana desde disco. El caller es responsable de modificar el archivo ANTES de llamar; si no lo modifico, reabrira los mismos datos.
  • ONLYOFFICE no tiene reload de cambios externos (GitHub Issue #2313 abierto, no implementado): por eso esta funcion existe y hace cerrar+reabrir. No hay forma "in-place" de refrescar.
  • wmctrl -ic puede disparar el dialogo "Guardar cambios" si el usuario edito EN la app (no en disco) y hay cambios sin guardar en esa ventana. El flujo previsto es editar SOLO en disco con la ventana sin tocar; si editaste en la app, guarda o descarta antes, o el cierre se quedara esperando interaccion (la funcion saldra por timeout).
  • Single-instance + slot aislado: usa el mismo instance que en open_onlyoffice_file. Con HOME/XDG_RUNTIME_DIR propios el relaunch reenvia a la instancia aislada viva y reabre rapido; con env por defecto se reenviaria a la instancia personal del usuario (no deseado).
  • El slot vive en /tmp: /tmp/oo_<instance>* se pierde al reiniciar el PC. Estado desechable.
  • Requiere X11 + wmctrl + xdotool: no funciona en Wayland puro sin XWayland. Comprueba las 3 deps y falla claro si falta alguna.
  • Carrera de cierre: si la ventana tarda mas de ~10s en cerrarse (dialogo modal, app ocupada), la funcion continua igualmente al relaunch; el resultado puede acabar en timeout si la ventana nueva no aparece a tiempo.