ubuntuusers.de

Patch: Feste Breite für die Einträge in der Fensterliste

Status: Gelöst | Ubuntu-Version: Ubuntu
Antworten |

Streifenschmerle

Avatar von Streifenschmerle

Anmeldungsdatum:
5. April 2006

Beiträge: 461


Update 04.07.07 Die Attachements müßten jetzt wieder alle funktionieren. \––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––- Update 21.04.07 Dank dem User VolumenKnOpf konnte nun auch ein Paket für die 32-Bit-Version von Feisty ergänzt werden. \––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––- Update 21.04.07 Ich habe nun auch den passenden Patch und ein Paket (AMD64-Architektur) für Feisty ergänzt. Ich kann leider gegenwärtig nicht sagen, ob und wann ich eine Möglichkeit haben werde, auch ein Paket für die 32-Bit-Version von Feisty zu erstellen, aber man kann ja auch ohnehin wie unten beschrieben zur Methode des manuellen Kompilierens greifen.
Wenn jemand ein 32-Bit-Paket zur Verfügung stellen möchte, kann das natürlich gerne hier integriert werden ☺ \––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––- Nachtrag: Es sind nun als Attachements auch Pakete für Edgy (Architekturen amd64 und i386, Version 2.16.1) verfügbar, die einfach installiert werden können, um in den Genuß des hier beschriebenen Patchtes zu kommen. Dabei ist allerdings zu beachten, daß es bei der Installation der Pakete natürlich nicht die Möglichkeit gibt, die gewünschte feste Breite der Fensterlisteneinträge selbst zu definieren (der voreingestellte Wert ist momentan 158 Pixel). Wer die Breite anpassen möchte, sollte also die folgende "manuelle" Anleitung befolgen.

\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––\––-

Hallo,

eine Sache, die mir bereits zu Beginn meiner Ubuntu-Nutzung aufgefallen war, ist, daß sich die Symbole in der Fensterliste des Gnome-Panels recht seltsam verhalten: Sie ändern sehr dynamisch ihre Größe, je nach dem wie lange der Text im Fenstertitel ist, so daß manchmal ein Eintrag bereits den ganzen Platz der Fensterliste belegt. Dieses Verhalten hat mich seit jeher ein wenig irritiert, schöner finde ich es, wenn (wie z.B. unter Windows) alle Einträge erstmal eine feste Breite zugewießen bekommen und sich diese erst ändert, wenn die Fensterliste so voll wird, daß nicht mehr alle Einträge draufpassen würden.
Offenbar stehe ich mit diesem Wunsch nicht alleine, denn er wurde auch schon mehrmal im Forum geäußert:

http://forum.ubuntuusers.de/topic/5526/
http://forum.ubuntuusers.de/topic/27562/
http://forum.ubuntuusers.de/topic/17479/
http://forum.ubuntuusers.de/topic/7336/

Leider gibt es dafür bislang keinerlei Konfigurationsmöglichkeit, interessanterweise sehen offenbar die Entwickler selbst diese Sache mittlerweile als Bug an:

http://bugzilla.gnome.org/show_bug.cgi?id=310809

Vor ein paar Tagen habe ich dann spontan entschlossen, einfach mal selbst zu schauen, ob ich eventuell dieses Verhalten durch Anpassungen im Quelltext der verantworlichen Bibliothek ändern kann. Da ich bislang kein sonderlich guter Programmier bin, hielt ich zunächst die Erfolgsaussicht für eher gering, erstaunlicherweise konnte ich offenbar tatsächlich die verantwortliche Stelle ausmachen und sie sogar tatsächlich so abändern, daß das Programm genau das tut, was ich wollte ☺ Wie bereits oben angedeutet, führt mein Patch dazu, daß nun jeder Fensterlisteneintrag unabhängig von der Länge des Textes des Fenstertitels eine feste Breite zugewießen bekommt, kleiner wird es erst, wenn die Liste "voll" ist.

