Sử dụng ALT để di chuyển các cửa sổ trong Windows như trong Linux


14

Trong hầu hết các trình quản lý cửa sổ Linux, người ta có thể sử dụng Altkhóa trong khi nhấp và kéo để sắp xếp lại các cửa sổ. Đây là một trong những tính năng yêu thích của tôi về các trình quản lý cửa sổ Linux.

Có cách nào để làm điều này trong Windows 7 không?


"Một trong những tính năng yêu thích của tôi về một số trình quản lý cửa sổ Linux". FTFY. Và bạn có thể muốn đặt tên cho một hoặc hai mà làm điều đó vì thế những người không nhận thức được hành vi có thể đi thử nó ra ...
dmckee --- cựu điều hành kitten

Nâng cấp lên Windows 7 và bạn là phím Windows sẽ khiến bạn hài lòng
Ivo Flipse

AFAIK Gnome, KDE, Xfce và một số biến thể hộp * hỗ trợ điều này theo mặc định hoặc với cấu hình dễ dàng.
Corey D


Các bản sao nên là cách khác xung quanh.
fixer1234

Câu trả lời:



1

Sử dụng tập lệnh autohotkey này :

  • hoạt động HOÀN HẢO trên windows 10
  • dễ dàng để cài đặt
  • có thể được biên dịch thành một ứng dụng độc lập

nguồn: 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

Kịch bản có vấn đề lớn với hai màn hình sử dụng quy mô khác nhau. Một màn hình duy nhất hoặc có thể là hai màn hình có cùng tỷ lệ, nó có thể hoạt động hoàn hảo, tiếc là tôi không có sự xa xỉ đó :)
krizajb

Bạn có ý nghĩa gì bởi quy mô? Nghị quyết? Sở DPI? windows-font-scaling?
Ярослав Рахматуллин

Tỷ lệ phân giải, ví dụ có một màn hình với tỷ lệ 250% và một màn hình khác với tỷ lệ 175%.
krizajb

Nó có vấn đề khi sử dụng alt-tab. Bạn không thể chọn chương trình khi cửa sổ tab alt hiển thị bằng cách nhấp vào chương trình này, chương trình này hoạt động mà không có tập lệnh. AltDrag được đề cập trong một câu trả lời khác làm cả hai cùng nhau.
JaKu

1

Win-X-Move

Chương trình này giúp thao tác với cửa sổ (di chuyển / thay đổi kích thước) trong MS-Windows, dễ dàng hơn nhiều. Bây giờ bạn có thể di chuyển và thay đổi kích thước bằng cách kéo alt trên bất kỳ điểm nào của cửa sổ bằng nút chuột trái và chuột phải, như đã thực hiện trên hầu hết các trình quản lý cửa sổ X11.

http://winxmove.sourceforge.net/

Với ứng dụng đang chạy, bạn có thể di chuyển các cửa sổ chỉ bằng cách nhấp chuột trái vào bất cứ nơi nào trong chúng trong khi giữ phím Alt trên bàn phím. Để thay đổi kích thước cửa sổ, bạn giữ phím Alt và Ctrl trong khi nhấp chuột phải vào bất kỳ vị trí nào trong cửa sổ và di chuyển con trỏ chuột theo hướng bạn muốn thay đổi kích thước cửa sổ.

Win-X-Move: Di chuyển hoặc thay đổi kích thước Windows ứng dụng bằng cách nhấp vào bất cứ nơi nào trong chúng


AltDrag

AltDrag cung cấp cho bạn khả năng di chuyển và thay đổi kích thước cửa sổ theo một cách mới. Sau khi bắt đầu AltDrag, bạn chỉ cần giữ phím Alt và sau đó nhấp và kéo bất kỳ cửa sổ nào.

Hành vi này đã tồn tại trong Linux và các hệ điều hành khác và AltDrag được thực hiện với nhiệm vụ sao chép hành vi đó sang nền tảng Windows và sau đó mở rộng thêm với chức năng trực quan mới.

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

Nó có thể cấu hình nhiều hơn và có nhiều tính năng hơn so với trước đây: cửa sổ chụp nhanh, thay đổi độ trong suốt, thay đổi âm lượng, hỗ trợ đa màn hình ...


Cả hai ứng dụng trên đều có thể mang theo và chỉ cần tải xuống, giải nén rồi chạy


+1 cho AltDrag.
JaKu

0

Một phiên bản cải tiến của tập lệnh được đề cập trong một câu trả lời khác ở đây có sẵn dưới dạng một ứng dụng đóng gói: KDE Mover-Sizer . Vì nó là một kịch bản Autohotkey, tôi có phiên bản tùy biến rất nhiều của riêng tôi.


câu trả lời chỉ liên kết là không tốt , vì chúng sẽ trở nên không hợp lệ khi liên kết
rots

Tôi thích cách liên kết của tôi không bị rách nát, nhưng câu trả lời của @Kelbizzle thì có. : nhún vai:
tạm biệt

Hơn nữa, nguồn đầy đủ của phần mềm được liên kết vượt quá giới hạn bài đăng: "Phần thân được giới hạn ở 30000 ký tự; bạn đã nhập 91131." nó không thể được bao gồm.
tạm biệt

ngay cả khi nó quá lớn, bạn vẫn nên đăng một bản tóm tắt (và phần xử lý chính nếu có thể). Làm cách nào tôi có thể liên kết với một nguồn tài nguyên bên ngoài theo cách thân thiện với cộng đồng? , meta.stackexchange.com/a/143996/230282 . Cho đến bây giờ tôi không biết đó là "kịch bản đã nói ở trên"
phuclv

bạn nên đăng phần xử lý chính của mã nguồn của các ứng dụng bạn đã liên kết. câu trả lời chỉ liên kết là không tốt, bạn biết. Bên cạnh đó, bạn có đại diện để đề xuất chỉnh sửa. bạn là một cậu bé lớn, bạn có thể thực hiện công việc
trước
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.