2012-03-24 8 views
1

Ich habe eine kleine Anwendung geschrieben in Python, die Python Gtk3 Bindungen verwendet. Ein Teil der Anwendung lädt Symbole aus dem Systemsymbol Thema, wie folgt aus:Verwenden von Python Gtk3-Bindungen ohne X11

def get_icon(name): 
    from gi.repository import Gtk 
    icon_theme = Gtk.IconTheme() 
    if icon_theme.has_icon(name): 
     return icon_theme.load_icon("status-red", 32, 0) 

Dies macht genau das, was ich will - lädt ein Symbol und gibt mir eine GdkPixbuf.Pixbuf Instanz.

Das Problem kommt, wenn meine Komponententests ausgeführt werden. Ich habe Tests, die diesen Code testen, und alles funktioniert gut, wenn die Tests auf einem Entwicklungscomputer ausgeführt werden.

Die Tests werden jedoch automatisch ausgeführt, bevor ein Paket erstellt wird (als Teil unseres CI-Prozesses), und Anwendungspakete werden auf einem kopflosen Server erstellt. Meine Frage ist also: Gibt es eine Möglichkeit, nur die Klasse IconTheme von Gtk3 zu verwenden, ohne dass X11 läuft?

+2

Ein Icon-Thema ist immer mit einem 'Bildschirm' verbunden, der ohne X11 ziemlich schwer zu bekommen ist. Ich würde versuchen, die Tests innerhalb von Xvfb auszuführen. –

Antwort

1

Es gibt keine Möglichkeit, eine gtk + gegen X11 ohne DISPLAY zu kompilieren.

Aber Sie können die Testsuite immer innerhalb von xvfb ausführen, einem X-Server mit virtuellem Framebuffer, so dass Sie nicht von einem vorhandenen Terminal aus starten müssen, aber Sie benötigen immer noch X. Es ist ziemlich einfach;

xvfb-run.sh python testsuite.py