Wine: Linuxprogramm starten

Mit Wine hat man die Möglichkeit, unter Linux Windowsprogramme ausführen zu können. So hat man die Möglichkeit, auch einige Spezialprogramme, für die es keinen gleichwertigen Ersatz gibt, weiter zu benutzen. Auch ich nutze diese Möglichkeit (siehe meinen Artikel zum Umstieg von Windows auf Linux).

Allerdings hat man manchmal das Problem, dass man zwar mit diesen Anwendungen prima innerhalb der Wine Umgebung arbeiten kann, jedoch dann das Ergebnis zurück an eine Anwendung an das Host-Linux-System geben möchte. Dies jedes Mal durch Speichern und ein erneutes Öffnen zu tun ist zwar möglich jedoch nicht wirklich elegant. Besser ist es hier, direkt von Wine aus das Programm unter Linux zu öffnen und den Dateinamen mit Pfad zu übergeben.

Motivation und Ziel

In diesem Beispiel soll nun die Wine Umgebung so konfiguriert werden, dass Rich Text Dateien (.rtf) ausserhalb von Wine mit einer nativen Linux Textverarbeitung (hier FreeOffice 2016 TextMaker) geöffnet werden. Die Schwierigkeit besteht zum einen darin einen Befehl außerhalb von Wine auszuführen und außerdem dann den Pfad so umzuwandeln, dass dieser auch direkt in Linux geöffnet werden kann.

Umsetzung

Als erstes benötigen wir ein kleines Shellskript. Dieses Aufruf Skript hat zwei Aufgaben. Als Erstes muss es einen übergebenen Pfad von Wine (also z. B. mit C:) in eine für Linux auswertbares Format bringen (also z. B. /home/user/.wine32/). Im zweiten Schritt wird dann das Programm mit dem konvertierten Pfad aufgerufen. Wie oben geschrieben ist es in diesem Fall TextMaker.

Das Skript heißt in meinem Beispiel startTextMakerFromWine.sh und liegt unter ~/bin/. Natürlich kann man hier auch eigene Konventionen verwenden. Wichtig ist, der Datei das Recht zum Ausführen zu geben.

#!/bin/sh
if [ $1 ]; then
    pfad="$(winepath -u $1)"
fi
/usr/bin/textmaker16free $pfad

Das Skript an sich ist relativ simple. Ist ein Parameter angegeben, so wird dieser konvertiert. Wine liefert hierfür extra das Programm winepath mit. Der Parameter -u sorgt dafür, dass wir als Rückgabe einen Unix-Pfad erhalten. Dieser Pfad wird in der Variablen $pfad gespeichert. Die letzte Zeile sorgt noch dafür, dass dann das Programm mit dem ermittelten Pfad aufgerufen wird.

Im nächsten Schritt müssen wir in der Wine Umgebung dafür sorgen, dass die Dateiendung .rtf mit dieser Shell-Datei verbunden wird. In Wine kann man mit cmd /c start /unix <Befehl> einen Befehl außerhalb der emulierten Windowsumgebung anstarten. Genau diesen Mechanismus machen wir uns nun zu nutzen.

Die Zuordnungen der Dateiendung werden in der Registry gepflegt. Wir müssen also den Registrierungseditor starten. Dies geschieht durch den Befehl ``wine regedit``. Direkt unter ``HKEY_CLASSES_ROOT`` befinden sich die Dateiendungen und dort sollte auch die Endung ``.rtf`` zu finden sein. Standardmäßig ist diese Endung mit WordPad verbunden.

Wir ändern nun direkt unter .rtf die Zeichenfolge (Standard) ab und geben dieser einen neuen Wert, welchen wir dann definieren. In diesem Beispiel nennen wir diesen Linux.RTF. Das bedeutet, RTF-Dateien werden behandelt, wie dies im Schlüssel Linux.RTF definiert ist.

Dieser Schlüssel muss nun von uns angelegt werden. Wir klicken dazu mit der rechten Maustaste auf HEKY_CLASSES_ROOT und wählen “Neu” - “Schlüssel” aus. Diesen geben wir den Namen Linux.RTF. Die Zeichenfolge (Standard) darunter definiert die Beschreibung der Datei. Es ist also der Text, der im Explorer als Information angezeigt wird. Wir können diesen auf “Rich Text Format” ändern.

Als nächsten Schritt müssen wir eine Schlüsselhierarchie unter Linux.RTF anlegen.

  • Linux.RTF
    • shell
      • open
        • command

Mit dieser Struktur wird definiert, was für eine Aktion ausgeführt werden soll. In unserem Beispiel möchten wir das Dokument öffnen, also open. Im Schlüssel command wird dann der Befehl dazu definiert.

Wir ändern die Zeichenfolge ``(Standard)`` im Schlüssel ``command`` ab in
cmd /c start /unix /home/USER/bin/startTextMakerFromWine.sh %1

Wichtig! Natürlich muss der Pfad und ggf. der Name der Shelldatei angepasst werden.

Wer die Änderungen in der Registry nicht per Hand durchführen möchte, der kann hier auch eine Reg-Datei herunterladen und im Regedit über die Menüpunkte “Registrierung” - “Registrierungsdatei importieren” einfügen. Vor dem Import sollte jedoch der Pfad zur Shell-Datei angepasst werden.

Sollte sich der Pfad ändern, kann die Registrierungsdatei jederzeit erneut eingelesen werden.

Test der Funktion

Nun ist an sich alles eingerichtet. Ob das öffnen funktioniert kann sehr einfach getestet werden. Man startet einfach mit wine explorer einen Windows Explorer und öffnet (in diesem Beispiel) eine .rtf-Datei durch einen Doppelklick. Es sollte sich TextMaker ausserhalb von Wine mit der angeklickten Datei öffnen.