Monthly Archives: March 2008

KBlogger

Kubuntu KDE 4 Hardy Heron enthält KBlogger, ein Programm zum Erstellen von Blog Einträgen und zum Uploaden zum Blog. Diesen Eintrag schreibe ich gerade mit KBlogger zum Testen. Erster Eindruck ist sehr positiv. Ist zwar noch laut Beschreibung Alpha, aber es sollte das Leben mit meinem Blog einfacher machen ;-)

Konqui ist tot – es lebe Konqui

Nach zwei Monaten schwerer Krankheit ist heute durch ein Upgrade auf Hardy Heron Alpha 6 KDE 3 auf meinem Rechner gestorben. Was sich bereits im Januar andeutete, konnte nun vollendet werden: der Nachfolger KDE 4 lebt und hat nur noch wenige Verweise auf die alte KDE 3 (amarok, kile, k3b, kdevelop, kaffeine, …). Und auch diese wenigen Überbleibsel werden wohl im nächsten halben Jahr sterben.

KDE 3 du warst ein guter Partner. Du hast mich zu Linux gebracht und mir den Anfang vereinfacht. Du hast tolle neue Software bekommen, die bei mir zum Standard wurden. So z.B. Kontact und kaffeine. Nun bist du aber in die Jahre gekommen. Viele deiner Teile waren kaum noch wartbar. So wurde ein Nachfolger für dich entwickelt. Dieser dein Sohn hat dir am 11. Januar eine tödliche Wunde versetzt. Du der ergraute König bist tot – es lebe der König.

Ich bin beeindruckt

Ich hab gestern auf meinem Notebook Kubuntu-KDE4 Hardy Heron Alpha 6 neuinstalliert. Nach dem erfolgreichen ersten Start musste ich natürlich als erstes die Compositing Effekte einschalten. In meinem Notebook läuft eine Ati Karte und der proprietäre Treiber kann Compositing noch nicht wirklich lange und ich war daher positiv überrascht, dass der X-Server so konfiguriert ist, dass Compositing funktioniert. Nun eigentlich hätte ich hier stutzen müssen: wieso funktioniert das überhaupt ohne dass ich die manuelle Installation des proprietären Treibers angestoßen habe? Nun ich hab mich einfach nur gefreut, dass es funktioniert. Nach ein bißchen rumspielen mit den Systemsettings bin ich auf einen bug gestoßen, den ich bei Launchpad aufmachen wollte. Also wollte ich die benötigten Informationen raussuchen. Ich schaue in die Xorg.conf. Da steht irgendwie nur Quatsch. Kein “Ati”, kein “fglrx”. Also glxinfo gestartet. Hier dämmerte es mir, bei Vendor steht Mesa. Das ist der freie Treiber. glxgears gestartet: keine Probleme.

Ich bin wirklich beeindruckt: der freie Treiber für Ati Karten beherrscht 2D, 3D und auch Compositing. Auf mein Notebook kommt kein proprietärer Treiber mehr. Jetzt muss nur noch der freie NVIDIA auf den gleichen Stand kommen.

DSL 16.000

Wie man der Überschrift entnehmen kann: seit heute Abend hab ich DSL 16.000

Beweis ;-)
64 bytes from v32201.1blu.de (88.84.154.41): icmp_seq=1 ttl=57 time=9.14 ms
64 bytes from v32201.1blu.de (88.84.154.41): icmp_seq=2 ttl=57 time=9.27 ms
64 bytes from v32201.1blu.de (88.84.154.41): icmp_seq=3 ttl=57 time=9.30 ms
64 bytes from v32201.1blu.de (88.84.154.41): icmp_seq=4 ttl=57 time=8.99 ms

TwinView sucks…

Ich hab mich heute einem Bug gewidmet, der bei meinen Desktop Effekten mit TwinView auftritt. Das Problem ist, dass TwinView den Desktop erweitert. Also wenn man zwei Monitore mit 1280×1024 hat, wird daraus “ein” virtueller Monitor mit 2560×1024. Wenn man nun über die ganze Breite zeichnet und die Fenster nach der Mitte ausrichtet kann man sich denken was passiert ;-)

Zu meiner Verteidigung: ich kenne halt die KDE API noch nicht so gut und wenn es in Qt eine Klasse gibt, die mir die Dimension des Desktops liefert, dann nimm ich die halt. Leider beachtet dies halt nicht TwinView.

