Com os monitores cada vez maiores e os recursos das maquinas melhores trabalhar com múltiplas janelas no Windows é algo que pode trazer muito produtividade no seu dia a dia.
O Windows vem de fabrica (rs) com um recurso de ajuste das janelas que faz com elas ocupem os espaços igualmente meio a meio com atalhos no teclado como por exemplo a tecla WINDOWS + SETA PRA ESQUERDA, você também pode utilizar WINDOWS + SETA PRA DIREITA, enfim, existem algumas opções nativamente.
Mas não existem a opção de dividir as janelas meio a meio na orientação vertical, e isso é super interessante quando você utiliza o monitor na vertical como a dica que publiquei ontem aqui.
Pesquisando um pouco ontem eu encontrei um tutorial super legal de como adicionar esse recurso, vou compartilhar esse aqui, deixo os créditos para o Zee.
;-------------------------------------------------------------------; ; Returns the maximum or minimum value for any number of inputs ; i.e. Max(5,4,7,10) will return 10 ;-------------------------------------------------------------------; Min(params*) { r := params[1] for index, param in params if (param < r) r := param return r } Max(params*) { r := params[1] for index, param in params if (param > r) r := param return r } ;-------------------------------------------------------------------; ; WindowsKey+Ctrl+Up / WindowsKey+Ctrl+Down ; Resizes window to half the screen height and moves it to the top ; or bottom of whichever screen has the largest overlap. ; By default, the window retains its horizontal (x) position and ; width. To change this, uncomment the WinMaximize line. ;-------------------------------------------------------------------; UpDownSnap(Direction) { ; WinMaximize, A WinGetPos, x, y, w, h, a, , , SysGet , Count, MonitorCount refArea := 0 Loop, %count% { SysGet, m, MonitorWorkArea, %A_Index% xo := Max(0, Min(x + w, mRight) - Max(x, mLeft)) yo := Max(0, Min(y + h, mBottom) - Max(y, mTop)) area := xo * yo if (area > refArea) { monTop := mTop monBottom := mBottom monLeft := mLeft monRight := mRight refArea := area } } ; If the refArea is still equal to 0, the window does ; not overlap with any monitors. Wat? if (refArea > 0) { if (direction = 1) newY := monTop Else newY := (monBottom - monTop) / 2 + monTop WinMove , a, , monLeft, newY, (monRight - monLeft), (monBottom - monTop) / 2 } } ^#Up::UpDownSnap(1) ^#Down::UpDownSnap(0)