Kann man LibreOfficeWriter mit den letzten drei bearbeiteten Dateien per Kommando öffnen?

Ich möchte vier Starterknöpfe in der xfce4-Leiste anlegen, um LibreOffice zu öffnen, entweder

  1. wie üblich (also mit einem leeren neuen Dokument) oder
  2. mit dem letzten Dokument oder
  3. den letzten beiden Dokumenten in zwei Fenstern oder
  4. den letzten drei Dokumenten in drei Fenstern

(also pro Dokument je ein Fenster).

Ich weiß, daß man nach Is it possible to automatically open most recent document on start? LibreOffice immer mit dem zuletzt geöffneten Dokument starten kann. Das ist aber nicht, wonach ich suche, denn ich möchte lowriter auch weiter normal benutzen können.

Die im Internet (s.o.) gefundene Methode erzeugt ein Makro namens LibreOffice in der Standard Basic Bibliothek (was auch immer das ist), es verbiegt LO’s “Start Application” event auf Open_Most_Recent_Document().

Kann man das von mir gewünschte Verhalten nicht mit Kommandozeilenargumenten beim Aufruf von LibreOffice erreichen?

Man kann doch lowriter mit mehreren Dateien starten, deren Pfade im Kommando mit angegeben sind. Irgrendwo merkt sich lowriter doch, welche Dateien es zuletzte bearbeitet hat. Da müßte es doch möglich sein, notfalls über ein vorgeschaltetes Batchkommando genau diese Pfade (sicherheitshalber einzeln in doppelte Gänsefüßchen eingeschlossen, damit sie auch funktionieren, wenn in den Dateinamen Leerzeichen vorkommen) zusammen mit dem Kommando lowriter in einer Kommandozeile zu arrangieren und die dann auszuführen. Geht das? Wie geht das?

Hallo

awk -F"file:" '/name="HistoryItemRef"/{print $2}'  ~/.config/libreoffice/4/user/registrymodifications.xcu   | sed 's/<\/value><\/prop><\/node><\/item>//;s/\/\///' 

liefert in meinem Fall die zuletzt geöffneten Dateien (Dabei mag das awk und sed, das ich hier verwendet habe, nicht das Gelbe vom Ei sein).

Ein wirklich simples Skript könnte daher so aussehen, wie unten aufgeführt. Als Übergabeparameter gibt man einfach die Anzahl der Dateien an, die geöffnet werden sollen ("./ 2" hieße also die letzten beiden Dateien aus der Libreoffice History zu öffnen).

#!/bin/bash
numfiles=$1
[[ ${numfiles} == "" ]] && exit
[[ ${numfiles} -gt 3 ]] && exit

search_in_file="${HOME}/.config/libreoffice/4/user/registrymodifications.xcu"
files=$(awk -F"file:" '/name="HistoryItemRef"/{print "\""$2"\""}' ${search_in_file} \
      | sed 's/<\/value><\/prop><\/node><\/item>//;s/\/\///' \
      | head -${numfiles} | xargs )

libreoffice6.1 --writer -o ${files}

Nachtrag 10.02.2019 - Das in meinem Kommentar erwähnte sed Skript script.sed habe ich hier noch als Anhang beigefügt (Leider kann man hier keine reinen Textfiles hochladen, daher in ein .odt verpackt)

script.sed.odt


  1. LibreOffice merkt sich in registrymodifications.xcu , wie die Dateien geöffnet wurden: Wenn das per Doppelklick auf Links (z.B. auf dem Desktop) geschah, merkt es sich dort den Pfad zur Verknüpfung, nicht zu der Datei, die geöffnet werden soll. Das stört aber nicht.

  2. Leerzeichen in den Pfaden sind durch %20 ersetzt und Umlaute durch %C3%xx (mit passenden Hexadezimalzeichen xx). Vielleicht gibt es noch andere Substitutionen, um die Dateinamen mit eingeschränkten Zeichenvorrat darzustellen. Diese Substitutionen
    müßte man vor dem Gebrauch im
    awk und sed-Befehl noch rückgängig machen.

  3. Durch den awk und sed-Befehl werden die aus registrymodifications.xcu herausgezogenen Pfade zu den bearbeiteten Dateien bzw Links darauf schon richtig in doppelte Gänsefüßchen eingeschlossen. Wenn die “escapten” Zeichen ersetzt wären, würde das funktionieren.

Danke für den Startpunkt für meine weiteren Versuche.

Zu 2) Ein entsprechdes script.sed file habe ich oben in meiner ursrünglichen Antwort angehängt. Die Pipe schreibt sich dann:

awk .... | sed -f script.sed

(In diesem script.sed File werden so ziemlich alle gängigen UTF-8 Codes durch die entsprechenden Zeichen ersetzt)

Damit sollte dann auch 3) erledigt sein.