21

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?

5
  • "one of my favorite features of some Linux window managers". FTFY. And you might want to name one or two that do it so people who aren't aware of the behavior can go try it out... Feb 1, 2010 at 19:24
  • Upgrade to Windows 7 and you're Windows key will make you happy
    – Ivo Flipse
    Feb 1, 2010 at 19:29
  • AFAIK Gnome, KDE, Xfce, and several *box variants support this either by default or with easy configuration.
    – Corey D
    Feb 1, 2010 at 20:16
  • 1
  • The duplicate should be the other way around.
    – fixer1234
    Nov 2, 2016 at 3:49

4 Answers 4

12

Get AltMove - it does exactly that and a lot more.

AltMove screenshot

AltMove is freeware and portable.

1
7

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

7
  • 4
    +1 for AltDrag.
    – JaKu
    Sep 16, 2019 at 19:09
  • WinXMove didn't work on my Windows 10 20H2. Perhaps it has become outdated?
    – Galacticai
    Feb 24, 2021 at 10:48
  • @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.
    – phuclv
    Feb 24, 2021 at 11:15
  • 1
    It seems that AltDrag is no longer maintained. You could try using github.com/RamonUnch/AltSnap instead. Dec 8, 2021 at 20:19
  • 1
    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.
    – tinker
    Mar 17, 2022 at 8:22
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
5
  • 1
    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 :)
    – krizajb
    Sep 1, 2019 at 18:15
  • What do you mean by scale? Resolution? DPI? windows-font-scaling? Sep 2, 2019 at 12:19
  • Resolution scale, for example having one screen with 250% scale and another with 175% scale.
    – krizajb
    Sep 3, 2019 at 12:58
  • 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
    Sep 16, 2019 at 19:09
  • 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
    – Galacticai
    Feb 24, 2021 at 10:45
0

An improved version of the script mentioned in another answer here is available as a packaged application: KDE Mover-Sizer. As it is an Autohotkey script, I have my own heavily customized version.

5
  • link-only answers are not good, since they'll become invalid when the link rots
    – phuclv
    Feb 9, 2019 at 8:06
  • I like how my link hasn't rotted, but the answer by @Kelbizzle has. :shrug:
    – forivall
    Feb 20, 2019 at 2:56
  • 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.
    – forivall
    Feb 20, 2019 at 2:59
  • 1
    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
    – phuclv
    Feb 20, 2019 at 3:11
  • 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
    – forivall
    Feb 21, 2019 at 0:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .