Konzertheld.de

Umwege verbessern die Ortskenntnis

Zufällige Artikel

Ausgewählte Infos

Trotz einigen Jahren Arbeit mit Linux als Hauptbetriebssystem kann ich immer noch nicht alles nachvollziehen. So wie folgende Begebenheit: Seit einiger Zeit habe ich Probleme damit, Dateien des Typs text/plain, also Dateien, die keinen erkennbaren Dateityp haben (typischerweise als Textdatei genutzte Dateien ohne Dateiendung und Header) per Doppelklick im Dateimanager von einem Programm meiner Wahl starten zu lassen. Es sollte Notepad++ sein, das ich per Wine nutze. Nach einigen Recherchen, wie man Wine-Applikationen überhaupt als Standardprogramm bzw. im Öffnen Mit-Kontextmenü nutzen kann, habe ich zumindest letzteres geschafft.

Nun sollte man normalerweise ganz einfach über die Eigenschaften einer Datei die Standardanwendung für den entsprechenden Dateityp ändern können. Dort war Notepad++ auch in der Tat sowohl für .txt-Textdateien als auch für ungekennzeichnete Dateien eingetragen. Trotzdem funktionierte das Öffnen der Dateien per Doppelklick bzw. "Öffnen" (nicht "Öffnen mit") nach einem mir nicht erkennbaren System manchmal nicht. Okay, ich schob das auf Wine und meine mangelnden Kenntnisse.

Als ich jetzt gerade aber Sublime Text installierte, um es mal auszuprobieren, wurde ich stutzig. Sublime ist nämlich nativ und sollte sich daher völlig problemlos als Standardanwendung für alles nutzen lassen. Und in der Tat hat es sich auch selbstständig für die betreffenden Dateitypen eingetragen - startete aber genauso wenig nachvollziehbar nicht immer.

Irgendwie fiel mein Blick beim Rumprobieren auf die Adresszeile im Dateimanager: Ich befand mich die ganze Zeit in meiner Dropbox, die auf einer separaten Partition liegt. Und während sich dort keinerlei Dateien öffnen ließen (bzw. eben nicht automatisch beim Doppelklick), ging das im Home-Verzeichnis problemlos. Sollte es etwas mit der Partition zu tun haben? Die war aus Faulheit und defaults irgendwelchen Gründen von root gemountet worden. Das habe ich jetzt geändert, weil es eh nicht sinnvoll war, und siehe da: Plötzlich öffnen sich alle Dateien ganz wie gewünscht.

Nun erklär mir mal bitte jemand den Zusammenhang zwischen dem Benutzer, der eine Partition einhängt (wohlgemerkt: nicht dem, der Schreibrechte darauf hat!), und der Funktion "Öffnen" beim Doppelklick auf nicht ausführbare Dateien...

Einer der Gründe, warum ich inzwischen seit mehreren Jahren nur noch Linux verwende, ist die gute Anpassbarkeit in jedem Detail. Nichts, was jeder braucht oder auch nur jeder nützlich finden würde, aber mir gefällt es. Vielleicht eine typische Eigenart von Programmierern - alles, was durch Anpassungen effizienter oder nützlicher werden könnte, soll es auch werden.

tastatur_kyrillisch.jpgZurzeit schreibe ich zum Beispiel oft Leadsheets für meine Band, dafür brauche ich immer wieder die Vorzeichen-Symbole ♭ und ♯. Natürlich kann man auch einfach b und # schreiben, das sieht dann aber doof aus: A♭ oder A♯ vs Ab oder A#. Vor allem wenn es As-Moll ist: Abm. Und man kann die Spezialsymbole zwar einfügen, obwohl sie auf der Tastatur fehlen, aber nur per Unicode-Spezialbefehl, in meinem Fall Strg + Shift + U, dann die Unicode-Folge (U266D bzw. U266F) und dann Leerzeichen. Dann hat man zwar A♭m, aber auf Dauer auch eine Arbeitsbeschaffungsmaßnahme.

Aber genug des Vorgeplänkels. Unter Linux kann man, sofern die verwendete Linux-Variante den X-Server verwendet (und das tun zumindest die gängigen alle), sein Tastaturlayout einfach anpassen. Ich habe das bereits früher mal gemacht, um die Belegung der internen Funktionstasten meines Notebooks zu ändern, aber dazu später. Ich wollte also gerne das ♭ erzeugen, indem ich die B-Taste mit Alt Gr zusammen verwende, und das ♯ entsprechend bei Alt Gr und #. Die Standard-Tastaturlayouts von Linux Mint haben auf der Alt Gr-Ebene schon irgendwelche anderen Sonderzeichen, auf die ich aber gut verzichten kann.

Die Tastaturlayouts sind unter /usr/share/X11/xkb/symbols gespeichert. Nicht jede mögliche Variante hat eine eigene Datei, nur die grundlegenden Layouts. Ich verwende zum Beispiel das Layout de in der Variante deadgraveacute - also die deutsche Belegung, bei der nur die Akzente Grave und Acute standardmäßig einen Buchstaben erwarten é è, das Circumflex ^ bekomme ich direkt. Die dafür zuständige Datei ist de.

