Используйте ALT для перемещения окон в Windows, как в Linux


14

В большинстве оконных менеджеров Linux можно использовать Altклавишу, щелкая и перетаскивая, чтобы изменить порядок окон. Это одна из моих любимых функций оконных менеджеров Linux.

Есть ли способ сделать это в Windows 7?


"одна из моих любимых функций некоторых оконных менеджеров Linux". FTFY. И вы можете назвать одно или два, которые делают это, чтобы люди, которые не знают о поведении, могли попробовать его ...
dmckee --- котенок экс-модератора

Обновитесь до Windows 7, и ваш ключ Windows порадует вас
Ivo Flipse

AFAIK Gnome, KDE, Xfce и несколько вариантов * box поддерживают это либо по умолчанию, либо с простой настройкой.
Кори Д


Дубликат должен быть наоборот.
fixer1234

Ответы:



1

Используйте этот скрипт autohotkey :

  • отлично работает на windows 10
  • прост в установке
  • можно скомпилировать в отдельное приложение

источник: 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

Скрипт имеет огромные проблемы с двумя экранами, использующими разный масштаб. Один экран или, возможно, два экрана с одинаковым масштабом, он может работать отлично, к сожалению, у меня нет такой роскоши :)
krizajb

Что вы подразумеваете под масштабом? Разрешение? DPI? окна-масштабирования шрифтов?
Ярослав Рахматуллин

Шкала разрешения, например, с одним экраном со шкалой 250% и другим со шкалой 175%.
krizajb

Это имеет проблемы при использовании alt-tab. Вы не можете выбрать программу, когда окно alt-tab видно, нажав на нее, которая работает без скрипта. AltDrag, упомянутый в другом ответе, делает оба вместе.
JaKu

1

Win-X-Move

Эта программа значительно упрощает манипулирование окнами (перемещение / изменение размера) под MS-Windows. Теперь вы можете перемещать и изменять размер путем перетаскивания по любой точке окна левой и правой кнопками мыши соответственно, как это делается в большинстве оконных менеджеров X11.

http://winxmove.sourceforge.net/

Когда приложение запущено, вы можете перемещать окна, просто щелкая левой кнопкой мыши в любом месте внутри них, удерживая нажатой клавишу Alt на клавиатуре. Чтобы изменить размер окна, вы должны удерживать клавиши Alt и Ctrl, щелкая правой кнопкой мыши в любом месте окна и перемещая указатель мыши в направлении, в котором вы хотите изменить размер окна.

Win-X-Move: переместить или изменить размер окна приложения, щелкнув в любом месте внутри них


AltDrag

AltDrag дает вам возможность перемещать и изменять размеры окон по-новому. После запуска AltDrag вы можете просто удерживать клавишу Alt, а затем щелкнуть и перетащить любое окно.

Такое поведение уже существует в Linux и других операционных системах, и AltDrag была создана с целью скопировать это поведение на платформу Windows, а затем расширить его с помощью новых интуитивно понятных функций.

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

Он гораздо более настраиваемый и имеет больше функций, чем предыдущий: оснастка окон, изменение прозрачности, изменение громкости, поддержка нескольких мониторов ...


Оба вышеперечисленных приложения являются переносимыми и их просто нужно скачать, распаковать и запустить


+1 за AltDrag.
JaKu

0

Улучшенная версия скрипта, упомянутая в другом ответе, доступна в виде упакованного приложения: KDE Mover-Sizer . Так как это скрипт Autohotkey, у меня есть собственная сильно настроенная версия.


ссылка только ответы не очень хорошо , так как они становятся недействительными , когда ссылка гниет
phuclv

Мне нравится, что моя ссылка не сгнила, но ответ @Kelbizzle имеет. : пожав плечами:
forivall

Кроме того, полный источник связанного программного обеспечения превышает почтовый лимит: «Тело ограничено 30000 символами; вы ввели 91131». это не может быть включено.
forivall

даже если он слишком большой, вы все равно должны опубликовать резюме (и, если возможно, основную часть обработки). Как я могу сделать ссылку на внешний ресурс в сообществе? , meta.stackexchange.com/a/143996/230282 . На данный момент я понятия не имею, что это за «вышеупомянутый сценарий»
phuclv

Вы должны опубликовать основную часть обработки исходного кода приложений, на которые вы ссылаетесь. Знаете, ответы только на ссылки не очень хороши. кроме того, у вас есть представитель, чтобы предложить изменения. ты большой мальчик, ты можешь делать работу
forivall
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.