Diesen Patch wollte ich nun hier jedenfalls auch öffentlich zugängig machen, vorher möchte ich noch die Warnung aussprechen, daß ich ihn zwar bei mir selbst seit mehreren Tagen ohne negative Auffälligkeiten laufen habe, aber trotzdem natürlich keine Haftung für explodierende Recher oder ähnliches übernehmen kann 😉
Bei der Installation sollte man jedenfalls wie folgt vorgehen:

- Den angehängten Patch herunterladen (02_libwnck-2.14.2_tasklist_buttons_fixed_size.diff.gz ist für Version 2.14.2 in Dapper gedacht, 2.16.1 für die aktuelle Version in Edgy).
- Im Terminal in ein beliebiges Verzeichnis wechseln und dort am besten ein neues Unterverzeichnis anlegen, z.B.:

mkdir libwnck


- Nun in dieses Verzeichnis wechseln und den Quelltext der verantwortlichen Bibliothek aus dem Ubuntu-Repository holen:

apt-get source libwnck


- Den eben heruntergeladenen Patch entpacken und die Datei in das Verzeichnis libwnck-VERSION/debian/patches (relativ zum im obigen Schritt erstellten Verzeichnis) kopieren.
- Optionaler Schritt: Die feste Größe, die zukünftig die Fensterlisteneinträge haben sollen, habe ich einfach mal auf den Wert 158 gesetzt, das ist auch näherungsweise (in Pixeln) die Größe der Einträge unter Windows XP. Man kann dies aber auch selbstverständlich den eigenen Wünschen anpassen, dazu den Patch mit einem Texteditor öffnen, dort den Eintrag

int fixed_button_size = 158;

suchen und anstelle von 158 den gewünschten Wert eintragen.
- Die zum Erstellen der deb-Pakete noch benötigten Abhängigkeiten herunterladen:

sudo apt-get build-dep libwnck


- Die deb-Pakete erstellen:

cd libwnck-2.14.2
sudo dpkg-buildpackage -b -uc


- Das neuerstellte Paket installieren (die beiden anderen ebenfalls erstellten Pakete werden nicht benötigt):

cd ..
sudo dpkg -i libwnck18*.deb 


- Einmal aus Gnome ausloggen und wieder einloggen oder das Gnome-Panel mit dem Befehl

pkill gnome-panel

neustarten.

Damit sich die Fensterliste nun wirklich wie gewünscht verhält, müssen deren Einstellungen noch ein wenig angepasst werden:

- Rechtsklick auf die Fensterliste → Einstellungen → Größe
- Falls sich neben der Fensterliste kein Systray befindet, sollte man für die minimale und maximale Größe denselben Wert eintragen, und zwar denjeningen, der der gewünschten maximalen Ausdehnung der Fensterliste entspricht (ebenfalls in Pixeln). Man kann ihn recht einfach ermitteln, indem man einen Screenshot macht und in einer Bildbearbeitung dann "nachmisst", wie groß die Liste werden darf.
- Wenn sich neben der Fensterliste noch ein Systray befindet, zu welchem ja oft dynamisch neue Symbole hinzukommen und verschwinden (z.B. Updatemanagerbenachrichtigungen, ...), ist das obige Vorgehen nicht praktikabel, da die Fensterliste dann leicht das Systray aus dem Bildschirm "verdrängt", wenn dort neue Symbole hinzukommen. Hier hilft der folgende Trick: Man geht wie oben beschrieben vor und wählt auch die maximale Größe genauso. Für die minimal Größe trägt man hingegen den Wert "Maximale Größe minus einen Wert, der kleiner als die feste Breite der Fensterlisteneinträge ist", bei mir selbst beispielsweise "800 (max. Breite) - 158 (feste Eintragsbreite) + 1".

Wenn man doch wieder die Originalversion der Bibliothek nutzen möchte, kann man dies wie folgt tun:

