Vertragsfragen←▼→Noch ein Editor

tipps&tricks,windows,desktop,autohotkey

Fenster per Tastenbefehl auf dem Monitor positionieren

Erstellt: 25.01.2018 Lesedauer 1 - 2 Min.

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 :

TasteFunktion
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 Positionalle anderen Eingaben werden ignoriert und das Skript bricht ab

#Numpad0::
#0::
;#WinActivateForce
WinActivate  Aktuelles Fenster nehmen
WinGetActiveTitle
Titel
WinRestore
, %Titel%
SysGet MwaMonitorWorkArea

Input
LageL1, {Enter}

oben links
If (Lage 7)
    
WinMove, %Titel%, , 00, (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%, , 0MwaBottom - (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 == "+")
{
    
WinGetPoswxwywbwhA
    
If (wy < (MwaBottom // 2))
        
WinMove, %Titel%, , wx,wy,wbMwaBottom - (MwaBottom // 3)
    
else
     
WinMove, %Titel%, , wx, (wy // 2),wb, MwaBottom - (MwaBottom // 3)
}
Volle Höhe im Raster
If (Lage == "*")
{
    
WinGetPoswxwywbwhA
    WinMove
, %Titel%, , wx,0,wbMwaBottom
}
Halbe Breite im Raster
If (Lage == "/")
{
    
WinGetPoswxwywbwhA
      
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 rechtsschrumpft nach rechts
              WinMove
, %Titel%, , wx + (wb // 2), wy,(wb // 2),wh
}
Doppelte Breite im Raster
If (Lage == "-")
{
    
WinGetPoswxwywbwhA
    
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 rechtsAusehnung 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

Download der AHK-Datei als ZIP (2kB)