Use ALT to move windows in Windows like in Linux
Solution 1
Win-X-Move
This program makes window manipulation (moving/resizing) under MS-Windows, much easier. You can now move and resize by alt-dragging on any point of the window with the left and right mouse button respectively, as it's done on most X11 window managers.
http://winxmove.sourceforge.net/
With the app running, you can move windows simply by left clicking anywhere within them while holding down the Alt key on your keyboard. To resize windows, you hold down the Alt and Ctrl key while right clicking anywhere in the window and moving the mouse pointer in the direction you want the window to be resized.
Win-X-Move: Move Or Resize App Windows By Clicking Anywhere Within Them
AltDrag
AltDrag gives you the ability to move and resize windows in a new way. After starting AltDrag, you can simply hold down the Alt key and then click and drag any window.
This behavior already exists in Linux and other operating systems, and AltDrag was made with the mission to copy that behavior to the Windows platform, and then to further expand it with new intuitive functionality.
It's much more configurable and has more features than the previous one: snap windows, change transparency, change volume, multi-monitor support...
The original AltDrag (linked above) now seems largely abandoned. However, this fork is still actively maintained and updated.
Update: The above AltDrag fork has been renamed to AltSnap
Both the above applications are portable and just need to download, extract then run
Solution 2
Use this autohotkey script:
- works PERFECTLY on windows 10
- easy to install
- can be compiled into a standalone app
source: https://autohotkey.com/docs/scripts/EasyWindowDrag_(KDE).htm
; Easy Window Dragging -- KDE style (requires XP/2k/NT) -- by Jonny
; http://www.autohotkey.com
; This script makes it much easier to move or resize a window: 1) Hold down
; the ALT key and LEFT-click anywhere inside a window to drag it to a new
; location; 2) Hold down ALT and RIGHT-click-drag anywhere inside a window
; to easily resize it; 3) Press ALT twice, but before releasing it the second
; time, left-click to minimize the window under the mouse cursor, right-click
; to maximize it, or middle-click to close it.
; This script was inspired by and built on many like it
; in the forum. Thanks go out to ck, thinkstorm, Chris,
; and aurelian for a job well done.
; Change history:
; November 07, 2006: Optimized resizing code in !RButton, courtesy of bluedawn.
; February 05, 2006: Fixed double-alt (the ~Alt hotkey) to work with latest versions of AHK.
; The Double-Alt modifier is activated by pressing
; Alt twice, much like a double-click. Hold the second
; press down until you click.
;
; The shortcuts:
; Alt + Left Button : Drag to move a window.
; Alt + Right Button : Drag to resize a window.
; Double-Alt + Left Button : Minimize a window.
; Double-Alt + Right Button : Maximize/Restore a window.
; Double-Alt + Middle Button : Close a window.
;
; You can optionally release Alt after the first
; click rather than holding it down the whole time.
If (A_AhkVersion < "1.0.39.00")
{
MsgBox,20,,This script may not work properly with your version of AutoHotkey. Continue?
IfMsgBox,No
ExitApp
}
; This is the setting that runs smoothest on my
; system. Depending on your video card and cpu
; power, you may want to raise or lower this value.
SetWinDelay,2
CoordMode,Mouse
return
!LButton::
If DoubleAlt
{
MouseGetPos,,,KDE_id
; This message is mostly equivalent to WinMinimize,
; but it avoids a bug with PSPad.
PostMessage,0x112,0xf020,,,ahk_id %KDE_id%
DoubleAlt := false
return
}
; Get the initial mouse position and window id, and
; abort if the window is maximized.
MouseGetPos,KDE_X1,KDE_Y1,KDE_id
WinGet,KDE_Win,MinMax,ahk_id %KDE_id%
If KDE_Win
return
; Get the initial window position.
WinGetPos,KDE_WinX1,KDE_WinY1,,,ahk_id %KDE_id%
Loop
{
GetKeyState,KDE_Button,LButton,P ; Break if button has been released.
If KDE_Button = U
break
MouseGetPos,KDE_X2,KDE_Y2 ; Get the current mouse position.
KDE_X2 -= KDE_X1 ; Obtain an offset from the initial mouse position.
KDE_Y2 -= KDE_Y1
KDE_WinX2 := (KDE_WinX1 + KDE_X2) ; Apply this offset to the window position.
KDE_WinY2 := (KDE_WinY1 + KDE_Y2)
WinMove,ahk_id %KDE_id%,,%KDE_WinX2%,%KDE_WinY2% ; Move the window to the new position.
}
return
!RButton::
If DoubleAlt
{
MouseGetPos,,,KDE_id
; Toggle between maximized and restored state.
WinGet,KDE_Win,MinMax,ahk_id %KDE_id%
If KDE_Win
WinRestore,ahk_id %KDE_id%
Else
WinMaximize,ahk_id %KDE_id%
DoubleAlt := false
return
}
; Get the initial mouse position and window id, and
; abort if the window is maximized.
MouseGetPos,KDE_X1,KDE_Y1,KDE_id
WinGet,KDE_Win,MinMax,ahk_id %KDE_id%
If KDE_Win
return
; Get the initial window position and size.
WinGetPos,KDE_WinX1,KDE_WinY1,KDE_WinW,KDE_WinH,ahk_id %KDE_id%
; Define the window region the mouse is currently in.
; The four regions are Up and Left, Up and Right, Down and Left, Down and Right.
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 ; Break if button has been released.
If KDE_Button = U
break
MouseGetPos,KDE_X2,KDE_Y2 ; Get the current mouse position.
; Get the current window position and size.
WinGetPos,KDE_WinX1,KDE_WinY1,KDE_WinW,KDE_WinH,ahk_id %KDE_id%
KDE_X2 -= KDE_X1 ; Obtain an offset from the initial mouse position.
KDE_Y2 -= KDE_Y1
; Then, act according to the defined region.
WinMove,ahk_id %KDE_id%,, KDE_WinX1 + (KDE_WinLeft+1)/2*KDE_X2 ; X of resized window
, KDE_WinY1 + (KDE_WinUp+1)/2*KDE_Y2 ; Y of resized window
, KDE_WinW - KDE_WinLeft *KDE_X2 ; W of resized window
, KDE_WinH - KDE_WinUp *KDE_Y2 ; H of resized window
KDE_X1 := (KDE_X2 + KDE_X1) ; Reset the initial position for the next iteration.
KDE_Y1 := (KDE_Y2 + KDE_Y1)
}
return
; "Alt + MButton" may be simpler, but I
; like an extra measure of security for
; an operation like this.
!MButton::
If DoubleAlt
{
MouseGetPos,,,KDE_id
WinClose,ahk_id %KDE_id%
DoubleAlt := false
return
}
return
; This detects "double-clicks" of the alt key.
~Alt::
DoubleAlt := A_PriorHotkey = "~Alt" AND A_TimeSincePriorHotkey < 400
Sleep 0
KeyWait Alt ; This prevents the keyboard's auto-repeat feature from interfering.
return
Related videos on Youtube
Corey D
Updated on September 17, 2022Comments
-
Corey D almost 2 years
In most Linux window managers, one can use the Alt key while clicking and dragging to rearrange windows. This is one of my favorite features of Linux window managers.
Is there a way to do this in Windows 7?
-
phuclv over 5 yearslink-only answers are not good, since they'll become invalid when the link rots
-
forivall over 5 yearsI like how my link hasn't rotted, but the answer by @Kelbizzle has. :shrug:
-
forivall over 5 yearsFurthermore, the full source of the linked software exceeds the post limit: "Body is limited to 30000 characters; you entered 91131." it cannot be included.
-
phuclv over 5 yearseven if it's too big you should still post a summary (and the main processing part if possible). How can I link to an external resource in a community-friendly way?, meta.stackexchange.com/a/143996/230282. As of now I have no idea which "aforementioned script" it is
-
forivall over 5 yearsyou should post the main processing part of the source code of the applications you linked. link-only answers are not good, you know. besides, you have the rep to suggest edits. you're a big boy, you can do the work
-
krizajb almost 5 yearsThe script has huge issues with two screens using different scale. One a single screen or probably two screens with same scale it might work perfectly, unfortunately I don't have that luxury :)
-
Ярослав Рахматуллин almost 5 yearsWhat do you mean by scale? Resolution? DPI? windows-font-scaling?
-
krizajb almost 5 yearsResolution scale, for example having one screen with 250% scale and another with 175% scale.
-
JaKu almost 5 yearsIt has problem when using alt-tab. You cannot select a program when alt-tab window is visible by clicking on it, which works without the script. AltDrag mentioned in another answer does both together.
-
JaKu almost 5 years+1 for AltDrag.
-
XEROling over 3 yearsIt can also be modded to use Win (#) key instead of Alt (!) like the default in the new versions of KDE (I personally much prefer # because it doesn't interfere with any of the programs I use, while Alt-Shift-Ctrl do always interfere and ruin my day) - Here's the modded version (Win key version) if anyone is interested
-
XEROling over 3 yearsWinXMove didn't work on my Windows 10 20H2. Perhaps it has become outdated?
-
phuclv over 3 years@NHKomaiha in the Win-X move website the author has already said There's now a better version of this tool, written by Stefan Sundin, called AltDrag (quite an obvious naming choice in retrospect). I suggest using that one instead, as it works with both 32bit and 64bit programs, and is much more customizable than Win-X-Move.
-
XEROling over 3 years@phuclv I ended up using this AutoHotKey script to do the job (I modded the alt version by Jonny and made it work with Win key so it stops interfering with all my programs)
-
Mikko Rantalainen over 2 yearsIt seems that AltDrag is no longer maintained. You could try using github.com/RamonUnch/AltSnap instead.
-
ThiagoPonte over 2 yearsAltSnap is perfect for my needs!
-
tinker over 2 yearsthis works much better than KDE mover, very configurable, eg. window will continue to be maximised when dragging it to another monitor. Dragging works reliably too, KDE mover accidentally activates research panel when in Microsoft excel.