- Die Adresse http://archive.ubuntu.com/ubuntu/pool/main/libw/libwnck/ mit dem Browser ansteuern.
- Dort die Datei libwnck18_2.14.2*.deb für die eigene Architektur herunterladen (für i386 beispielsweise libwnck18_2.14.2-0ubuntu2_i386.deb )
- Im Terminal in das Verzeichnis wechseln, im dem sich das heruntergeladenen Paket befindet und es mit

sudo dpkg -i libwnck18*.deb 

installieren.
- Danach ebenfalls wieder ausloggen und neu einloggen oder das Gnome-Panel wie oben beschrieben neustarten.

Grüße,
Jan

P.S: Ich hoffe, daß dies die richtige Forumssektion ist, weil es sich ja eigentlich nicht direkt um ein Projekt handelt 😉 Der Beitrag darf auch natürlich gerne verschoben werden, wenn er woanders besser aufgehoben sein sollte 😉

libwnck18_2.16.1-0ubuntu1_i386.deb (125.4 KiB)
Komplettes Paket für Version 2.16.1 in Edgy (i386).
Download libwnck18_2.16.1-0ubuntu1_i386.deb
libwnck18_2.16.1-0ubuntu1_amd64.deb (0 Bytes)
Komplettes Paket für Version 2.16.1 in Edgy (amd64).
Download libwnck18_2.16.1-0ubuntu1_amd64.deb
02_libwnck-2.16.1_tasklist_buttons_fixed_size.diff.gz (711 Bytes)
Patch für Version 2.16.1 in Edgy.
Download 02_libwnck-2.16.1_tasklist_buttons_fixed_size.diff.gz
02_libwnck-2.14.2_tasklist_buttons_fixed_size.diff.gz (707 Bytes)
Patch für Version 2.14.2 in Dapper.
Download 02_libwnck-2.14.2_tasklist_buttons_fixed_size.diff.gz
libwnck18_2.18.0-0ubuntu2_amd64.deb (120.7 KiB)
Komplettes Paket für Version 2.18.0 in Feisty (amd64).
Download libwnck18_2.18.0-0ubuntu2_amd64.deb
libwnck18_2.18.0-0ubuntu2_i386.deb (0 Bytes)
Komplettes Paket für Version 2.18.0 in Feisty (i386).
Download libwnck18_2.18.0-0ubuntu2_i386.deb
02_libwnck-2.18.0_tasklist_buttons_fixed_size.diff.gz (716 Bytes)
Patch für Version 2.18.0 in Feisty.
Download 02_libwnck-2.18.0_tasklist_buttons_fixed_size.diff.gz

Irrlicht

Anmeldungsdatum:
15. März 2005

Beiträge: 37

Hallo Jan,

toller Patch, danke!
Habe das grade mal unter Edgy probiert (dazu in Patch und Anleitung immer "libwnck-2.14.2" durch "libwnck-2.16.1" ersetzt).
Es funktioniert, endlich bin ich dieses nervige Problem los... ☺

Einige Anmerkungen zur Anleitung, bin an zwei Stellen gestolpert, vielleicht hilft es anderen:

- Ich musste nach dem Runterladen der Quellen (apt-get source) die libwnck_2.*.orig.tar.gz noch selbst entpacken.
- Tippfehler: Beim Bauen der Pakete muss der Befehl "sudo dpkg-buildpackage -b -uc" (ohne zweiten Bindestrich) heißen.

An alle, die dieser Bug auch schon lange nervt: Die ganze Sache dauert nicht länger als ne Viertelstunde und hat, soweit ich es sehe (trotzdem nat. ohne Gewähr) keine Nebenwirkungen. Probiert es ruhig mal, klingt komplizierter als es ist.

Jan, danke nochmal! 😀
Hast du den Patch schon in Bugzilla vermerkt?

Gruß, Tim

Streifenschmerle

(Themenstarter)
Avatar von Streifenschmerle

Anmeldungsdatum:
5. April 2006

Beiträge: 461