Da ich nun einen neuen Monitor hab, kann ich das jetzt auch mal ausprobieren. Außerdem wurde ein Bug dafür geöffnet. Ich muss den Effekt so ändern, dass er nur auf einem Bildschirm erscheint. Also was macht man als guter Informatiker? Richtig, man schaut sich an wie es andere gelöst haben. Quellcode von PresentWindows angeschaut und einen Aufruf effects->clientArea(…) entdeckt, der ein QRect zurückliefert, also genau das was ich eigentlich brauche. Ein Blick in die API bestätigt sofort meinen Verdacht: ich hab es falsch gemacht und clientArea(…) ist der richtige Weg. Also schnell mal geändert, mich schon gefreut, dass es gar nicht so viel Arbeit war und: nichts.

OpenGL macht mir einen Strich durch die Rechnung. clientArea(…) liefert mir zwar nur die Geometrie eines Bildschirms, aber wenn ich in OpenGL die Perspektive (3D) aufspanne, geschieht das wieder über den gesamten Bildschirm. Schön jetzt hatte ich zwar nur noch 1280×1024, male aber mittig in die 2560×1024. Also alles noch nichts gebracht.

An dieser Stelle setzt das Martin Syndrom ein. Anstatt eine Pause zu machen und nachzudenken (und den einfachen Weg zu finden) fange ich an einen Workaround zu programmieren. Ich vergleiche die gesamte Auflösung mit der Auflösung eines Monitors. Wenn die unterschiedlich sind, dann läuft TwinView. Nun nehme ich also für die Perspektive die gesamte “virtuelle” Auflösung, verschiebe aber das Zeichnen in den linken oder rechten Bildschirm. Yeah: funktioniert.

So nun kommt TwinView ins Spiel: zwei Bildschirme nebeneinander ist ja logisch, aber TwinView kann mehr. Man kann auch Bildschirme übereinander anordnen (wer sich das ausgedacht hat?). Nun hier wird es interessant. Auf dem unteren Bildschirm ist alles in Ordnung. Nur auf dem oberen da gibt es Probleme. Mein CoverSwitch Effekt nutzt ja Spiegelung. Das ist natürlich nur eine Pseudospiegelung. Ich spiegel alle Fenster, male dann eine semi-transparente silberne Fläche drüber und male dann alle Fenster normal obendrüber. Das ergibt bei einem Monitor das Gefühl von Spiegelung. Hier hab ich mal wieder die Rechnung ohne TwinView gemacht: natürlich werden die gespiegelten Fenster nicht komplett dargestellt. Irgendwo werden sie an der unteren Bildschirmkante abgeschnitten. Was passiert wenn man nun einen zweiten Bildschirm darunter ausrichtet? Richtig, sie werden weitergezeichnet. Natürlich ohne die Spiegelungsfläche, weil ein bißchen gedacht hab ich ja schon und zeichne natürlich nur im sichtbaren Bereich. Der Test sah echt toll aus (vor allem da die Bildschirme nur virtuell untereinander angeordnet waren).

Hier beginne ich mein Hirn einzuschalten. Ich überlege mir, ich muss das irgendwie abschneiden. Also eine clipping plane einziehen. Beim Lesen der OpenGL Doku fällt mir dann endlich die Lösung ins Auge: Viewports. Ich definiere einfach nur einen Zeichenbereich. Nämlich den, den mir clientArea() liefert. Keine Überprüfung mehr bin ich links, rechts, oben oder unten. Einfach das Zeichnen auf einen Monitor einschränken. Also Workaround auskommentiert glViewport() eingebaut, ausprobiert und ja es funktioniert. Zumindest links und rechts. Oben und unten hatte ich keine Lust mehr. Jetzt gibt es nur noch eine alles entscheidende Frage, die morgen an die Mailinglinst geht: darf ich viewports überhaupt benutzen oder gibt es irgendwelche ungeahnten Komplikationen mit schlecht geschriebenen Grafikkartentreibern? Ich denke aber ja.

Fazit nach einem Tag mit TwinView (zweiter Monitor ist mittlerweile ausgeschaltet): das ist ein großer Müll. Beim Programmieren war es bedingt angenehm auf dem zweiten Monitor die API Referenz zu haben, aber ansonsten ist das nur ein Müll. Kaum etwas funktioniert so wie man es erwartet und wenn die Monitore nicht perfekt nebeneinander angeordnet sind, ist es einfach nur störend.

Ich sehe grau

Ich habe einen neuen Monitor gekauft und kann endlich Graustufen erkennen :-) Es war fürchterlich. Gerade in KDE 4 konnte ich überhaupt keine Übergänge erkennen. Jetzt kann ich es richtig genießen.

Und nie wieder kaufe ich irgendetwas technisches bei einem Discounter :-(