Desktopumgebungen unter Linux



  • Hallo Leute.
    Ich habe einige Fragen zu den Desktopumgebungen und der X11 unter Linux. Ich denke mal ich fange einfach mal an :D.

    1.) Die ganzen Desktopumgebungen wie Gnome und KDE bauen ja auf der X11 auf und Zeichnen kommpllet selbst, bezieht sich dieses Selbstzeichnen wirklch auf jedes Element, wie Explorer oder wie mans unter Linux nennt etc.?

    2.) Gibt es im Netz eine detailierte Beschreibung wie das ungefähr arbeitet?

    3.) Man bringt ja mit einer Desktopumgebung auch eine eigene API für diese mit. Währe eine Desktopumgebung mit der WinAPI als API halt und einer Umgebung welche so ausieht wie Windows machbar? Wie?

    4.) Falls ja, währe das überhaupt Legal? Obwohl es gibt ja schon so Sachen wie WineHQ welche die WinAPI simuliert und sogar das ReactOS, welches ausieht wie Win2000 und die WinApi hat.

    5.) Gäbe es irgentwelche Nachteile für Linux dadurch, wenn man WinAPI direkt über eine Desktopumgebung oder normale API auf X11 portieren würde, z.b wegen Trojanern etc.?

    Ich bin einfach mal neugierig^^
    Hoffe ihr könnt mich aufkären 😃 .
    Mfg Wikinger75!



  • Hi

    als erstes wäre schreint man ohne 'h'

    Zu den Fragen:

    Zu 1:
    X11 ist "nur" eine Schnittstelle, um mit der Graphikkarte zu kommunizieren.
    Damit kann man Sachen zeichenen, z.b. ein Fenster mit einem Border, Text und Bilder
    drauf anzeigen. Zusätzlich kannst du auf Events reagieren, wie z.B. wenn die Maus sich
    über ein Fenster bewegt oder wenn du ein Klick gemacht hast, usw. Mit rohen X11 kannst du
    aber keine Buttons, Dropdown Toolboxes, usw. nicht sofort zeichnen sondern musst du alles
    per Hand machen.

    Da diese Arbeit aber sehr umständlich ist, haben sich GUI Toolkits durchgesetzt. Beispiele
    davon sind GTK+, QT, wxWidgets, Motif, unter anderem. Diese haben eine abstrakte API mit Widgets,
    die automatisch Widgets zeichnen. An sich sind sie nichts anders als leicht benutzbare X11 Wrapper
    Bibliotheken.

    Ein Window-Manager ist ein Stück Software, welches sich eines solchen Toolkits bedient (es gibt sicherlich
    manche, die X11 roh benutzen), um eine nützliche Oberfläche anzubieten. Die Aufgabe des Window-Managers
    ist dann also das Zeichnen von Bordern von Fenster und wie der Name schon sagt, diese zu Verwalten, usw.
    Ein Beispiel für ein sehr schlanker Window-Manager ist Fluxbox.

    Ein Desktop Environment (DE) ist eine große Ansammlung von Software, die zum einem ein Window-Maneger enthält
    und zum anderen viele verschiedene Applikationen mitbringt, z.b. Taschenrecher, Spiele, Filebrowser, usw.
    DEs werden in der Regel mit einem entsprechenden Toolkit geschrieben, um ein übergreifendes Look-and-Feel
    zu haben. Zusätzlich erweitern sie das Toolkit, damit andere Programmierer Software schreiben können, die
    Ressourcen vom DE verwenden können und zusätzlich das Look-and-Feel ohen weiteres verwenden können. Beispiele sind
    KDE (mit QT geschrieben), GNOME, XFCE (mit GTK+ geschrieben), usw.

    Da aber alles insgesamt auf X11 basieren, kann man Anwendungen, die mit GTK+ + GNOME-Erweiterungen von GTK+
    geschrieben wurde (a.k.a. GNOME-Anwendung) genauso gut unter GNOME, KDE, Fluxbox und X11 selber (sprich ohne
    Window manager) laufen, sofern die Bibliotheken installiert sind. Mach ein Experiment. Für folgendes aus:

    $ X :32
    

    Da wird wahrscheinlich alles nur schwarz. Dann drücke Strg+Alt+F7, dann bist du zurück. öffne ein Terminal
    und gibt da ein:

    $ xterm -display :32
    

    Es erscheint gar nichts, wenn du aber Strg+Alt+F8 drückst, wirst du ein xterm fenster sehen, oben rechts. Da kein Window manager
    läuft, wirst du kein Border sehen, es nicht verschieben können, usw.

    Statt xterm kannst du ganz was anders nehmen, gnome-terminal, konsole (natürlich der mit der richtigin Display Option) nehmen.
    Das zeigt, dass du nur auf die Bibliotheken angewiesen bist.

    Zu 2:
    Google ist dein Freund. Am besten suchst du nach X11 oder du schaust genauer in den Source Code rein. Aber
    ich weiß nicht, ob das so sinnvoll ist.

    Zu 3:
    Jein, siehe 1. Die API ist an sich dieselbe, die vom Toolkit. Die WinAPI ist aber keine API, die sich auschließlich
    für das Zeichnen Zeichnen zuständig ist, sondern für alles, was in Windows machbar ist. Das was der WinAPI am nächsten unter UNIX
    käme, wäre die POSIX API, aber sie hat mit X11 nichts zu tun. Die Toolkits lassen sich am Look-and-Feel durch Themes leicht anpassen,
    es ist also möglich das Windows-Look-And-Feel zu kopieren.

    Zu 4:
    Wine versucht die WinAPI für Linux zu schreiben, sprich ein Wrapper von POSIX mit den WinAPI Funktionen, um das Ausführen von
    Windows Code nativ zu unterstützen. Inwiefern diese Nachbildung legal ist, weiß ich nicht. Aber ich denke, am besten setzt man
    auf Toolkits, die sowohl für UNIX als auch Windows erhältlich sind (GTK+, QT, WxWidgets).

    Zu 5:
    Ja, ein Programm wäre nur bedingt lauffähig, das sieht man mit wine. Mit wine läuft mittlerweile ziemlich viel, aber eben nicht alles.
    Siehe liebe Punkt 4.



  • als erstes wäre schreint man ohne 'h'

    "Wäre", gut merk ich mir. 🙂

    Ein Desktop Environment (DE) ist eine große Ansammlung von Software, die zum einem ein Window-Maneger enthält
    und zum anderen viele verschiedene Applikationen mitbringt, z.b. Taschenrecher, Spiele, Filebrowser, usw.
    DEs werden in der Regel mit einem entsprechenden Toolkit geschrieben, um ein übergreifendes Look-and-Feel
    zu haben. Zusätzlich erweitern sie das Toolkit, damit andere Programmierer Software schreiben können, die
    Ressourcen vom DE verwenden können und zusätzlich das Look-and-Feel ohen weiteres verwenden können. Beispiele sind
    KDE (mit QT geschrieben), GNOME, XFCE (mit GTK+ geschrieben), usw.

    Achso ist das. Ich dachte immer GTK+ wurde nur wegen Gnome entwickelt und gehört wie eine API (native) zum zeichen einfach dazu. Ich glaube ich werde mir sogar den Source (Gnome, KDE, etc.) dan mal ankucken müssen um zu sehen wie das genau läuft 😃 . Aber man könnte auch für eine DE sowas wie eine eigene API zum zeichnen machen, wenn se das auch auf X11 direkt machen können. Sehe ich das Richtig?

    Zu 3:
    Jein, siehe 1. Die API ist an sich dieselbe, die vom Toolkit. Die WinAPI ist aber keine API, die sich auschließlich
    für das Zeichnen Zeichnen zuständig ist, sondern für alles, was in Windows machbar ist. Das was der WinAPI am nächsten unter UNIX
    käme, wäre die POSIX API, aber sie hat mit X11 nichts zu tun. Die Toolkits lassen sich am Look-and-Feel durch Themes leicht anpassen,
    es ist also möglich das Windows-Look-And-Feel zu kopieren.

    Zu 4:
    Wine versucht die WinAPI für Linux zu schreiben, sprich ein Wrapper von POSIX mit den WinAPI Funktionen, um das Ausführen von
    Windows Code nativ zu unterstützen. Inwiefern diese Nachbildung legal ist, weiß ich nicht. Aber ich denke, am besten setzt man
    auf Toolkits, die sowohl für UNIX als auch Windows erhältlich sind (GTK+, QT, WxWidgets).

    Gut, aber Wine ist ja nur ein Wrapper für Binärdaten. Könnte man da dan nicht direkt die WinAPI mittels Posixs und X11 auf Linux portieren, so das man den Code in Binäre Linuxdaten compielieren kann?

    Mfg Wikinger75.



  • Gut, aber Wine ist ja nur ein Wrapper für Binärdaten. Könnte man da dan nicht direkt die WinAPI mittels Posixs und X11 auf Linux portieren, so das man den Code in Binäre Linuxdaten compielieren kann?

    Wine ist kein Wrapper für Binärdateien.

    http://wiki.winehq.org/AboutWine
    http://www.winehq.org/docs/winelib-guide/winelib-introduction#WINELIB-WHATIS

    Aber man könnte auch für eine DE sowas wie eine eigene API zum zeichnen machen, wenn se das auch auf X11 direkt machen können. Sehe ich das Richtig?

    Ja. GTK+ ist ja nur eine von vielen GUI Bibliotheken. Gibt ja auch noch Qt und viele andere. Aber ganz ehrlich du wirst keine Lust haben dich mit X11 rumzuschlagen, da gibt es viele veraltete und merkwürdige Sachen und vieles ist einfach nicht gut dokumentiert. So etwas lässt man lieber andere Leute schreiben.



  • Wine ist kein Wrapper für Binärdateien.

    Gut.

    Ja. GTK+ ist ja nur eine von vielen GUI Bibliotheken. Gibt ja auch noch Qt und viele andere. Aber ganz ehrlich du wirst keine Lust haben dich mit X11 rumzuschlagen, da gibt es viele veraltete und merkwürdige Sachen und vieles ist einfach nicht gut dokumentiert. So etwas lässt man lieber andere Leute schreiben.

    Gut den Sinn hinter der Sache hab ich jetzt verstanden, aber warum ist X11 schlecht dokumentiert?

    Mfg Wikinger75!



  • Gut den Sinn hinter der Sache hab ich jetzt verstanden, aber warum ist X11 schlecht dokumentiert?

    warum... naja, X11 ist alt (23 Jahre). In der Zeit hat sich viel geändert. Dinge wurden hinzugefügt, entfernt etc. Und da man in der Regel nicht direkt X11 Code schreibt, sondern lieber GTK+ oder Qt oä. nimmt, ist die Doku auch nie so relevant. Aber sieh selbst:

    http://www.x.org/wiki/XorgDeveloperDocumentation
    http://www.x.org/wiki/DeveloperStart
    http://cgit.freedesktop.org/xorg/doc/xorg-docs/tree/



  • Wikinger75 schrieb:

    Achso ist das. Ich dachte immer GTK+ wurde nur wegen Gnome entwickelt und gehört wie eine API (native) zum zeichen einfach dazu. Ich glaube ich werde mir sogar den Source (Gnome, KDE, etc.) dan mal ankucken müssen um zu sehen wie das genau läuft 😃 . Aber man könnte auch für eine DE sowas wie eine eigene API zum zeichnen machen, wenn se das auch auf X11 direkt machen können. Sehe ich das Richtig?

    Nicht ganz, aber du lagst nicht so ganz falsch. Also, ich denke heute werden vor allem GTK+ und QT sehr von GNOME bzw. KDE beeinflusst, insbesondere weil viele Entwickler an beiden Projketen beteiligt sind (zumindest gilt das für GTK+ und GNOME).

    Peter Mattis und Spacer Kimball fingen mitte der 90er mit der Entwicklung vom
    "The GNU Image Manipulation Program" (a.k.a. GIMP). Damals haben sie das propietäre Motif-Toolkit verwendet. Irgendwann wollten sie aber alles mit freier Software und Bibliotheken schreiben und entschieden sich, selber ein Toolkit zu schreiben (welches am Anfang an sich nichts mit GUI Programmierung zu tun hatte). Das nannten sie The GIMP-Toolkit a.k.a. GTK. Mit der Zeit entwickelte sich GTK aber weiter und wurde dann getrennt von GIMP weiter entwickelt. Siehe http://de.wikipedia.org/wiki/GTK%2B#Geschichte_und_Entwicklung

    Wikinger75 schrieb:

    Gut den Sinn hinter der Sache hab ich jetzt verstanden, aber warum ist X11 schlecht dokumentiert?

    X11 ist steinalt. Und man kann sehr genaue Information finden, mit der man aber trotzdem nicht weiterkommt, weil die Konzepte einfach schwer zu verstehen sind.

    Xlib Programming Manual | ISBN: 1565920023

    sehr genaues Buch, verdammt schwer zu verstehen.

    Aus heutiger Sicht macht es keinen Sinn mehr sich gründlich mit X11 auszukennen. Klar, wenn du ein eigenes Toolkit schreiben willst, dann kommst du nicht drum rum, aber als normale "Programmier", der nur mal "schnell" ein fenster haben will, sollte direkt GTK+, QT, usw. nehmen.



  • warum... naja, X11 ist alt (23 Jahre). In der Zeit hat sich viel geändert. Dinge wurden hinzugefügt, entfernt etc. Und da man in der Regel nicht direkt X11 Code schreibt, sondern lieber GTK+ oder Qt oä. nimmt, ist die Doku auch nie so relevant. Aber sieh selbst:

    http://www.x.org/wiki/XorgDeveloperDocumentation
    http://www.x.org/wiki/DeveloperStart
    http://cgit.freedesktop.org/xorg/doc/xorg-docs/tree/

    Naja ist ja auch zu verstehen, warum es dann so gemieden wird, aber was ich jetzt nicht verstehe, was haben sich die Programmierer von Linux dabei gedacht? Gibt es einen Grund für diesen Wirwar oder ist das nur schlicht ein Designfehler?

    X11 ist steinalt. Und man kann sehr genaue Information finden, mit der man aber trotzdem nicht weiterkommt, weil die Konzepte einfach schwer zu verstehen sind.

    Xlib Programming Manual | ISBN: 1565920023

    sehr genaues Buch, verdammt schwer zu verstehen.

    Aus heutiger Sicht macht es keinen Sinn mehr sich gründlich mit X11 auszukennen. Klar, wenn du ein eigenes Toolkit schreiben willst, dann kommst du nicht drum rum, aber als normale "Programmier", der nur mal "schnell" ein fenster haben will, sollte direkt GTK+, QT, usw. nehmen.

    ja klar, mein fav. wäre wie könnte es anders sein GTKmm, da ich am liebsten Gnome verwende und auch C++ (Bisjen C is aber auch dabei 😉 ) progge, aber ich finde diese Wörter "low" und "level" hörn sich in einer kombination verlockend an^^

    Mfg Wikinger75!

    Edit: ich werde mir mal die Links ansehen, wenn ich irgentwann wirklich bock bekomme mir X11 reinzuziehen, dann hab ich ja schon ein Buchtipp, jedoch dürfte es noch dauern 😃

    Edit 2: ich habe einen Link gefunden, der mir auch ein bisjen erklärt was ich wissen möchte 😃 http://de.wikipedia.org/wiki/X-Window-System



  • Wikinger75 schrieb:

    warum... naja, X11 ist alt (23 Jahre). In der Zeit hat sich viel geändert. Dinge wurden hinzugefügt, entfernt etc. Und da man in der Regel nicht direkt X11 Code schreibt, sondern lieber GTK+ oder Qt oä. nimmt, ist die Doku auch nie so relevant. Aber sieh selbst:

    http://www.x.org/wiki/XorgDeveloperDocumentation
    http://www.x.org/wiki/DeveloperStart
    http://cgit.freedesktop.org/xorg/doc/xorg-docs/tree/

    Naja ist ja auch zu verstehen, warum es dann so gemieden wird, aber was ich jetzt nicht verstehe, was haben sich die Programmierer von Linux dabei gedacht? Gibt es einen Grund für diesen Wirwar oder ist das nur schlicht ein Designfehler?

    Was die Linux Leute sich dabei gedacht haben? Natürlich nichts, weil Linux überhaupt nichts mit X11 zu tun hat, und umgekehrt auch. X11 ist nicht etwas, was man von Linux entwickelt hat. Siehe die Geschichte von X11 in der Wikipedia.

    Designfehler? Das würde ich nicht so bezeichnen. X11 ist vor vielen Jahren entstanden, als es grundsätzlich andere Architekturen + Programmiertechniken/Technologie gab. X11 ist ein auch sehr groß und wird seit Jahren erweitert, usw. Da ist es normal, dass die Entwicklung ins Stocken gerät. Aber seit dem Form durch XOrg hat sich auch einiges gebessert. Schau in die Wikipedia (vor allem im englischen Beitrag gibt es mehr Info) über die Geschichte, da wirst du was einiges verstehen.



  • Was die Linux Leute sich dabei gedacht haben? Natürlich nichts, weil Linux überhaupt nichts mit X11 zu tun hat, und umgekehrt auch. X11 ist nicht etwas, was man von Linux entwickelt hat. Siehe die Geschichte von X11 in der Wikipedia.

    Designfehler? Das würde ich nicht so bezeichnen. X11 ist vor vielen Jahren entstanden, als es grundsätzlich andere Architekturen + Programmiertechniken/Technologie gab. X11 ist ein auch sehr groß und wird seit Jahren erweitert, usw. Da ist es normal, dass die Entwicklung ins Stocken gerät. Aber seit dem Form durch XOrg hat sich auch einiges gebessert. Schau in die Wikipedia (vor allem im englischen Beitrag gibt es mehr Info) über die Geschichte, da wirst du was einiges verstehen.

    Ja habe es auch grade gefunden.

    Nun ja ich denke es ist nun alles geklärt. Thx.

    Mfg Wikinger75!


Anmelden zum Antworten