Auf einem Großen Monitor will man mehr als ein Fenster sehen. Die Basisfunktionen ab Windows 8 sind grundsätzlich hilfreich, bei einem richtig großen Monitor ist Halbieren jedoch immer noch zu viel des Guten.
Die Lösung liegt – wie immer öfter in den letzten Tagen – in einem Autohotkey-Skript.
Der Ansatz ist ein Gitter in der Anordnung eines Zahleneingabefelds und der Tasten drumherum. Zusätzlich noch #
als „Hyperarbeitsplatz-Fenster“. Wenn das Autoscript installiert ist, stehen diese Befehle zur Verfügung, immer eingeleitet mit der Tastenfolge WIN
0
gefolgt von :
Taste | Funktion |
---|---|
1 | Fenster unten links |
2 | Fenster unten Mitte |
3 | Fenster unten rechts |
4 | Fenster Mitte links |
5 | Fenster Mitte Mitte |
6 | Fenster Mitte rechts |
7 | Fenster oben links |
8 | Fenster oben Mitte |
9 | Fenster oben rechts |
0 | Fenster Mitte Mitte, vergrößert |
, | Fenster Mitte Mitte, doppelte Höhe |
# | Fenster Mitte Mitte, doppelt hoch und breit |
- | Doppelte Breite für aktuelles Fenster |
+ | Doppelte Höhe für aktuelles Fenster |
* | Volle Höhe für aktuelles Fenster |
/ | Halbe Breite für aktuelles Fenster |
Damit ist der Bildschirm in ein Raster 6 Felder breit und 3 Felder hoch aufgeteilt, in dem die Fenster per Tastenbefehl einsortiert werden können. Die „doppelt breit“ bzw. „doppelt hoch“-Funktion beachtet die jeweilige Fensterlage. Links wird es nach rechts breiter und umgekehrt, in der Mitte expanidert das Fenster nach links und rechts – weil das praktisch ist. Die Höhe verhält sich analog mit oben und unten, wobei die Mitte nur nach unten expandiert.
Das Skript kann in eine Skript-Bibliothek eingefügt oder in einer Datei mitgeladen werden.
Die Fensterauswahl lässt sich mit Standard-Windows Shortcuts ( ALT
TAB
und Pfeiltasten) beschleunigen.
Eine nützliche Ergänzung zur freien und dennoch strukturierten Fensteranordnung ist das Programm WindowGrid.
; Fenstersteuerung ; Der BS wird in neun Bereiche aufgeteilt und mit der Tastatur adressiert (1-9), Anordnung wie NUM-Pad ; Trigger ist WIN 0 und dann die Position, alle anderen Eingaben werden ignoriert und das Skript bricht ab #Numpad0:: #0:: ;#WinActivateForce WinActivate ; Aktuelles Fenster nehmen WinGetActiveTitle, Titel WinRestore, %Titel% SysGet Mwa, MonitorWorkArea Input, Lage, L1, {Enter} ; oben links If (Lage = 7) WinMove, %Titel%, , 0, 0, (MwaRight // 3), (MwaBottom // 3) ; oben mitte If (Lage = 8) WinMove, %Titel%, , (MwaRight // 3), 0, (MwaRight // 3), (MwaBottom // 3) ; oben rechts If (Lage = 9) WinMove, %Titel%, , MwaRight - (MwaRight // 3), 0, (MwaRight // 3), (MwaBottom // 3) ; mitte links If (Lage = 4) WinMove, %Titel%, , 0, (MwaBottom // 3), (MwaRight // 3), (MwaBottom // 3) ; Mitte Mitte If (Lage = 5) WinMove, %Titel%, , (MwaRight // 3), (MwaBottom // 3), (MwaRight // 3), (MwaBottom // 3) ; Mitte rechts If (Lage = 6) WinMove, %Titel%, , MwaRight - (MwaRight // 3), (MwaBottom // 3), (MwaRight // 3), (MwaBottom // 3) ; unten links If (Lage = 1) WinMove, %Titel%, , 0, MwaBottom - (MwaBottom // 3), (MwaRight // 3), (MwaBottom // 3) ; unten Mitte If (Lage = 2) WinMove, %Titel%, , (MwaRight // 3), MwaBottom - (MwaBottom // 3), (MwaRight // 3), (MwaBottom // 3) ; unten rechts If (Lage = 3) WinMove, %Titel%, , MwaRight - (MwaRight // 3), MwaBottom - (MwaBottom // 3), (MwaRight // 3), (MwaBottom // 3) ; Mitte Mitte aber aufgezogen If (Lage = 0) WinMove, %Titel%, , (MwaRight // 4), (MwaBottom // 4), (MwaRight // 2), (MwaBottom // 2) ; Doppelte Höhe im Raster If (Lage == "+") { WinGetPos, wx, wy, wb, wh, A If (wy < (MwaBottom // 2)) WinMove, %Titel%, , wx,wy,wb, MwaBottom - (MwaBottom // 3) else WinMove, %Titel%, , wx, (wy // 2),wb, MwaBottom - (MwaBottom // 3) } ; Volle Höhe im Raster If (Lage == "*") { WinGetPos, wx, wy, wb, wh, A WinMove, %Titel%, , wx,0,wb, MwaBottom } ; Halbe Breite im Raster If (Lage == "/") { WinGetPos, wx, wy, wb, wh, A If (wx < (MwaRight // 3)) ; Fenster liegt links, nach links verkleinern WinMove, %Titel%, , wx,wy,(wb // 2,wh) else If (wx < (MwaRight // 2)) ; Fenster liegt in der Mitte (bleibt da, schrumpt zentriert WinMove, %Titel%, ,wx + (wb // 4),wy,(wb // 2),wh else ; Fenster liegt rechts, schrumpft nach rechts WinMove, %Titel%, , wx + (wb // 2), wy,(wb // 2),wh } ; Doppelte Breite im Raster If (Lage == "-") { WinGetPos, wx, wy, wb, wh, A If (wx < (MwaRight // 3)) ; Fenster liegt links, Ausdehnung rechts WinMove, %Titel%, , wx,wy,MwaRight - (MwaRight // 3),wh else If (wx < (MwaRight // 2)) ; Fenster liegt in der Mitte (bleibt da, wird breiter WinMove, %Titel%, , (wx // 2),wy,MwaRight - (MwaRight // 3),wh else ; Fenster liegt rechts, Ausehnung links WinMove, %Titel%, , (wx // 2), wy,MwaRight - (MwaRight // 3),wh } ; Mitte Mitte doppelt hoch If ((Lage == ",") OR (Lage == ".")) ; abhängig von Tastatureinstellung beim Numpad WinMove, %Titel%, , (MwaRight // 3), (MwaBottom // 3), (MwaRight // 3), 2*(MwaBottom // 3) ; Mitte Mitte doppelt hoch und breit If (Lage == "#") WinMove, %Titel%, , (MwaRight // 6) ,(MwaBottom // 3),(MwaRight // 6)*4,2*(MwaBottom // 3) Return