Kompatibilität
Auf dieser Seite
Jede Anwendung unten nennt die Version, mit der sie erprobt wurde, den Befehl, der sie gestartet hat, und was nicht ausprobiert wurde. Die Läufe wurden unter Debian 13 mit den Paketen der Distribution wiederholt. Die Seite richtet sich an alle, die wissen wollen, ob ihre Version und ihre Startweise abgedeckt sind.
- GIMP 3.0.4, Modus
tcp: zwei Skripte und ein Fehler, wie erwartet zurückgegeben. - Krita 5.2.9, Modus
tcp: dasselbe und das Beispiel des Leitfadens. - Blender 4.3.2, Modus
tcp: dasselbe, mit einem gerenderten Bild; das erste Rendern dauerte etwa 30 s. - Inkscape 1.4, Modus
cli: ein Skript und ein Fehler wie erwartet sowie eine PNG-Aufnahme. - LibreOffice 25.2.3.2, Modus
uno: dasselbe wie bei GIMP, in Calc; die Version bliebunknown.
In jedem Lauf war der Hub die ausführbare Datei 0.1.0, die Brücken waren die Dateien des .deb-Pakets, und das Home-Verzeichnis, das Token und das Profil der Anwendung waren neu. Die Pakete waren GIMP 3.0.4-3+deb13u11, Krita 1:5.2.9+dfsg-1+deb13u1, Blender 4.3.2+dfsg-2, Inkscape 1.4-6, LibreOffice 4:25.2.3-2+deb13u8 und Python 3.13.5-1. Eine andere Distribution, ein anderer Build einer Anwendung oder eine neuere Version wurden nicht ausprobiert.
Jeder Lauf wurde zweimal gemacht. In jedem wurde der Anwendung ein erstes Skript gesendet, ein zweites folgte (außer bei Inkscape), ein Skript, das ValueError auslöste, kam mit status: error und der Zeile der Fehlerspur im Skript zurück, und get_state wurde gelesen. Die Dauern unten stammen aus dem ersten Lauf; der zweite wich um bis zu wenige Hundertstelsekunden ab, außer wo es anders steht. Der Leitfaden jeder Anwendung, in ihrem Abschnitt verlinkt, nennt die Befehle zum Starten der Brücke und die Referenz.
GIMP
GIMP 3.0.4, Modus tcp. Die Brücke läuft in einem GIMP, das ohne Benutzeroberfläche gestartet wurde. Ohne X-Display endete derselbe Befehl mit Exit-Code 1 und Gtk-WARNING: cannot open display, und der Port 9311 öffnete sich nie. Der Lauf gab GIMP deshalb ein virtuelles X-Display; der Port war 9311, und der Token-Pfad war ein Wegwerfpfad.
LIBREMODULAR_BRIDGE_PORT=9301 \
LIBREMODULAR_TOKEN_PATH=$HOME/.config/libremodular-mcp/token \
gimp-3.0 --new-instance --no-data --no-fonts --no-interface --batch-interpreter python-fu-eval \
-b "exec(open('/usr/share/libremodular-mcp/bridges/gimp_bridge.py', encoding='utf-8').read()); serve_main_thread()"
- Der Port lauschte etwa 6 s nach dem Start von GIMP;
get_statefürhublistete danachgimpals verbunden auf, Version3.0.4, Brückenversion1. - Ein Skript, das ein Bild anlegte, eine Ebene füllte und es exportierte, gab
status: okin 0,36 s mit{"png": 2223}zurück; das PNG war 128 × 128 Pixel groß. Ein zweites folgte in 0,26 s, und die Brücke blieb verbunden. get_statefürgimpgab{"active_image": null, "images": []}zurück, weil das Skript sein Bild gelöscht hatte.
Nicht ausprobiert: die Brücke aus der interaktiven Python-Konsole von GIMP starten (der Menüweg, die Umgebung, die sie erhält, wie lange die Brücke nach dem Schließen der Konsole lebt); mehrere geöffnete Bilder; eine Auswahl, die nicht leer ist; das Beispiel des Leitfadens wie geschrieben. Ein mit einem Modell gespieltes Rezept steht auf der GIMP-Seite. Leitfaden.
Krita
Krita 5.2.9, Modus tcp. Der Lauf nutzte nicht das Vorgehen des Leitfadens, die Brücke in Scripter auszuführen. Er startete Krita auf einem virtuellen X-Display mit einer einzeiligen Startup-Erweiterung in einem neuen Profil, die die Brückendatei ausführt. Der Port lauschte 10,4 bis 10,7 s nach dem Start von xvfb-run.
xvfb-run -a krita --nosplash
Die Erweiterung, exec(open('/usr/share/libremodular-mcp/bridges/krita_bridge.py', encoding='utf-8').read()), war der gesamte Inhalt ihrer __init__.py.
get_statefürhublistetekritaals verbunden auf, Version5.2.9, Brückenversion1.- Ein Skript, das ein Dokument von 300 × 200 anlegte, gab
status: okin 0,96 s zurück (1,20 s im zweiten Lauf); ein zweites brauchte 0,20 s. Das Beispiel des Leitfadens, das eine EbeneNoteshinzufügt, gab{"layers": ["Background", "Notes"]}in 0,12 s zurück. get_stategab das Dokument mit seinem FarbmodellRGBA, der TiefeU8und dem ProfilsRGB-elle-V2-srgbtrc.icczurück sowie eine PNG-Aufnahme von 300 × 200 Pixeln im Modus 600.
Die Kodierung ist wichtig. Das eingebettete Python von Krita liest Dateien mit der Kodierung des Locales, unter dem es gestartet wurde: ANSI_X3.4-1968 unter LANG=C.UTF-8 und unter LANG=C, UTF-8 unter en_US.UTF-8 und fr_FR.UTF-8. Die Kommentare der Brücke enthalten Zeichen mit Akzent, daher brach ein Befehl ohne encoding='utf-8' unter dem Locale C mit UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 3 ab. Die Befehle der Leitfäden nennen die Kodierung.
Nicht ausprobiert: Scripter; mehrere geöffnete Dokumente; ein Dokument mit einer Ebenengruppe. Ein mit einem Modell gespieltes Rezept steht auf der Krita-Seite. Leitfaden.
Blender
Blender 4.3.2, Modus tcp. Die Brücke läuft in einem Blender, das im Hintergrundmodus ohne Benutzeroberfläche und ohne Display gestartet wurde. Der Befehl führt die Brückendatei aus und übergibt der Brücke dann mit serve_main_thread() den Hauptthread; ohne diesen Aufruf endet der Befehl, und die Brücke endet mit ihm.
blender --background --python boot.py
import runpy
ns = runpy.run_path('/usr/share/libremodular-mcp/bridges/blender_bridge.py')
ns['serve_main_thread']()
- Der Port lauschte 1,5 s nach dem Start;
get_statefürhublisteteblenderals verbunden auf, Version4.3.2, Brückenversion1. - Ein Skript, das einen Würfel baute und mit 128 × 128 Pixeln rendern ließ, gab
status: okmit{"engine": "BLENDER_EEVEE_NEXT", "png": 10091}zurück; das PNG war 128 × 128 Pixel groß. Dasselbe Skript, ein zweites Mal gesendet, brauchte 0,12 s. - Das erste Rendern in einem neuen Profil dauerte 30,5 s, im zweiten Lauf 31,2 s, bei auf 120 s erhöhter Frist des Hubs. Mit der Standardfrist von 30 s ergaben fünf neue Profile viermal
okin 30,1 bis 30,7 s und einmaltimeoutbei 30,0 s, wonach der nächste Aufrufbusyerhielt, bis das Rendern endete. Warum das erste Rendern langsam ist, wurde nicht untersucht. Erhöhen Siedefault_timeout_sim Abschnitt[hub]vonconfig.toml, oder rendern Sie einmal von Hand, bevor ein Modell es tut. get_statefürblendergab die Szene, ihre Objekte, den Bereich der Einzelbilder1bis250, die Render-Engine und die ausgewählten Objekte zurück.
Ein früherer Lauf, im Journal (auf Englisch) festgehalten, fand bei 1 von 23 Versuchen ein Hängen von bpy.ops.render.render, aufgerufen aus dem eigenen Thread der Brücke, und keines bei 11 Versuchen mit serve_main_thread(). Dieser Lauf wurde hier nicht wiederholt.
Nicht ausprobiert: die Brücke aus der Konsole des Arbeitsbereichs Scripting eines geöffneten Blender starten; ein echter Bildschirm; andere Operatoren als das Hinzufügen eines Würfels und das Rendern; mehrere Szenen. Ein mit einem Modell gespieltes Rezept steht auf der Blender-Seite. Leitfaden.
Inkscape
Inkscape 1.4, Modus cli. Es gibt keine Brücke: Der Hub startet pro Skript einen Python-Prozess, mit /usr/bin/python3 und den Erweiterungen in /usr/share/inkscape/extensions, und führt inkscape einmal aus, um eine Aufnahme zu exportieren. Der einzige Befehl ist der Konfigurationseintrag:
[apps.inkscape]
enabled = true
get_statefürhublisteteinkscapeals verbunden auf, Version1.4, im Moduscli.- Ein Skript, das eine Ebene
Notesund ein Rechteck hinzufügte, gab{"layers": ["Layer 1", "Notes"]}in 0,16 s zurück. get_stategabelement_count4, eine Breite von210mm, eine Höhe von297mmund die beiden Ebenen zurück sowie eine PNG-Aufnahme von 794 × 1 123 Pixeln im Modus 600.
Nicht ausprobiert: OMP_NUM_THREADS allein, ohne OPENBLAS_NUM_THREADS (das Modul setzt beide); ein größeres Dokument; ein gleichzeitig geöffnetes Inkscape-Fenster. Ein mit einem Modell gespieltes Rezept steht auf der Inkscape-Seite. Leitfaden.
LibreOffice
LibreOffice 25.2.3.2, Modus uno. Ein Starter startet LibreOffice mit seinem Fenster und danach die Brücke. Der Lauf nutzte ein virtuelles X-Display und setzte in config.toml den UNO-Port auf 2102 und den Brückenport auf 9314.
libremodular-launch libreoffice --bridge-file /usr/share/libremodular-mcp/bridges/uno_bridge.py
- Der Starter kehrte nach 0,01 s zurück, und 0,1 s später waren die drei Ziele
libreoffice-writer,libreoffice-calcundlibreoffice-impressverbunden, mitapp_versionbeiunknown. Der Leitfaden erklärt es: Startet die Brücke, bevor LibreOffice lauscht, behält der Hubunknown, die Version seiner aktuellen Verbindung, bis er sich erneut verbindet. Es blieb im gesamten Laufunknown. Im Rezept wurde der Hub gestartet, nachdem LibreOffice lauschte, 1,3 s nach dem Starter, undget_stategab25.2.3.2. Eine direkte UNO-Probe las25.2.3.2. - Ohne geöffnetes Dokument erhielt das Skript des README-Beispiels
doc = None, legte ein Calc-Dokument an und schriebA1undB2. Es gab{"a1": 42.0, "b2": "hello", "sheet": "Sheet1"}in 1,50 s zurück; erneut ausgeführt, in 7 ms. get_statefürlibreoffice-calcgab das Tabellenblatt und das DokumentUntitled 1der Familiecalczurück sowie eine PNG-Aufnahme von 828 × 1 170 Pixeln im Modus 600.
In diesem Lauf wurde nur das Ziel Calc gesteuert. Die beiden Tests des Repositorys, die ein echtes LibreOffice über die Brücke steuern, cargo test --locked --test libreoffice_real -- --ignored --nocapture, bestanden in 6,2 s. Die Version 24.2.7.2 aus den Paketen von Ubuntu 24.04 wurde früher erprobt, wie das Journal (auf Englisch) festhält; sie wurde hier nicht wiederholt.
Nicht ausprobiert: eine echte Desktop-Sitzung; das PNG eines Dokuments mit mehreren Tabellenblättern oder Seiten; welches Dokument das aktuelle ist, wenn der Fokus auf einem anderen Fenster liegt; ein Kaltstart, der langsamer ist als 5 s. Ein mit einem Modell gespieltes Rezept steht auf der LibreOffice-Seite. Leitfaden.