*Inhalt dieses Beitrags im Eröffnungsbeitrag angefügt*

Streifenschmerle

(Themenstarter)
Avatar von Streifenschmerle

Anmeldungsdatum:
5. April 2006

Beiträge: 461

Hallo Tim,

freut mich sehr, wenn der Patch einen Nutzen hatte ☺

Irrlicht hat geschrieben:

- Ich musste nach dem Runterladen der Quellen (apt-get source) die libwnck_2.*.orig.tar.gz noch selbst entpacken.
- Tippfehler: Beim Bauen der Pakete muss der Befehl "sudo dpkg-buildpackage -b -uc" (ohne zweiten Bindestrich) heißen.

Den Tippfehler hab ich korrigiert. Daß Du das Archiv noch manuell entpacken mußtest, überrascht mich hingegen, bei mir geschieht das automatisch nach dem apt-get-Befehl, ich hab es auch gerade nochmal überprüft.
Irrlicht hat geschrieben:

Hast du den Patch schon in Bugzilla vermerkt?

Noch nicht. Zum einen, weil ich denke, daß er dazu viel zu amateurhaft ist und ja auch eher ein Workaround darstellt und zum anderen, weil die Anpassung auch "zu einfach" im Sinne von "leicht" war, besser gesagt, so leicht, daß ich mir sicher bin, daß die Entwickler etwas vergleichbares schon längst integriert hätten, wenn sie es denn wollen würden.
Aber andererseits könnte ich das natürlich auch mal dort einstellen, mehr als ein Veriss kann ja auch nicht kommen 😉

Grüße,
Jan

Irrlicht

Anmeldungsdatum:
15. März 2005

Beiträge: 37

Tja, Jan,
ob der Patch für die Gnome-Jungs professionell genug ist weiß ich auch nicht. ☺
Aber irgendwie ist der Bug (gnome bugzilla) auch nicht (mehr) sonderlich aktiv. Sie scheinen zwar einige Ideen zu haben, aber nichts entgültiges (oder sie binden es irgendwie nicht ein). Vielleicht ist jetzt, wo die 2.17-Entwicklung angelaufen ist, der richtige Zeitpunkt, das wieder anzustoßen...

Pharao2k

Anmeldungsdatum:
7. Juni 2006

Beiträge: 84

Habt ihr auch das Problem dass der Gnome Updater die gepatchten Dateien danach updaten will? Ich nehme mal an das würde die Änderungen überschreiben.

Streifenschmerle

(Themenstarter)
Avatar von Streifenschmerle

Anmeldungsdatum:
5. April 2006

Beiträge: 461

Pharao2k hat geschrieben:

Habt ihr auch das Problem dass der Gnome Updater die gepatchten Dateien danach updaten will? Ich nehme mal an das würde die Änderungen überschreiben.

Ja, das hab ich jetzt unter Edgy interessanterweise auch. Mich selbst stört das auch nicht, da ich den Update-Notifier deinstalliert habe, ansonsten könnte man mal in Synaptic "Paket → Version sperren" anwenden, es wäre dann nur wohl auch ratsam, sie wieder zu entsperren, wenn das nächste Gnome-Update reinkommt (dann muß man eh wieder neu patchen.)

Grüße,
Jan

umarmung Team-Icon

Avatar von umarmung

Anmeldungsdatum:
26. Oktober 2004

Beiträge: 5632

Hi.

Danke für den Patch. Jetzt kann ich die ganzen Leute, die im GNOME Forum nach dieser Funktion fragen, hierher lotsen. ☺

Ein paar Anmerkungen zu obiger Anleitung.
- Man muss nicht manuell patchen. Nachdem man per apt-get source die Quellen heruntergeladen hat, kopiert man den Patch nach debian/patches im Quellverzeichnis und nennt ihn z.B. 02_fixed_size.patch. Den Rest übernimmt dpkg-buildpackage.
- Man kann sich das Trial&Error beim Installieren der Abhängigkeiten ersparen, wenn man einmal den Befehl sudo apt-get build-dep libwnck ausführt.
- Es genügt das Paket libwnck18_VERSION.deb zu installieren. Im -common Paket sind sowieso nur README Dateien. ☺
- Alternativ zum Logout/-in kann man auch einfach das Panel neustarten mit pkill gnome-panel

