Use ALT to move windows in Windows like in Linux

6,524

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.

https://stefansundin.github.io/altdrag/

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
Share:
6,524

Related videos on Youtube

Corey D
Author by

Corey D

Updated on September 17, 2022

Comments

  • Corey D
    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
    phuclv over 5 years
    link-only answers are not good, since they'll become invalid when the link rots
  • forivall
    forivall over 5 years
    I like how my link hasn't rotted, but the answer by @Kelbizzle has. :shrug:
  • forivall
    forivall over 5 years
    Furthermore, 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
    phuclv over 5 years
    even 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
    forivall over 5 years
    you 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
    krizajb almost 5 years
    The 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 years
    What do you mean by scale? Resolution? DPI? windows-font-scaling?
  • krizajb
    krizajb almost 5 years
    Resolution scale, for example having one screen with 250% scale and another with 175% scale.
  • JaKu
    JaKu almost 5 years
    It 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
    JaKu almost 5 years
    +1 for AltDrag.
  • XEROling
    XEROling over 3 years
    It 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
    XEROling over 3 years
    WinXMove didn't work on my Windows 10 20H2. Perhaps it has become outdated?
  • phuclv
    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
    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
    Mikko Rantalainen over 2 years
    It seems that AltDrag is no longer maintained. You could try using github.com/RamonUnch/AltSnap instead.
  • ThiagoPonte
    ThiagoPonte over 2 years
    AltSnap is perfect for my needs!
  • tinker
    tinker over 2 years
    this 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.