cClaude.rocks ☕ Le blog

L'informatique et les nouvelles technologies

Menu

Pour une automatisation, j’ai eu besoin d’ouvrir libreoffice depuis un script. C’est facile, la documentation est claire sur le 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 - 2020 | 🕸 Retour à l'accueil du domaine | 🏡 Retour à l'accueil du blog