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