blog · git · desktop · images · contact & privacy · gopher


Window Managing: „Mal eben ins Meeting“

Ich habe auf der Arbeit einen Laptop und zwei externe Bildschirme, also insgesamt drei Monitore. Die meiste Action findet zwar auf einem Monitor statt und die anderen beiden dienen nur als eine Art „Information Radiator“ (Lust auf Buzzword-Bingo?), aber nichtsdestotrotz sind es drei Monitore, auf denen sich Fenster verteilen. So.

Nun ist es ja so, dass Meetings leider recht häufig stattfinden. Was passiert dann mit all den Fenstern? Sobald ich meine zwei Monitore mit „xrandr“ deaktiviere, werden die Fenster „durcheinandergewürfelt“: Sie landen schlichtweg alle auf einem Monitor und wenn ich später die Bildschirme wieder anschließe, muss ich die Fenster manuell neu verteilen. Sehr lästig. Ich höre auch von anderen Usern – egal, ob Linux oder Mac – häufig, dass sie von diesem Verhalten sehr genervt sind und sich wünschen, dass sich der Computer doch bitte merken solle, wo welches Fenster war.

Ich habe das jetzt jedenfalls. Eigentlich gehört noch dieser Commit dazu, denn das ganze funktioniert so:

dwm ist dabei egal, welche Auflösungen die einzelnen Monitore haben, wichtig ist nur die Anordnung. Ich kann also auch meinen Rechner schnappen, in ein Rückzugsbüro gehen, dort zwei ganz andere Bildschirme anstöpseln und kann trotzdem die Fensterplatzierung wiederherstellen. Netter Bonus.

Ich hätte ja gerne eine Lösung, die nicht dwm-spezifisch ist. Man könnte da an ein einfaches Skript denken, das ein bisschen „wmctrl“ bedient. Leider ist das nicht sinnvoll machbar, weil sich einerseits das ganze Tagging-Konzept von dwm nicht mit EWMH oder so verträgt, andererseits will ich auch die Anordnung der Fenster pro Monitor wiederherstellen können – also ich will, dass das Terminal von rechts oben auch nach der Wiederherstellung wieder rechts oben ist. dwm-intern ist dafür die Position des Clients in einem Stack verantwortlich. Von diesem Stack hat die „Außenwelt“ keine Ahnung. Von außen könnte ich nur x- und y-Koordinaten setzen, was dwm aber herzlich wenig interessiert.

Wäre es sinnvoll, das Placement persistent zu speichern? Nein, denn dafür gibt es dwm-Regeln. Wäre es sinnvoll, das komplette Problem mit dwm-Regeln zu erschlagen? Nein, denn dann bräuchte ich für jedes Fenster eine Regel, was (für mich) nicht praktikabel ist.

Seit ich diese Funktion habe, machen Meetings jedenfalls deutlich mehr Spaß. ;-)