Desktop Umgebung für Linux in Python möglich?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Hi,

Zugegeben eine etwas waghalsige Frage, aber:

Wäre es denkbar, eine Desktop Umgebung wie xfce oder lxde in reinem Python zu implementieren? in pygtk oder evtl. auch in wxPython?
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

Warum denn nicht? Die Frage ist natuerlich, was genau du als Desktup Umgebung ansiehst. Ich persoenlich halte da den Window Manager fuer den Flaschenhals und da es da mehrere gibt, sollte es insgesamt kein Problem sein. Aber ganz ehrlich: Eine Desktop Umgebung suche ich mir nicht nach der Programmiersprache aus in der sie geschrieben wurde.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

cofi hat geschrieben:Warum denn nicht? Die Frage ist natuerlich, was genau du als Desktup Umgebung ansiehst. Ich persoenlich halte da den Window Manager fuer den Flaschenhals und da es da mehrere gibt, sollte es insgesamt kein Problem sein. Aber ganz ehrlich: Eine Desktop Umgebung suche ich mir nicht nach der Programmiersprache aus in der sie geschrieben wurde.
Ja, nein ist nur ein Gedankenexperiment. Ich würde mir das eh nicht antun ;) Aber es wäre toll, finde ich (man könnte es schnell patchen oder patches liefern). Man könnte das sehr schnell entwickeln, denke ich, wenn der Compile Zyklus wegfällt. Ich denke da an lxde, xfce oder enlightment, natürlich nicht an gnome oder kde.
syntor
User
Beiträge: 88
Registriert: Donnerstag 2. Dezember 2010, 03:56

Ganz in Python kannst du das nicht machen, da, soweit ich weiss, keine Python Schnittstele zu X besteht.

Du müsstest dafür eine C-Extension schreiben und darin selbst eine Schnittstelle zu X implementieren.


Hier ist eine Art "Manual" wie du mit X interagierst.

Du könntest dir auch awesome ansehen, das ist ein schneller Tiling-Windowmanager den man über Lua anspricht. Statt von Grund auf anzufangen, könntest du vielleicht auch das als Grundlage nehmen.
Zuletzt geändert von syntor am Donnerstag 16. Dezember 2010, 09:27, insgesamt 1-mal geändert.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

syntor hat geschrieben:Ganz in Python kannst du das nicht machen, da soweit ich weiss keine Python Schnittstele zu X besteht.
[...]

Du könntest dir auch awesome ansehen, das ist ein schneller Tiling-Windowmanager den man über Lua anspricht. Statt von Grund auf anzufangen, könntest du vielleicht auch das als Grundlage nehmen.
Ja, danke. awesome habe ich auch schon probiert, finde es aber nicht ganz so "awesome", aber ich habe mir das auch nicht so genau angesehen. ;) Aber grundsätzlich gings. Vielleicht gibts ja schon etwas, wo python als Grundsprache verwendet wird.
BlackJack

@syntor: Es gibt zumindest einen Ansatz einer Anbindung an die `xlib`: http://python-xlib.sourceforge.net/ und ich glaube hier im Forum hatte sich damit auch mal jemand intensiver beschäftigt.

Auch ein Windowmanager wurde schon in Python in Angriff genommen: http://code.google.com/p/samurai-x/
syntor
User
Beiträge: 88
Registriert: Donnerstag 2. Dezember 2010, 03:56

Danne hätte ich vielleicht zuerst Google bemühen sollen, anstatt zu einer vorschnellen Antwort zu greifen :roll:

@Francesco: Natürlich ist ein Windowmanager Geschmacksache. awesome ist nicht bloss ein Windowmanager, es ist zugleich auch ein Framework. awesome's Standardverhalten ist auch nicht auf Schnickschnack ausgelegt, sondern auf useability, was ihm - IMHO - auch sehr gut gelingt. Durch entsprechende Konfiguration kannst du das Tiling-Verhalten auch abschalten. Ich selbst halte es für genial :)
Zuletzt geändert von syntor am Donnerstag 16. Dezember 2010, 09:39, insgesamt 2-mal geändert.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

