Last active
August 28, 2024 12:55
-
-
Save attie/50f81cb7b3613803be78a334bd01f26e to your computer and use it in GitHub Desktop.
Usability improvements for moving and resizing windows, on Windows with AutoHotKey
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; Win+LeftClick allows you to move a window from anywhere | |
; be careful, not all windows should be dragged (e.g: start menu) | |
#LButton:: | |
MouseGetPos,KDE_X1,KDE_Y1,KDE_id | |
WinGet,KDE_Win,MinMax,ahk_id %KDE_id% | |
if KDE_Win | |
return | |
WinGetPos,KDE_WinX1,KDE_WinY1,,,ahk_id %KDE_id% | |
loop { | |
GetKeyState,KDE_Button,LButton,P | |
if KDE_Button = U | |
break | |
MouseGetPos,KDE_X2,KDE_Y2 | |
KDE_X2 -= KDE_X1 | |
KDE_Y2 -= KDE_Y1 | |
KDE_WinX2 := (KDE_WinX1 + KDE_X2) | |
KDE_WinY2 := (KDE_WinY1 + KDE_Y2) | |
WinMove,ahk_id %KDE_id%,,%KDE_WinX2%,%KDE_WinY2% | |
} | |
return | |
; Win+RightClick allows you to resize the window from the nearest corner | |
; again, be careful... not all windows handle resizes properly | |
#RButton:: | |
MouseGetPos,KDE_X1,KDE_Y1,KDE_id | |
WinGet,KDE_Win,MinMax,ahk_id %KDE_id% | |
if KDE_Win | |
return | |
WinGetPos,KDE_WinX1,KDE_WinY1,KDE_WinW,KDE_WinH,ahk_id %KDE_id% | |
if (KDE_X1 < KDE_WinX1 + KDE_WinW / 2) { | |
KDE_WinLeft := 1 | |
} else { | |
KDE_WinLeft := -1 | |
} | |
if (KDE_Y1 < KDE_WinY1 + KDE_WinH / 2) { | |
KDE_WinUp := 1 | |
} else { | |
KDE_WinUp := -1 | |
} | |
loop { | |
GetKeyState,KDE_Button,RButton,P | |
if KDE_Button = U | |
break | |
MouseGetPos,KDE_X2,KDE_Y2 | |
WinGetPos,KDE_WinX1,KDE_WinY1,KDE_WinW,KDE_WinH,ahk_id %KDE_id% | |
KDE_X2 -= KDE_X1 | |
KDE_Y2 -= KDE_Y1 | |
WinMove,ahk_id %KDE_id%,, KDE_WinX1 + (KDE_WinLeft+1)/2*KDE_X2 | |
, KDE_WinY1 + (KDE_WinUp+1)/2*KDE_Y2 | |
, KDE_WinW - KDE_WinLeft *KDE_X2 | |
, KDE_WinH - KDE_WinUp *KDE_Y2 | |
KDE_X1 := (KDE_X2 + KDE_X1) | |
KDE_Y1 := (KDE_Y2 + KDE_Y1) | |
} | |
return |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment