Skip to main content
added 148 characters in body
Source Link
Tymric
  • 5.6k
  • 2
  • 19
  • 44

Even on Windows 7 and higher, this behavior is still limited to edges and not corners. I use AutoHotKey to achieve something similar to Ubuntu. Install it and run the following script:

#Persistent

SysGet, MonitorCount, MonitorCount
SysGet, Mon1, MonitorWorkArea
midH := (Mon1Right-Mon1Left)/2
midV := (Mon1Bottom-Mon1Top)/2

#NumPad1::
  WinRestore, A
  WinMove A, , 0, midV, midH, midV
  return
#NumPad2::
  WinRestore, A
  WinMove A, , 0, midV, Mon1Right, midV
  return
#NumPad3::
  WinRestore, A
  WinMove A, , midH, midV, midH, midV
  return
#NumPad4::
  WinRestore, A
  WinMove A, , 0, 0, midH, Mon1Bottom
  return
#NumPad5::
  WinGet, MinMax, MinMax, A
  if (MinMax = 0) {
    WinMaximize, A
  } else {
    WinRestore, A
  }
  return
  WinRestore, A
#NumPad6::
  WinRestore, A
  WinMove A, , midH, 0, midH, Mon1Bottom
  return
#NumPad7::
  WinRestore, A
  WinMove A, , 0, 0, midH, midV
  return
#NumPad8::
  WinRestore, A
  WinMove A, , 0, 0, Mon1Right, midV
  return
#NumPad9::
  WinRestore, A
  WinMove A, , midH, 0, midH, midV
  return

It allows you to use Win + any key on the numpad to move the active window to the corresponding edge/corner, with Win+Num5 for maximize/restore


Edit:

For a multi-monitor setup, here is the revised version of the script (Github link)

Even on Windows 7 and higher, this behavior is still limited to edges and not corners. I use AutoHotKey to achieve something similar to Ubuntu. Install it and run the following script:

#Persistent

SysGet, MonitorCount, MonitorCount
SysGet, Mon1, MonitorWorkArea
midH := (Mon1Right-Mon1Left)/2
midV := (Mon1Bottom-Mon1Top)/2

#NumPad1::
  WinRestore, A
  WinMove A, , 0, midV, midH, midV
  return
#NumPad2::
  WinRestore, A
  WinMove A, , 0, midV, Mon1Right, midV
  return
#NumPad3::
  WinRestore, A
  WinMove A, , midH, midV, midH, midV
  return
#NumPad4::
  WinRestore, A
  WinMove A, , 0, 0, midH, Mon1Bottom
  return
#NumPad5::
  WinGet, MinMax, MinMax, A
  if (MinMax = 0) {
    WinMaximize, A
  } else {
    WinRestore, A
  }
  return
  WinRestore, A
#NumPad6::
  WinRestore, A
  WinMove A, , midH, 0, midH, Mon1Bottom
  return
#NumPad7::
  WinRestore, A
  WinMove A, , 0, 0, midH, midV
  return
#NumPad8::
  WinRestore, A
  WinMove A, , 0, 0, Mon1Right, midV
  return
#NumPad9::
  WinRestore, A
  WinMove A, , midH, 0, midH, midV
  return

It allows you to use Win + any key on the numpad to move the active window to the corresponding edge/corner, with Win+Num5 for maximize/restore

Even on Windows 7 and higher, this behavior is still limited to edges and not corners. I use AutoHotKey to achieve something similar to Ubuntu. Install it and run the following script:

#Persistent

SysGet, MonitorCount, MonitorCount
SysGet, Mon1, MonitorWorkArea
midH := (Mon1Right-Mon1Left)/2
midV := (Mon1Bottom-Mon1Top)/2

#NumPad1::
  WinRestore, A
  WinMove A, , 0, midV, midH, midV
  return
#NumPad2::
  WinRestore, A
  WinMove A, , 0, midV, Mon1Right, midV
  return
#NumPad3::
  WinRestore, A
  WinMove A, , midH, midV, midH, midV
  return
#NumPad4::
  WinRestore, A
  WinMove A, , 0, 0, midH, Mon1Bottom
  return
#NumPad5::
  WinGet, MinMax, MinMax, A
  if (MinMax = 0) {
    WinMaximize, A
  } else {
    WinRestore, A
  }
  return
  WinRestore, A
#NumPad6::
  WinRestore, A
  WinMove A, , midH, 0, midH, Mon1Bottom
  return
#NumPad7::
  WinRestore, A
  WinMove A, , 0, 0, midH, midV
  return
#NumPad8::
  WinRestore, A
  WinMove A, , 0, 0, Mon1Right, midV
  return
#NumPad9::
  WinRestore, A
  WinMove A, , midH, 0, midH, midV
  return

It allows you to use Win + any key on the numpad to move the active window to the corresponding edge/corner, with Win+Num5 for maximize/restore


Edit:

For a multi-monitor setup, here is the revised version of the script (Github link)

Source Link
Tymric
  • 5.6k
  • 2
  • 19
  • 44

Even on Windows 7 and higher, this behavior is still limited to edges and not corners. I use AutoHotKey to achieve something similar to Ubuntu. Install it and run the following script:

#Persistent

SysGet, MonitorCount, MonitorCount
SysGet, Mon1, MonitorWorkArea
midH := (Mon1Right-Mon1Left)/2
midV := (Mon1Bottom-Mon1Top)/2

#NumPad1::
  WinRestore, A
  WinMove A, , 0, midV, midH, midV
  return
#NumPad2::
  WinRestore, A
  WinMove A, , 0, midV, Mon1Right, midV
  return
#NumPad3::
  WinRestore, A
  WinMove A, , midH, midV, midH, midV
  return
#NumPad4::
  WinRestore, A
  WinMove A, , 0, 0, midH, Mon1Bottom
  return
#NumPad5::
  WinGet, MinMax, MinMax, A
  if (MinMax = 0) {
    WinMaximize, A
  } else {
    WinRestore, A
  }
  return
  WinRestore, A
#NumPad6::
  WinRestore, A
  WinMove A, , midH, 0, midH, Mon1Bottom
  return
#NumPad7::
  WinRestore, A
  WinMove A, , 0, 0, midH, midV
  return
#NumPad8::
  WinRestore, A
  WinMove A, , 0, 0, Mon1Right, midV
  return
#NumPad9::
  WinRestore, A
  WinMove A, , midH, 0, midH, midV
  return

It allows you to use Win + any key on the numpad to move the active window to the corresponding edge/corner, with Win+Num5 for maximize/restore