BlackJack hat geschrieben:@syntor: Es gibt zumindest einen Ansatz einer Anbindung an die `xlib`: http://python-xlib.sourceforge.net/ und ich glaube hier im Forum hatte sich damit auch mal jemand intensiver beschäftigt.

Auch ein Windowmanager wurde schon in Python in Angriff genommen: http://code.google.com/p/samurai-x/
Asso, danke BlackJack für Deine Hinweise.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

syntor hat geschrieben: [...]

@Francesco: Natürlich ist ein Windowmanager Geschmacksache. awesome ist nicht bloss ein Windowmanager, es ist zugleich auch ein Framework. awesome's Standardverhalten ist ist auch nicht auf Schnickschnack ausgelegt, sondern auf useability, was ihm - IMHO - auch sehr gut gelingt. Durch entsprechende Konfiguration kannst du das Tiling-Verhalten auch abschalten. Ich selbst halte es für genial :)
Aha, dann habe ich es zu schnell auf die Seite geschoben. ;)
Zuletzt geändert von Francesco am Donnerstag 16. Dezember 2010, 09:55, insgesamt 1-mal geändert.
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

syntor hat geschrieben:Ganz in Python kannst du das nicht machen, da, soweit ich weiss, keine Python Schnittstele zu X besteht.

Du müsstest dafür eine C-Extension schreiben und darin selbst eine Schnittstelle zu X implementieren.
Oder man nimmt ctypes. Das kann man das vollständig in Python implementieren.
lunar

@Darii: ctypes ist halt viel Fleißarbeit, und die Xlib-API ist nun auch beileibe nicht die schönste. Insofern wäre eine Anbindung bzw. eine Python-Implementierung des X11-Protokolls doch recht schickt.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Frage mich ob es Sinn macht, irgendwas in Richtung X11 zu unternehmen, wo doch einige Linux Distributionen angekündigt haben, weg vom X11 Protokoll und statt dessen Wayland zu nutzten...

Spontan konnte ich aber nichts über Python + Wayland finden...

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

BlackJack hat geschrieben:@syntor: Es gibt zumindest einen Ansatz einer Anbindung an die `xlib`: http://python-xlib.sourceforge.net/ und ich glaube hier im Forum hatte sich damit auch mal jemand intensiver beschäftigt.

Auch ein Windowmanager wurde schon in Python in Angriff genommen: http://code.google.com/p/samurai-x/
Ja, ich glaub fred.reichbier hat sich an ooxcb gemacht, ein Python-Binding für XCB zu machen.

