Freitag, 10. April 2009Hindernisse systemübergreifenden SicherungsbedürfnissesSzenario: Von Linux und Windows auf eine mittels Truecrypt verschlüsselte Partition zugreifen Die NTFS-Unterstützung unter Linux ist zwar mittlerweile richtig gut, hat aber einen entscheidenden Nachteil. NTFS kennt kein execute-flag. Es können also entweder alle Dateien oder keine ausführbar sein. Blöd, wenn man primär Linux nutzt und auf der Partition auch Anderes als Bilder und Musik rumkullern. Lösung ist also Windows ext3 beizubringen. Dank der neuen Version 1.11a von Ext2IFS konnte ich endlich Truecryptvolumes, welche Ext3 als Dateisystem verwenden, auch ohne Bluescreens unter Windows mounten. Doch zu früh gefreut. Mounten ließ sich das Volume zwar, drauf zugreifen aber noch lange nicht. Der Explorer behauptete trotz korrekt installiertem ext2ifs, dass er das Dateisystem nicht kenne und doch gerne mal Formator spielen würde. Einige Suche hat ergeben, dass das Problem darin besteht, dass in aktuelleren Linuxdistributionen Inodes mit einer Größe von 256 angelegt werden, statt wie früher 128, womit ext2ifs nicht klar kommt. Abhilfe verschaffte die erneute Formatierung mittels:
Glücklicherwiese war noch nicht viel drauf auf der Partition. Eine Alternative wäre die Verwendung von ext2fsd, jedoch habe ich schon mehrfach gelesen, dass schreibender Zugriff damit zu Datenverlust geführt hat.
Geschrieben von aple
um
21:16
| Kommentar (1)
| Trackbacks (0)
Zuletzt bearbeitet am 14.04.2009 08:09
Dienstag, 10. März 2009Keine Speicherung auf Vorrat bitte!Wenn man z.B. auf einem Testsystem gemeinsam eine Software entwickelt, jeder Entwickler jedoch seine eigenen Zugangsdaten zum Subversionrepository verwenden will, damit der richtige Name im Log auftaucht, kann man die Kommandozeilenoption --no-auth-cache verwenden. Dann wird man bei jedem Commit nach Nutzername und Passwort gefragt. Um diese Einstellung dauerhaft zu speichern, kann man in die ~/.subversion/config folgendes eintragen: [auth] Donnerstag, 19. Februar 2009Wie aus einem GussSchon seit der Installation von Ubuntu (8.10 - Intrepid Ibex) geht mir total auf den Sack, dass sich sämtliche KDE-Anwendungen anders verhalten und aussehen, als der Rest des Gnome-Desktops. Insbesondere das standardmäßige einfache Klicken um Ordner zu öffnen hat schon des öfteren für Frustration, in diversen Datei-öffnen/speichern-Dialogen, gesorgt. Da in Intrepid auf KDE4 umgestiegen wurde führt früher genutzte Ansatz Kcontrol zu installieren und dort Aussehen und Verhalten nach eigenem Gusto anzupassen zu keinem Erfolg mehr - Kcontrol gibbet nimmer. Also "systemsettings" installiert um feststellen zu müssen, dass die entsprechenden Optionen ("Tastatur & Maus", sowie "Fenstereigenschaften" und noch ein paar andere) bei mir schlichtweg fehlen. Wahrscheinlich fehlen einfach noch ein paar KDE-Pakete welche dem systemsettings die notwendigen Optionen zur Verfügung stellen. Immerhin konnte ich in "Erscheinungsbild" die Icons auf "Human" umstellen und ein wenig die Dateiverknüpfungen überarbeiten. Das Mausverhalten habe ich, nach längerem Suchen, in der Datei ~/.kde/share/config/kdeglobals geändert. Hier einfach folgendes einfügen/ergänzen/ändern: [KDE] SingleClick=false Hier können auch die Icons geändert werden, wenn man sich die Installation von systemsettings ersparen will. [Icons] Theme=Human Nun zur weiteren Optik. Sämtliche KDE-Software erstrahlt weiterhin in ihrem Oxygen-Look. Seit kurzem gibt es QGtKStyle, welches QT4 veranlasst die GTK-Engine zum Zeichnen der Fenster zu verwenden. Gibt's aber noch nicht in irgendwelchen Repos, also das .deb von hier genommen. Folgender Eintrag in die kdeglobals sorgt dafür, dass fortan GTK für sämtliche qt4-KDE-Anwendungen verwendet wird. [General] widgetStyle=gtk Hat man auch reine qt4-Anwendungen (ohne KDE drumrum), so sorgt das Einstellen von GTK im qtconfig für optische Anpassung. Qt3-Anwendungen erscheinen weiterhin im plastik-outfit, aber dafür (dagegen) hab ich auch noch keine schöne Lösung
Geschrieben von aple
um
23:06
| Kommentare (0)
| Trackbacks (0)
Zuletzt bearbeitet am 20.02.2009 01:12
Freitag, 13. Februar 2009KDE4: Phonon mit Dmix
Wenn die eigene Soundkarte kein Hardwaremixing unterstützt und man keinen Extra Sounddeamon installieren möchte, kann man das mitgelieferte ALSA-Plugin Dmix verwenden.
Meine Einstellung lief prima mit KDE 3.5.x, jedoch mit KDE4 konnte wieder nur ein Programm zur gleichen Zeit das Sounddevice belegen. In den Multimediaeinstellungen tauchte das Plugin-Device auch nicht auf. Erst nachdem ich ein
hint { show on description "DMix Softvol Device" }in meine /etc/asound.conf einfügte und das Device als bevorzugt eingestellt hatte, funktioniert der Ton in allen KDE-Programmen wieder wie erwartet. Quellen: [1] http://phonon.kde.org/cms/1032 Freitag, 30. Januar 2009Powermize me baby
Nachdem ich nun stolzer Besitzer eines Dell Vostro 1310 bin auf welchem mittlerweile ein Ubuntu 8.10 läuft ist mir aufgefallen, dass die Akkulaufzeit unter Intrepid Ibex merkbar geringer ist als unter dem parallel installierten Windows XP.
Erster Anlaufpunkt waren natürlich Prozessor und Grafikkarte. Der Prozessor lässt sich dank Panelapplet ziemlich einfach den eigenen Stromsparwünschen anpassen.
Mit der eingebauten nVidia GeForce™ 8400M GS ist das leider nicht ganz so einfach. Zwar gibt es in den Optionen des properitären nVidia Treibers eine eigene Seite für den Powermizer. Da kann man aber nur gucken, nicht klotzen.
Eine kurze Suche im Netz hat jedoch verraten, dass man die Einstellungen dennoch anpassen kann - in der Xorg.conf
Dazu im entsprechenden "Device" Abschnitt eine zusätzliche Option für den Powermizer hinzufügen. Bei mir sieht das ganze wie folgt aus:
Section "Device"   Identifier "Configured Video Device"   Driver "nvidia"   Option "NoLogo" "True"   Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2233; PowerMizerDefault=0x3" EndSectionPerfLevelSrc=0xAABB gibt die Strategie an, mit welcher Taktrate gefahren wird. Die ersten beiden Ziffern (AA) stehen für den Batteriebetrieb, die zweiten (BB) für Netzbetrieb. Dabei steht eine 22 für feste Taktrate und eine 33 für eine variable Taktung je nach Anforderung. In meiner Config läuft die Grafikkarte auf Akku also mit festem Takt und mit engestecktem Netzkabel mit adaptiver Taktstrategie. PowerMizerDefault=0xC gibt nun an, mit welchem festen Takt die Grafikkarte fahren soll: 0x1 - Maximale Performance 0x2 - Irgendeine der mittleren möglichen Taktraten wird verwendet 0x3 - Maximales Energiesparen ist angesagtSollte man unter PerfLevelSrc zweimal einen festen Takt vorgegeben haben (0x2222) so muss man auch zwei Abschnitte PowerMizerDefault eintragen. Der erste steht dann für Batteriebetrieb, der zweite für Netzbetrieb. Das ganze sieht dann z.B. so aus: Option "RegistryDwords" "PowerMizerEnable=0x1; PerfLevelSrc=0x2222; PowerMizerDefault=0x3; PowerMizerDefaultAC=0x1" und sagt aus, dass im Akkubetrieb mit minimalem Energieverbrauch gearbeitet werden soll und unter Netzbetrieb die Grafikkarte dauerhaft mit den maximalen Performanceeinstellungen läuft.
Geschrieben von aple
um
00:17
| Kommentar (1)
| Trackbacks (0)
Zuletzt bearbeitet am 30.01.2009 00:58
Mittwoch, 21. Januar 2009Unprivilegierte Prozesse auf privilegierten Ports
Linux unterscheidet zwischen privilegierten (1-1024) und unprivilegierten Ports (>1024). Die Idee dahinter war mal, dass wenn man zu einem Server auf einem privilegiertem Port connected, dass dort mit ziemlicher Sicherheit ein vertrauenswürdiger, vom Systemadministrator eingerichteter Dienst lauscht. Das ist heute aber nicht mehr zwingend der Fall.
Jedenfalls hat man beim Betrieb von Webservern immer das Problem, einem möglichst unprivilegierten Prozess Zugriff auf Port 80 oder 443 zu geben. Oft wird das so gelöst, dass der Prozess mit root-Rechten gestartet wird und dann nach Öffnen des Ports freiwillig die Rechte wieder abgibt. Das machen aber nicht alle Webserver so.
Eine weitere auch nicht wirklich schöne Lösung ist es, den Webserver auf Port 8080 und 8043 lauschen zu lassen und per Iptables ein Portredirect zu machen. Das klappt solange, bis IPv6 ins Spiel kommt, denn dafür gibt es kein NAT und damit auch kein Portredirect.
Auf der Suche nach einer anderen Lösung bin ich auf accessfs [1] gestoßen. Mit diesem Kernelmodul kann man über ein Verzeichnis is /proc die Gruppe und den Eigentümer für einen spezifischen Port zu setzen.
Accessfs gibt es unter [1] als Kernelpatch für verschiedene, auch recht aktuelle Kernel. Für den von uns verwendeten Kernel 2.6.21 musste der Patch leicht angepasst werden. [2]
# cd /usr/src/linux # cat accessfs-2.6.21-0.20.patch | patch -p1 # make menuconfigDanach findet man unter File Systems ---> Miscellanenous filesystems ---> <*> Accessfs support (Experimental) <*> User permission based IP portsdie passende Einstellung. Durch die Veränderung am Kernel reicht es nicht, einfach nur das Modul zu bauen und zu laden. Danach muss das accessfs noch eingehangen werden: # mount -t accessfs none /proc/accessoder per /etc/fstab: proc /proc proc defaults 0 0 none /proc/access accessfs 0 0Zum Schluss noch ein chown jboss:jboss /proc/access/net/ip/bind/80und der Jboss kann unprivilegiert auf Port 80 laufen. Quellen: [1] http://www.olafdietsche.de/linux/accessfs/ [2] http://subversion.fem.tu-ilmenau.de/repository/fem-overlay/trunk/sys-kernel/xen-sources/
Geschrieben von pegro
um
10:44
| Kommentare (0)
| Trackback (1)
Zuletzt bearbeitet am 30.01.2009 00:59
Freitag, 16. Januar 2009Gut zu wissen
Wenn man selbst Ebuilds schreibt oder Ebuilds aus dem Bugtracker verwenden will, muss man die für Portage notwendige Manifest-Datei erstellen. Dazu ein Hinweis:
If you've made a local modification to an ebuild, patch, or added anything else to your local overlay and need to make Portage aware of the changes so the package can be properly merged, do not use the "digest" command. Use "manifest" instead. For example: ebuild foo-1.0.17.ebuild manifest Digests have been dead for a long time. Please don't encourage bad practices.Digests werden nach und nach aus dem Tree entfernt und durch das Manifest2-Format ersetzt. Quellen: [1] http://blogs.gentoo.org/nightmorph/2008/12/24/december-public-service-announcement Dienstag, 13. Januar 2009LLDP mit Tcpdump
Das Link Layer Discovery Protocol (LLDP) dient zum Austausch von Informationen bezüglich benachbarten Netzwerkgeräten, wie z.B. Switches oder Router und wird daher eher im Netzwerkcore verwendet, um herauszufinden, welches Gerät an welchem Port hängt.
Es gibt aber auch Implementierungen für Linux: u.a. OpenLLDP [1] und lldpd [2]
Falls man aber grade mal nur das Notebook dabei hat und keinen dieser Dienste installiert hat, reicht ein einfacher tcpdump-Aufruf, um den Switchport, an dem ich hänge herauszufinden. Vorausgesetzt der Switch spricht LLDP.
tcpdump -i eth0 ether proto 0x88ccWer weiß, welche Informationen wo stehen, kann auf Anhieb sagen, welcher Port es ist. Wer das nicht kann, verwendet Wireshark [3]. Quellen: [1] http://openlldp.sourceforge.net/ [2] https://trac.luffy.cx/lldpd [3] http://wiki.wireshark.org/LinkLayerDiscoveryProtocol
Geschrieben von pegro
um
18:15
| Kommentar (1)
| Trackbacks (0)
Zuletzt bearbeitet am 03.01.2009 16:15
Opera und CaCert Zertifikate
Ich habe meine Zertifikate von CaCert ausstellen lassen. Da das Rootzertifikat von CaCert bei nur sehr wenigen Browser dabei bzw. aktiviert ist, muss man meist das Root-Zertifikat erst importieren.
Der Opera in Version 10 (auch schon in der 9er) hat dann aber das Problem, dass er die verwendete Verschlüsselungsmethode für unsicher hält.
(1) This site is using an outdated encryption method which is no longer classified as secure. It cannot sufficiently protect sensitive data. Do you wish to continue?Nach ewiger Suche fand sich die Problemerklärung im Forum [1] auf der Operaseite. Both problems are due to problems caused by CACert.org, the "open source" CA. Their OCSP server is not standards compliant, and refuse to return a valid response when we try to GET it (POST works fine, but Opera now uses GET). They will have to fix their server. The request for their CRL fails because they have specifed a HTTPS URL for that, signed by the same root specifying that CRL, meaning that the CRL is setting up a dependency on itself as we can't fetch the CRL until we have downloaded it, which means it will never happen. As CRLs are digitally signed, and have certain validity periods, using HTTPS for CRL fetching is unnecessary (and sets up a Catch-22 situation). CACert should reissue their root, removing the CRL URL, and also reissue their Class 3 intermediate so that the HTTP CRL URL is located there.Übersetzt ungefähr so: 2 Probleme:
Geschrieben von pegro
um
17:17
| Kommentare (64)
| Trackbacks (0)
Zuletzt bearbeitet am 13.01.2009 17:17
Dienstag, 4. November 2008Mit Apaches mod_proxy richtig weiterleiten
Wenn man mehrere virtuelle Maschinen für verschiedene Webdienste mit einer IP betreiben will, kommt man nicht umhin einen Proxy zu verwenden.
Dafür eignet z.B. mod_proxy mit mod_proxy_http.
Dies leitet alle Anfragen an /myApp an den entfernten Host weiter, der nur im internen Netz erreichbar ist, und kümmert sich drum, dass alle Hostnamen in den HTTP-Headern entsprechend geändert werden.
Die ausgegebene Webseite wird jedoch nicht verändert, so dass absolute Links möglicherweise auf die falsche Adresse linken.
Wenn die hinter dem Proxy laufende Software damit nicht umgehen kann, empfielt sich mod_proxy_html, welches versucht alle absoluten Pfade im HTML zu ersetzen.
Wenn die Software die Links jedoch entsprechend der URL generiert, mit der sie aufgerufen wurde, kann man mit der Direktive den Apache dazu bringen, die Anfrage ohne Änderung des Host:-Headers weiterzuleiten. Lohnt sich vorallem bei der Generierung von RSS-Feeds.
Quellen:
[1] http://httpd.apache.org/docs/2.0/mod/mod_proxy.html#proxypreservehost
[2] http://www.atlassian.com/software/jira/docs/latest/apacheintegration.html
Geschrieben von pegro
um
11:14
| Kommentare (0)
| Trackbacks (0)
Zuletzt bearbeitet am 04.11.2008 12:15
Montag, 3. November 2008Spärliche Ernte
Mit Subversion Version 1.5 gibt ein neues Feature: Sparse Checkouts
Das ist vorallem bei großen Repositories nützlich, wenn man nur an einem kleinen Teil arbeiten möchte und deswegen nicht den ganzen Branch z.B. auschecken will.
Ein Szenario ist z.B. die Betreuung mehrerer Branches eines Projekts. z.B. ein Branch STABLE, in den nur wichtige Bugfixes eingepflegt werden und auf der anderen Seite trunk mit der aktuellsten Entwicklerversion.
pegro@grossesp ~/myProject $ find * | grep -v .svn | sort branches branches/BROKEN branches/BROKEN/file1 branches/BROKEN/file10 branches/BROKEN/file2 branches/BROKEN/file3 branches/BROKEN/file4 branches/BROKEN/file5 branches/BROKEN/file6 branches/BROKEN/file7 branches/BROKEN/file8 branches/BROKEN/file9 branches/STABLE branches/STABLE/source.c tags trunk trunk/source.cFindet man nun einen Bug, der sowohl in der Stable- als auch in der Entwicklerversion auftritt, im Beispiel in der Datei source.c, wäre es ja wünschenswert, ihn mit einem Commit für beide Versionen zu beheben. Dazu müsste man aber von der obersten Ebene an auschecken und so das komplette Repository als Arbeitskopie liegen haben. Das kann bei größeren Projekten zu einem echten Problem werden. Sparse checkouts funktionieren über eine neue Variable --depth, für die es 3 Werte gibt: empty, immediates und infinity. Was das bedeutet, versuche ich mal an Beispielen deutlich zu machen: empty: pegro@grossesp ~ $ svn co https://subversion/repos/myProject/ myProject --depth empty Checked out revision 1.enthält somit nur ein .svn-Verzeichnis, keine Ordner und keien Dateien. immediates: pegro@grossesp ~ $ svn co https://subversion/repos/myProject/ myProject --depth immediates A myProject/trunk A myProject/branches A myProject/tags Checked out revision 1.checkt nur Dateien und direkte Unterordner aus, jedoch nicht deren Unterordner oder Dateien. infinity: Das ist bei Checkout dasselbe, wie ohne diesen Parameter: Alles landet in der Workingcopy. Diese Tiefenangabe wird persistent für diese Arbeitskopie gespeichert, sodass beim svn update auch nur das notwendigste aktualisiert wird. Jedoch kann man diese Angabe verzeichnisweise überschreiben. Ziel im Beispiel ist also nun, das Repository auszuchecken ohne den Branch BROKEN. Beginnen wir mit den Ordnern auf der obersten Ebene: pegro@grossesp ~ $ svn co https://subversion/repos/myProject myProject --depth immediates A myProject/trunk A myProject/branches A myProject/tags Checked out revision 1.Dann folgen noch die immediates vom branches-Ordner: pegro@grossesp ~ $ svn up myProject/branches/ --set-depth immediates A myProject/branches/BROKEN A myProject/branches/STABLE Updated to revision 1.Bei initialen Checkout wird die Tiefe mit --depth gesetzt. Für dieses Update muss der Wert mit --set-depth für den Ordner überschrieben werden, damit dessen Unterordner erscheinen. Den trunk und den STABLE-Branch wollen wir hingegen komplett auf der Festplatte: pegro@grossesp ~ $ svn up myProject/branches/STABLE --set-depth infinity A myProject/branches/STABLE/source.c Updated to revision 1. pegro@grossesp ~ $ svn up myProject/trunk --set-depth infinity A myProject/trunk/source.c Updated to revision 1.Somit haben wir nun die gewünschte teilweise Arbeitskopie ohne den BROKEN-Branch: pegro@grossesp ~/myProject $ find * | grep -v .svn | sort branches branches/BROKEN branches/STABLE branches/STABLE/source.c tags trunk trunk/source.cNun kann man seine Änderung in beide Zweige mit einem Commit einchecken: pegro@grossesp ~/myProject $ svn commit --message "fixes bug #1" Sending branches/STABLE/source.c Sending trunk/source.c Transmitting file data .. Committed revision 2.Quellen: [1] http://svnbook.red-bean.com/nightly/en/svn.advanced.sparsedirs.html [2] http://subversion.tigris.org/svn_1.5_releasenotes.html#sparse-checkouts Sonntag, 2. November 2008Fatal: PHP und empty
Also ich hab ja schon viel gesehen, aber das ist mir noch nicht passiert.
Durch einen Bug konnte ein Cronscript nicht sauber durchlaufen und startete deswegen alle 5 Minuten und schrieb mir einige nette Mails. Das Problem war eine nicht geprüfte Variable. Also einfach eine if-Schleife mit
if(empty(calcReturnValue($variable))) { ...dachte ich sollte das Problem beheben. Denkste. Fatal error: Can't use function return value in write context in /path/to/script on line irrelevantDa hab ich nicht schlecht gestaunt. Denn empty kann nur Variablen auf "leer" prüfen: Note: empty() only checks variables as anything else will result in a parse error. In other words, the following will not work: empty(trim($name)).Und ja, empfohlen wird $result = calcReturnValue($variable); if(empty($result)) { ...Sachen gibts... Quelle: http://www.php.net/manual/en/function.empty.php
Geschrieben von pegro
um
18:13
| Kommentar (1)
| Trackbacks (0)
Zuletzt bearbeitet am 02.11.2008 18:27
Freitag, 31. Oktober 2008Wo denn nur?
Für die Statistiken auf dem Webserver verwende ich den Stone Step Webalizer [1], einer Weiterentwicklung des Webalizer [2]. Als ich mich für ihn entschied, gab es schon mehrere Jahre keine Updates des Originals mehr. Mittlerweile gibt es eine neue Version mit sehr interessanten Features, aber mal abwarten wie schnell die Entwicklung wieder einschläft.
Beim Auswerten kann der Webalizer die GeoIP Datenbank benutzen, um den IPs aus den Logfiles Länder zuzuordnen. Theoretisch zumindest.
Ich hatte den Webalizer und die unter Debian dafür benötigte libgeoip1 installiert, jedoch stand neben den IPs immer nur:
Unresolved/UnknownDer Pfad für die GeoIPDB (GeoIPDBPath) war ebenfalls richtig gesetzt. Mhm. In der README [3] fand ich die Ursache für mein Problem: DNSChildren The number of DNS children processes to run in order to resolve IP addresses to domain names or lookup country codes in the GeoIP database. Use a value of zero ('0') to disable. If disabled, both, DNS and GeoIP lookups will be disabled.Mit DNSChildren 5 krieg ich jetzt auch Tortendiagramme mit mehr als dem unbekannten Land. Quellen: [1] http://www.stonesteps.ca/projects/webalizer/ [2] http://www.webalizer.com/ [3] http://www.stonesteps.ca/projects/webalizer/README.asp Mittwoch, 29. Oktober 2008Na wasn nu?
Mittlerweile sind doch einige drüber gestolpert, dass es mehrere Pakete für PostgreSQL im Portagetree gibt. So gibt es die alten dev-db/libpq und dev-db/postgresql. Beide haben nur ein Slot.
Und es gibt dev-db/postgresql-base (als Ersatz für libpq) und dev-db/postgresql-server (als Ersatz für postgresql), diese hingegen mit jeweils einem Slot pro Minorversion.
Das hat den großen Vorteil, grade im Vergleich mit MySQL, dass man mehrere PostgreSQL-Versionen parallel betreiben kann.
Damit im Portagetree kein Chaos auftritt hat man noch 2 virtuelle Pakete eingeführt: virtual/postgresql-base und virtual/postgresql-server, die dann aus Kompatibiltätsgründen entweder von libpq oder postgresql-base bzw. von postgresql oder postgresql-server abhängen, je nachdem was installiert ist. Alle anderen Ebuilds sollten dann nur noch auf diese beiden verweisen, sodass der Umstieg auf die neuen Pakete in Ruhe abgewägt und dann eventuell durchgeführt werden kann.
Die Doku landete in dev-db/postgresql-docs
Wie das alles kam und welche Gründe den Ausschlag für die neue Struktur gaben, kann man unter [1] nachlesen.
Quellen:
[1] http://www.mail-archive.com/gentoo-dev@lists.gentoo.org/msg28455.html
GTK-Themes unter KDE verwalten
Hinweis: Betrifft KDE Version 3.5.x
Die Schriftarten und -größen sowie das Design für QT-Anwendungen (sicherlich der Großteil, wenn man KDE verwendet) lassen sich bequem im KDE Kontrollcenter verwalten. Dies gilt jedoch nicht für GTK-Programme, wie Firefox, Thunderbird, oder wie in meinem Fall, Eclipse.
In Eclipse kann man zwar unter "Window -> Preferences -> General -> Appearance -> Colors and Fonts" die Schriftgröße im Editor anpassen, aber nicht für die Menüs und den anderen Kram drumrum. Bei meiner Auflösung hätte ich die Schriften schon gerne etwas kleiner.
Nach ein wenig suchen fand ich andere, wie dieses Problem auch schon hatten: Linux-mit-kde-schriftgroessen-und-optik-in-firefox-gimp-und-eclipse
So genügt wirklich ein
emerge gtk-chthemedann das Programm starten und Themes und Schriftarten wie gewünscht ändern. Ohne Neustart sieht sogar der Firefox viel schöner aus. Manchmal kann es so einfach sein.
Geschrieben von pegro
um
18:34
| Kommentar (1)
| Trackbacks (0)
Zuletzt bearbeitet am 27.10.2008 01:49
« vorherige Seite
(Seite 2 von 8, insgesamt 109 Einträge)
» nächste Seite
|
SucheArchivKategorien |