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


Window Managing: Privatsphäre am Beamer

Beim Anschluss des Notebooks an den Beamer gibt es zwei sehr gängige Optionen:

Beides hat Vor- und Nachteile. Ich habe es eigentlich viel lieber, wenn ich am Laptop auch das sehe, was am Beamer zu sehen ist. Schon alleine deshalb, weil ich manchmal mit dem Rücken zum Beamer sitze. Der Nachteil am Klon-Modus ist natürlich, dass alles, was ich mache, am Beamer sichtbar ist. Das ist vielleicht nicht immer gewünscht.

Jetzt haben wir natürlich schon 2015 und damit haben eigentlich fast alle neuen Laptops Displays mit 1920x1080 Pixeln (oder „Full-HD“ oder „1080p“ oder wie auch immer das heute von den Marketing-Fuzzis genannt wird). Diese Menge an Pixeln ist aber bei den Beamern noch nicht so richtig üblich – und selbst wenn, kann ich immer noch eine niedrigere Auflösung benutzen. Das heißt, ich habe eigentlich die Möglichkeit, an meinem Laptop das Beamer-Bild und einen privaten Bereich anzuzeigen. Prinzipiell ist das machbar, die Frage ist nur, wie man das der genutzten Software verklickert.

Was ich gerne hätte, wäre, am Laptop-Monitor das hier zu sehen:

###############################
#+------------------++-------+#
#|                  ||       |#
#|      Beamer      ||   P   |#
#|                  ||   r   |#
#|                  ||   i   |#
#+------------------+|   v   |#
#                    |   a   |#
#                    |   t   |#
#                    |       |#
#                    +-------+#
###############################

Je nach Auflösung des Beamers könnte man auch den unteren Bereich noch ausnutzen.

Für Xorg ist die ganze Aktion überhaupt kein Problem. Man kann das mit „xrandr“ konfigurieren:

$ xrandr --output LVDS1 --auto --output VGA1 --same-as LVDS1 --mode 1280x720

Der Window Manager oder zusätzlich genutzte Tools wie Panels könnten sich allerdings ein bisschen gegen dieses Setup wehren. Ich bin hier in einer komfortablen Situation, da ich außer dwm nichts weiter in der Richtung nutze.

Der Standard-dwm kommt nicht mit der genannten Situation klar. Man hat dann zwei Statusbars und Working Areas, die sich überlagern. Das ist nicht benutzbar und muss angepasst werden. Wie könnte man das Problem lösen? Wie allgemein soll die Lösung sein? Wieviel zusätzliche Intelligenz muss dwm bekommen? Das ist komplizierter, als man denken möchte.

Letztendlich habe ich mich für die allgemeinste aller Lösungen entschieden: Der Benutzer soll alles frei bestimmen können. De facto erhält er damit die Möglichkeit, die Informationen, die dwm von Xinerama ausliest, komplett zu überschreiben. Das ist in gewisser Weise ähnlich zu libfakexinerama oder splitwm. Prinzipiell hätte ich auch libfakexinerama benutzen können, das war mir jedoch um ein paar Nuancen zu sperrig.

Meine Lösung sieht jetzt so aus, dass man eine neue Property am Root Window setzen kann:

xprop -root -f DWM_VIRTUAL_MONITORS 8s -set DWM_VIRTUAL_MONITORS '1024x768+0+0;800x600+1280+20;'

Wie auch immer die tatsächlichen Monitore dann ausgerichtet sind, spielt keine Rolle mehr – das obige ist, was dwm verwendet, um die Statusbars und alle Client-Fenster anzuordnen.

Entfernt man die Property wieder, kehrt dwm zum normalen Xinerama-Modus zurück:

xprop -root -remove DWM_VIRTUAL_MONITORS

Konkret sieht der „Workflow“ bei einem Gang in ein Meeting so aus:

Ob diese Lösung das endgültige Optimum darstellt, weiß ich noch nicht. Deswegen befindet sich das alles noch auf einem eigenen Branch von dwm-vain und ist noch nicht in den Master zurückgemerged.

Inwiefern dieser Ansatz benutzt werden kann, um slinp zu vereinfachen, habe ich noch nicht überlegt.