Und natürlich geht sowas, Francesco. Rate mal was GNOME 3.0 macht: die GNOME-Shell ist in JavaScript geschrieben (zurzeit mit gjs, einem Desktop-JavaScript-Interpreter der Firefox' JavaScript-Engine SpiderMonkey/TraceMonkey/JägerMonkey nutzt). Wo wir grad bei Firefox sind, der besteht nämlich auch aus viel JavaScript-Code der auf XULRunner aufbaut. Und JavaScript und Python geben sich auf dieser Ebene nicht viel.

@jens: Sich Gedanken um Wayland zu machen lohnt sich nicht, denn Wayland ist noch so früh in der Entwicklungphase dass man manchmal das Gefühl hat die Entwickler haben sich selbst nicht so die Gedanken dazu gemacht. Außerdem ist das, wenn man GTK+ oder Qt nutzt, eh ziemlich egal, da diese sich um die Kommunikation mit dem unterliegendem Darstellungssystem (X11, Wayland, Quartz, GDI, DirectWrite) kümmern. Das einzige wo man "direktere Integration" bräuchte wäre ein Window Manager (und Wayland hat kein Konzept von Window-Managern) oder vielleict so Sachen wie Desktophintergrund/Panels.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

lunar hat geschrieben:@Darii: ctypes ist halt viel Fleißarbeit, und die Xlib-API ist nun auch beileibe nicht die schönste. Insofern wäre eine Anbindung bzw. eine Python-Implementierung des X11-Protokolls doch recht schickt.
Auf keinen Fall schlimmer als den Wrapper in C selbst zu schreiben. Der einzige Unterschied ist, dass es noch keinen Wrapper-Generator wie swig für ctypes gibt.
Leonidas hat geschrieben:Außerdem ist das, wenn man GTK+ oder Qt nutzt, eh ziemlich egal, da diese sich um die Kommunikation mit dem unterliegendem Darstellungssystem (X11, Wayland, Quartz, GDI, DirectWrite) kümmern..
Halb OT: Streiche Quartz oder GTK+ aus der Liste. Das funktioniert zehn Jahre nach der Einführung von OSX immer noch nicht richtig zusammen. :(
lunar

@jens: Eine solche Ankündigung gibt es bis jetzt nur von Ubuntu. Überhaupt ist meines Erachtens noch nicht sicher, dass Wayland sich durchsetzen wird. Es müssten die Desktop-Umgebungen mitziehen, was nicht mit dem Umschreiben der Fensterverwaltung getan ist¹. Außerdem verlangt der Umstieg auf Wayland mal ebenso die Verfügbarkeit guter² freier Treiber für Grafikhardware, denn Wayland setzt zwingend KMS voraus, und diese Kernel-Schnittstelle steht proprietären Treibern nicht zur Verfügung.

¹: An X.org hängt mehr als nur die Fensterverwaltung, sondern u.a. auch die Verwaltung und Konfiguration der Eingabegeräte oder der Anzeige.
²: Gut meint an dieser Stelle wesentlich mehr als nouveau oder die freien Radeon-Treiber.

@Darii: Aber wesentlich schlimmer als die Anbindung zu nutzen, die jemand anderes geschrieben hat ;) Ansonsten stimme ich Dir natürlich zu, ctypes ist wesentlich angenehmer als eine Anbindung in C zu schreiben.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Darii hat geschrieben:Halb OT: Streiche Quartz oder GTK+ aus der Liste. Das funktioniert zehn Jahre nach der Einführung von OSX immer noch nicht richtig zusammen. :(
Ja, gut, OS X... dann streiche ich mal Quartz.

@lunar: Also ich weiß nicht, aber die Radeon-Treiber finde ich nicht schlecht. Auf jeden Fall besser als die proprietären, denn mit denen habe ich nie Ärger mit KMS, Multi-Screen, XRandR etc.

Ansonsten stimme ich natürlich allen anderen Punkten zu.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Darii
User
Beiträge: 1177
Registriert: Donnerstag 29. November 2007, 17:02

Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

Darii hat geschrieben:x-post zu: http://forum.ubuntuusers.de/topic/deskt ... -moeglich/ :/
Ja, sorry, ich dachte, wenn man in beiden Foren fragt, ist die Palette an Anworten noch höher. Normalerweise mache ich das nicht, es sei denn auch, eine Info ist schwieriger zu bekommen. Aber das Thema hier passt ganz gut in beide Foren.
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Ich habe nichts gegen cross-postings. Es ist aber höflicher, von Anfang an in allen Startpostings in den Foren darauf hinzuweisen und die Links zu den entsprechenden anderen Threads zu posten.
Francesco
User
Beiträge: 824
Registriert: Mittwoch 1. Dezember 2004, 12:35
Wohnort: Upper Austria

derdon hat geschrieben:Ich habe nichts gegen cross-postings. Es ist aber höflicher, von Anfang an in allen Startpostings in den Foren darauf hinzuweisen und die Links zu den entsprechenden anderen Threads zu posten.
Ja, sorry, nächstes Mal dann...
Antworten