In dieser Datei gibt es drei wesentliche Bestandteile:

xkb_symbols "deadgraveacute"
Dadurch wird die Variante gekennzeichnet. Es gibt immer eine Variante "basic" und dann abgewandelte Varianten. Tastenbelegungen können in mehreren Varianten vorkommen, es gilt, die richtige(n) zu ändern.
include "latin(type4)"
Damit nicht so viele Dopplungen auftauchen, können Layouts und Varianten eingebunden werden. Diese Zeile bindet das Layout latin ein, das sich in einer anderen Datei befindet, und zwar in der dort notierten Variante type4. Die Variante ist beim Einbinden optional. In meinem Fall befand sich die Tastenbelegung, die ich ändern wollte, gar nicht in der Datei de, sondern bereits in der Datei latin.
key <AB05> { [ b, B, U266D, leftsinglequotemark ] };
In diesen Zeilen wird die tatsächliche Belegung der Tasten definiert. Der Name der Taste steht am Anfang in spitzen Klammern, die Namen richten sich dabei typischerweise nach der Standardbelegung im US-Layout. Hier bezeichnet AB05 die fünfte Taste1 auf der zweiten alphanumerischen Tastenreihe von unten. Es folgt dann wie oben zu sehen die Angabe der Belegung in der Reihenfolge Taste, Taste mit Umschalt, Taste mit Alt Gr und Taste mit Modifikatortaste für Ebene 4. Letztere kann unter Linux frei gewählt werden, bei mir ist es die Feststelltaste, die ich sonst nicht benutzen würde, bei manchen muss man dafür sowohl Umschalt als auch Alt Gr drücken. U266D steht für das Unicode-Zeichen 266D - das ist ♭.

Wenn alle beteiligten Layouts und Varianten nach Belieben angepasst wurden, muss das geänderte Layout noch übernommen werden. Dazu löscht man die Caches:

sudo rm /var/lib/xkb/*.xkm

Anschließend entweder einmal das Layout wechseln und zurückwechseln oder neu anmelden. Die neue Tastenbelegung sollte nun funktionieren. Per Skript aktiviert man mein Beispiel dann so:

setxkbmap de -variant deadgraveacute

Nun noch zu dem eingangs erwähnten Sonderfall mit der Notebooktastatur und der externen Tastatur. Bei meiner Notebooktastatur sind die Tasten Pos1 und Ende nur in Kombination mit der typischen Fn-Taste erreichbar. Das hat mich genervt. Praktischerweise ist das aber eine Hardware-Funktion, die Tastatur sendet in Kombination mit der Fn-Taste einen anderen Tastencode, so dass ich die Belegung mit der gleichen Methode wie oben einfach tauschen konnte.

Dadurch habe ich allerdings auch die normalen Tasten meiner externen Tastatur umbelegt. setxkbmap akzeptiert zwar die Angabe eines Gerätes, auf dass sich die Belegung beziehen soll (mit ID von xinput):

setxkbmap -device 3 de

aber in meinem Fall werden die Tastaturen zu merkwürdigen Virtual Keyboards zusammengefasst, da habe ich noch nicht raus, wie ich es schaffe, beide Tastaturen gleichzeitig mit dem korrekten Layout zu belegen. Bis ich das herausfinde, begnüge ich mich damit, die Belegung zusammen mit dem Monitor zu wechseln, dafür habe ich eh ein Skript auf eine Tastenkombination gelegt.

  1. xrandr --output HDMI-0 --auto && xrandr --output LVDS-0 --off && xrandr --output VGA-0 --off
  2. setxkbmap -device 3 de -variant deadgraveacute

Damit habe ich immerhin an der Tastatur, die ich typischerweise zusammen mit dem entsprechenden Monitor verwende, die dafür passende Belegung. Und nun auch mit den Sonderzeichen, die ich gerne einfach eingeben können möchte.

--

Foto von Kecko auf Flickr, lizensiert unter CC-BY-ND 2.0

  1. Auf der amerikanischen Tastatur gibt es die Taste mit den größer- und kleiner-Zeichen nicht.

Evolution könnte so ein schöner Mailclient für Linux-User sein, hätte es nicht die Angewohnheit, Mails zu zerfleddern, irgendwo hin zu schieben, wenn man es will, sie aber nicht zu verschieben, sondern bloß zu markieren, mysteriöse Ordner anzulegen...

Damit ist jetzt Schluss. Zu den beiden Einstellungen, die ich schon länger verwende, kamen nun in einer der letzten Versionen noch zwei neue Einstellungen, so dass man nun endlich seine Mails beisammen halten kann: Die virtuellen "Junk"- und "Trash"-Folder lassen sich nun deaktivieren.

Ich gehe hier mal davon aus, dass E-Mails per IMAP abgerufen werden und keine Sonderkonfigurationen mit Mailserver auf dem lokalen Rechner o.ä. verwendet werden.

Dann gibt es nämlich nur zwei Probleme zu lösen:

  • Entwürfe und verschickte Mails landen in einem lokalen Ordner statt auf dem Server
  • Spam-Mails und gelöschte Mails werden nur markiert und dann in Evolution in einem separaten Ordner angezeigt, aber nicht wirklich in einen separaten Ordner verschoben.

Dadurch guckt man schnell in die Röhre, wenn man seine Mails mal nicht mit Evolution abruft.

Alle vier Mailarten können in den "Standardeinstellungen" in den jeweiligen Kontoeinstellungen ein passendes Ziel bekommen. Entwürfe und Verschickte Mails werden dort einfach in einen anderen Ordner gesteckt. Für Junk ("unerwünschte Mails") und gelöschte Mails aktiviert man jeweils die Option "realen Ordner verwenden" und wählt auch dann einen Ordner auf dem Server. Damit die Fake-Ordner anschließend verschwinden, ist ein Neustart von Evolution erforderlich. Das ist der ganze Zauber. Fragt sich nur, wieso es so lange gedauert hat, bis die letztere Option eingebaut wurde.

Ich habe diese vier Ordner dann unterhalb meiner Inbox gelegt, während die Ordner, die ich manuell verwende, parallel zur Inbox liegen. Das Konto "Auf diesem Rechner" kann nun deaktiviert werden. So gestaltet sich mein Evolution plötzlich wunderbar aufgeräumt.

evolution-einstellungen.png

evolution-aufgeräumt.png

Eine der Stärken von Linux gegenüber Windows ist die effizientere RAM-Nutzung. Das System selbst benötigt schon nicht so viel, dadurch bleibt mehr für Programme und Dateien, und auch die Verteilung von Prozessen und Dateien auf echten (physikalischen) RAM und die Auslagerungspartition (Swap) funktioniert besser. Trotzdem kommt es vor, dass aktive Prozesse ausgelagert werden, obwohl noch genug physikalischer RAM zur Verfügung stehen würde. Dann wird z.B. das Browsen im Internet unglaublich langsam, weil die Tabs des Browsers nicht aus dem schnellen RAM, sondern von der Festplatte gelesen werden müssen. Bei mir unter Xubuntu passierte das besonders häufig nach dem Standby.

In dem Fall habe ich das System dann radikal angewiesen, den gesamten Swap in den physikalischen RAM zu räumen:

swapoff -a

Wenn man nicht sehr großzügig aufgestellt ist, sollte man direkt danach das Auslagern wieder erlauben:

swapon -a

Und damit in Zukunft generell nicht so schnell ausgelagert wird, kann man auch die Swappiness, die Tendenz des Systems, Daten auszulagern, einstellen. Auf den meisten Systemen kann man die getrost deutlich reduzieren, ausprobieren ist aber angesagt. Dazu editiert man die Datei /etc/sysctl.conf und setzt den Wert vm.swappiness auf irgendwas zwischen 0 und 100.

Alle diese Informationen stammen von help.ubuntu.com und können dort (in englischer Sprache) wesentlich detaillierter nachgelesen werden.

Dank des Perl-Skripts von MySQLDumper laufen Datenbank-Backups bei mir vollautomatisch. Mit der Funktion des regelmäßigen Aufräumens war ich aber nicht ganz zufrieden. Ich wollte gerne, dass immer die zehn neuesten Backups behalten werden und von den älteren nur noch eins pro Woche. Das geht mit folgendem Bash-Skript:

  1. #!/bin/bash
  2. # Get all konzertheld backup files reverse ordered (konzertheld_yyyy_mm_dd_hh_mm.sql.gz)
  3. FILES=`ls konzertheld_* -r`
  4. # Initiate
  5. i=0
  6. LWNR=0
  7. # Go
  8. for f in $FILES
  9. do
  10.   i=`expr $i + 1`
  11.   # skip first 10 backups
  12.   if [ $i -gt 10 ]
  13.   then
  14.     # Get the database name by extracting the substring before the position of the first _
  15.     # echo ${f:0:`expr index "$f" _`-1}
  16.     # Get the date part by extracting a 10 long substring from the position after the first _
  17.     DATUM=${f:`expr index "$f" _`:10}
  18.     DATUM=${DATUM//_/-}
  19.     # Get week number
  20.     WNR=`date +%V -d $DATUM`
  21.     # If we already had that week number this is an older backup from that week. Delete it!
  22.     if [ $LWNR -eq $WNR ]
  23.     then
  24.       echo $f
  25.     fi
  26.     # Set the last week number to the current one. So if the next backup is from a different week it will be kept, if not, deleted.
  27.     LWNR=$WNR
  28.   fi
  29. done

So werden von den älteren immer alle bis auf eines aus einer Woche gelöscht. Wenn man nur automatisiert backupt, kann man das natürlich auch ohne die Wochennummer machen und einfach jedes siebte Ei jede siebte Datei löschen, aber mit der obigen Methode werden auch alte Backups gelöscht, die man mal manuell angelegt hat. So wie ich an Tagen, an denen alle zehn Minuten die Datenbank explodieren könnte, so dass ich ständig Backups anstoße...


Icons by http://www.famfamfam.com/lab/icons/silk/

Photo copyright by me unless noted