Holger

PS: Wie wäre es mit einem fertigen Paket? ☺

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

PS: Wie wäre es mit einem fertigen Paket?

Wie wäre es mit nem Wiki? 😉

Gruß, Dee

umarmung Team-Icon

Avatar von umarmung

Anmeldungsdatum:
26. Oktober 2004

Beiträge: 5632

Wie meinst du das Dee? Die Anleitung zum Patchen ist im Wiki eigentlich fehl am Platz, da doch zu speziell. Anleitungen zum Kompilieren etc. haben wir schon. Und falls es ein fertiges Paket gibt, kann man das sicher im Wiki anmerken.

Dee Team-Icon

Avatar von Dee

Anmeldungsdatum:
9. Februar 2006

Beiträge: 20095

Wohnort: Schwabenländle

Findest Du das echt zu speziell? Hm, dann ist es okay.

Gruß, Dee

Streifenschmerle

(Themenstarter)
Avatar von Streifenschmerle

Anmeldungsdatum:
5. April 2006

Beiträge: 461

Hallo Holger,
umarmung hat geschrieben:

- Man muss nicht manuell patchen. Nachdem man per apt-get source die Quellen heruntergeladen hat, kopiert man den Patch nach debian/patches im Quellverzeichnis und nennt ihn z.B. 02_fixed_size.patch. Den Rest übernimmt dpkg-buildpackage.
- Man kann sich das Trial&Error beim Installieren der Abhängigkeiten ersparen, wenn man einmal den Befehl sudo apt-get build-dep libwnck ausführt.

Vielen Dank, das war mir beides noch nicht bekannt, ich hab es in der Anleitung angepasst.
umarmung hat geschrieben:

- Es genügt das Paket libwnck18_VERSION.deb zu installieren. Im -common Paket sind sowieso nur README Dateien. ☺

An dieser Stelle wollte ich ursprünglich auf Nummer sicher gehen, war aber nicht auf die Idee gekommen, mir mal den Inhalt der Pakete anzusehen 😉 Hab ich jedenfalls auch übernommen.
umarmung hat geschrieben:

- Alternativ zum Logout/-in kann man auch einfach das Panel neustarten mit pkill gnome-panel

Wurde auch ergänzt.
umarmung hat geschrieben:

PS: Wie wäre es mit einem fertigen Paket? ☺

War irgendwie noch gar nicht darauf gekommen, hier auch fertige Pakete anbieten zu können 😉 Hab aber gleich mal welche hochgeladen.

Grüße,
Jan

LordSavage

Avatar von LordSavage

Anmeldungsdatum:
19. April 2005

Beiträge: 1046

Beim installieren des Paketes sagt er mir:
"Error: Eine neuere Version ist bereits installiert."

Streifenschmerle

(Themenstarter)
Avatar von Streifenschmerle

Anmeldungsdatum:
5. April 2006

Beiträge: 461

LordSavage hat geschrieben:

Beim installieren des Paketes sagt er mir:
"Error: Eine neuere Version ist bereits installiert."

Wie hast Du es denn versucht zu installieren, mit dpkg oder diesem graphischen Programm (gdebi)? Bei mir ließen sich die Pakete bislang mit dpkg problemlos installieren. Ansonsten sollte bei dpkg die Option --force-downgrade helfen.

Grüße,
Jan

umarmung Team-Icon

Avatar von umarmung

Anmeldungsdatum:
26. Oktober 2004

Beiträge: 5632

Ich habe gerade mal das i386 Paket heruntergeladen und per gdebi installiert. Kein Problem.
Was sagt denn apt-cache policy libwnck18?

Antworten |