cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu

Pour une automatisation, j’ai eu besoin d’ouvrir LibreOffice depuis un script. C’est facile, la documentation traite de ce sujet.


ඏ

Par exemple pour ouvrir l’éditeur de texte, on utilisera :

libreoffice --writer /tmp/un_fichier_existant_a_editer.txt

Voir mĂȘme :

libreoffice --writer --norestore --nologo /tmp/un_fichier_existant_a_editer.txt

L’idĂ©e Ă©tant de continuer le processus d’automatisation aprĂšs que l’utilisateur est fermĂ© LibreOffice.

Cependant un petit problĂšme survient si LibreOffice est dĂ©jĂ  ouvert. En effet, le processus ouvert sera dĂ©tectĂ© et rĂ©utiliser pour lancer l’édition demandĂ©e. Du coup le processus d’automatisation continu avant mĂȘme que l’utilisateur est commencĂ© Ă  Ă©diter le document ouvert.

Dans ce cas, gros « fail » 

La question est donc :

Comment ouvrir LibreOffice sans rĂ©utiliser une Ă©ventuelle fenĂȘtre prĂ©existante ?

La solution consiste à créer un environnement spécialement en utilisant : -env:UserInstallation=file:///tmp/test ce qui implique que /tmp/test soit un dossier existant.

Voici le code bash correspondant :

file=/tmp/un_fichier_existant_a_editer.txt # « file » contient le nom du fichier a édité.
touch "${file}"                            # CrĂ©e le fichier s’il n’existe pas (on s’assure d’avoir un fichier Ă©ventuellement vide)
tmpdir="$( mktemp -d --suffix=.myapp )"    # CrĂ©ation d’un dossier temporaire
if [ -d "${tmpdir}" ] ; then
  libreoffice -env:UserInstallation="file://${tmpdir}" --writer --norestore --nologo "${file}"
  rm -fr "${tmpdir}"                       # Supprime le dossier temporaire
else
  return 1                                 # Indique une erreur.
fi

ඏ

Documentations utiles

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog