;WinManagement_snap v0.2-- farr independent version! ;Modified version of jgpaiva's great WinManagement (by Armando) ;date: July 2007 - January 2008 ;Function: manage windows ;#notrayicon ; *****MOVE WINDOW TO SCREEN CORNERS SECTION***** ; Move window to Up-Left corner #home:: ; these hotkeys can be modified. (# = winkey. ^ = ctrl key. + = shift key. ) { SysGet, OutputVar, MonitorWorkArea,1 WinGetPos, WinLeft, WinTop, WinWidth, WinHeight,A WinGetClass,WinClass,A WinGet,WindowId,id,A WinMove, ahk_id %WindowId%, ,OutputVarLeft,OutputVarTop, %WinWidth%,%WinHeight% ; WinMove, ahk_id %WindowId%, ,0,0, %WinWidth%,%WinHeight% return } ; Move window to Up-Right corner #pgup:: { SysGet, OutputVar, MonitorWorkArea,1 WinGetPos, WinLeft, WinTop, WinWidth, WinHeight,A WinGetClass,WinClass,A WinGet,WindowId,id,A WinMove, ahk_id %WindowId%, , (OutputVarRight-WinWidth),OutputVarTop, %WinWidth%,%WinHeight% return } ; Move window to Low-Right corner #pgdn:: { SysGet, OutputVar, MonitorWorkArea,1 WinGetPos, WinLeft, WinTop, WinWidth, WinHeight,A WinGetClass,WinClass,A WinGet,WindowId,id,A WinMove, ahk_id %WindowId%, ,(OutputVarRight-WinWidth),(OutputVarBottom-WinHeight), %WinWidth%,%WinHeight% return } ; Move window to Low-Left corner #end:: { SysGet, OutputVar, MonitorWorkArea,1 WinGetPos, WinLeft, WinTop, WinWidth, WinHeight,A WinGetClass,WinClass,A WinGet,WindowId,id,A WinMove, ahk_id %WindowId%, , OutputVarLeft,(OutputVarBottom-WinHeight), %WinWidth%,%WinHeight% return } ; *****SNAP WINDOW BORDERS TO SCREEN EDGES SECTION***** ; Snap top window edge to screen top #up:: { SysGet, OutputVar, MonitorWorkArea,1 WinGetPos, WinLeft, WinTop, WinWidth, WinHeight,A WinGetClass,WinClass,A WinGet,WindowId,id,A WinMove, ahk_id %WindowId%, , %Winleft%, OutputVarTop, %WinWidth%, (WinHeight+(WinTop-OutputVarTop)) return } ; Snap bottom window edge to screen bottom #down:: { SysGet, OutputVar, MonitorWorkArea,1 WinGetPos, WinLeft, WinTop, WinWidth, WinHeight,A WinGetClass,WinClass,A WinGet,WindowId,id,A WinMove, ahk_id %WindowId%, , %Winleft%, %WinTop%, %WinWidth%, ((OutputVarBottom-(WinHeight+WinTop))+WinHeight) return } ; Snap left window edge to screen left #Left:: { SysGet, OutputVar, MonitorWorkArea,1 WinGetPos, WinLeft, WinTop, WinWidth, WinHeight,A WinGetClass,WinClass,A WinGet,WindowId,id,A WinMove, ahk_id %WindowId%, , OutputVarLeft, %WinTop%, (WinWidth+(WinLeft-OutputVarLeft)), %WinHeight% return } ; Snap Right window edge to screen right #Right:: { SysGet, OutputVar, MonitorWorkArea,1 WinGetPos, WinLeft, WinTop, WinWidth, WinHeight,A WinGetClass,WinClass,A WinGet,WindowId,id,A WinMove, ahk_id %WindowId%, , Winleft, %WinTop%, (WinWidth+(OutputVarRight-(WinLeft+WinWidth))), %Win#Height% return } ; **** OTHER WINDOW MANAGEMENTS...**** ; Ontop #^<:: #^home:: { WinSet, AlwaysOnTop, Toggle,A return } ; Maximize - Restore #^pgup:: { winget,state,minmax,A if state = 1 WinRestore,A else PostMessage, 0x112, 0xF030,,, A, return } ; Minimize #^pgdn:: { WinMinimize,A return } ; Maximize Vertically #^up:: #^down:: { SysGet, OutputVar, MonitorWorkArea,1 WinGetPos, WinLeft, WinTop, WinWidth, WinHeight,A WinGetClass,WinClass,A WinGet,WindowId,id,A WinMove, ahk_id %WindowId%, ,%WinLeft%,OutputVarTop, %WinWidth%,(WinHeight+(OutputVarBottom-OutputVarTop-WinHeight)) return } ; Maximize horizontally #^left:: #^Right:: { SysGet, OutputVar, MonitorWorkArea,1 WinGetPos, WinLeft, WinTop, WinWidth, WinHeight,A WinGetClass,WinClass,A WinGet,WindowId,id,A WinMove, ahk_id %WindowId%, ,OutputVarLeft,%WinTop%,(WinWidth+(OutputVarRight-OutputVarLeft-WinWidth)),%WinHeight% return }