Có bất kỳ trình quản lý cửa sổ nào cho phép tôi chụp các cửa sổ sang các cạnh của màn hình không?


21

Bạn có thể giới thiệu Window Manager cho Mac không? Tôi muốn có một phím tắt bàn phím sẽ chụp một cửa sổ ở nửa bên trái hoặc bên phải màn hình của tôi.


4
Tôi không nghĩ rằng bạn có thể đăng nhập hoặc thoát khỏi trình quản lý cửa sổ trong OS X.
zneak

@mankoff Câu hỏi này đã được hỏi 6 tháng trước. Câu hỏi của bạn là một bản sao của câu hỏi này.
Kyle Cronin

@Kyle câu hỏi mới đang cố gắng trở thành một câu hỏi chung chung hơn. Điều này là cụ thể để chụp trái / phải. Có rất nhiều câu hỏi cửa sổ cụ thể. Xin lỗi, không cố gắng gây ra vấn đề với câu trả lời +11 tốt của bạn ở đây, chỉ cố gắng tạo một vị trí tham chiếu duy nhất cho tất cả các câu hỏi WM.

@mankoff Tôi không lo lắng về câu trả lời của mình, tôi chỉ nói rằng câu hỏi này không nên được đóng lại dưới dạng "bản sao" của một câu hỏi mới hơn.
Kyle Cronin

Tôi đồng ý rằng nó không thực sự bị đóng, nhưng nó vẫn là một bản sao. Thời gian là không liên quan, chúng là bản sao của nhau và nên tham chiếu lẫn nhau. Tôi chỉ cố gắng theo dõi đoạn cuối của bài đăng này: blog.stackoverflow.com/2011/01/ Kẻ

Câu trả lời:


17

SizeUp chính xác là những gì bạn cần:

SizeUp cho phép bạn nhanh chóng định vị một cửa sổ để lấp đầy chính xác một nửa màn hình (màn hình chia nhỏ), một phần tư màn hình (góc phần tư), toàn màn hình hoặc ở giữa thông qua thanh menu hoặc phím tắt trên toàn hệ thống có thể định cấu hình (phím nóng). Tương tự như chức năng "cửa sổ lát gạch" có sẵn trên các hệ điều hành khác.


1
Có vẻ kỳ lạ là không có sự thay thế miễn phí, nhưng điều này đáng giá. Tôi thực sự chỉ sử dụng 'Toàn màn hình' và 'Màn hình tiếp theo', nhưng nó đáng giá.
Fishtoaster

@Fishtoaster Công ty sản xuất SizeUp cũng đã tạo một phiên bản miễn phí có tên TwoUp, nhưng nó đã bị ngừng hoạt động
Kyle Cronin

1
Điều này. SizeUp đá thế giới của tôi trên một cơ sở hàng ngày.
Matt

Điều này có rất nhiều vị trí mặc định tuyệt vời. Cám ơn vì sự gợi ý.
Citadelgrad

1
@citadelgrad: nếu điều này giải quyết vấn đề của bạn, đừng quên kiểm tra dấu bên cạnh bài đăng.
zneak

8

Sự hiểu biết

Divvy là một ứng dụng thanh thực đơn nhỏ cho phép bạn tự động thay đổi kích thước bất kỳ cửa sổ đang hoạt động nào. Divviy hầu như chia màn hình của bạn thành lưới 6x6. Khi được gọi, Divvy xuất hiện một HUD nhỏ ở giữa màn hình với lưới 6x6 này. Tùy thuộc vào phần nào trên màn hình bạn muốn thay đổi kích thước cửa sổ đang hoạt động của mình, chỉ cần kéo và chọn các ô vuông đó trên HUD và cửa sổ sẽ làm phần còn lại. Nó đơn giản mà.


7

Sau khi thử nghiệm SizeUp và Breeze, tôi đã quyết định rằng Breeze phù hợp với nhu cầu của tôi nhất. Cả hai đều cho phép bạn định vị các cửa sổ bên trái, phải hoặc Toàn màn hình. Tính năng bán nó cho tôi là đặt kích thước & vị trí mặc định cho một ứng dụng và gán cho nó một phím tắt.


Tuyệt vời. Cảm ơn đã chia sẻ những gì bạn quyết định. Trong 8 đô trông thật tuyệt.
mkelley33

7

ShiftIt (phiên bản gốc tại liên kết đã ngừng) thực hiện điều này, và là nguồn mở và miễn phí.

Chỉnh sửa: Dự án hiện đã có trên GitHub , tuy nhiên bản phát hành cuối cùng là vào tháng 11 năm 2010.


1
Đây là những gì tôi sẽ nói. Hoạt động tốt trên Snow Leopard. Hỗ trợ các phím tắt được gán là tốt.
Randy6T9

Thật tuyệt khi nó là nguồn mở, nhưng thực tế là nó yêu cầu X11 khiến tôi không thể đi được
James McMahon

5

Moom

Tôi cũng đã nghe một số người nói điều này:

Bạn có dành nhiều thời gian để di chuyển và phóng to các cửa sổ, để bạn có thể xem và làm việc tốt hơn với tất cả nội dung trên máy Mac của mình không? Thay vì tự mình làm công việc đó, hãy để Moom xử lý công việc cho bạn.


4

Nếu bạn có chuột ma thuật hoặc bàn di chuột ma thuật, BetterTouchTool sẽ tốt hơn khi bạn có thể đặt các cử chỉ cụ thể để quản lý các cửa sổ. Giống như vuốt bốn ngón tay trái có thể thay đổi kích thước cửa sổ sang trái 50% màn hình.


4

Moom là tuyệt vời. Bạn có thể chụp nhanh các cửa sổ: toàn màn hình, nửa màn hình, màn hình quý. Bạn cũng có thể thay đổi kích thước với một lưới. Nó cũng hỗ trợ các phím tắt tùy chỉnh.

Ảnh chụp màn hình


+1 để bao gồm một hình ảnh, vì nó khá hữu ích để có ý tưởng về cách thức hoạt động của nó.
Paul Wagland

3

Cá nhân tôi sử dụng SizeUp và Divvy hàng ngày. Nếu tôi đã biết về ShiftIt trước đó, có lẽ tôi đã không trả tiền cho SizeUp. Một cái khác để kiểm tra chưa được đề cập đến là BetterTouchTool , có nhiều tính năng khác, nhưng ẩn trong các tùy chọn nâng cao là một tính năng hay mà họ gọi là "Chụp cửa sổ", cửa sổ bên trái hoặc bên phải của màn hình khi bạn kéo nó sang một bên. Không có chức năng phím tắt đi kèm, nhưng nó là một bổ sung tốt cho SizeUp và Divvy.


1
BetterTouchTool là những gì tôi sử dụng cho việc này, đây là một trong những ứng dụng miễn phí tốt nhất hiện có.
Robert S Ciaccio

3

Tôi tìm thấy ở đây từ một câu hỏi ngoài chủ đề trên Stack Overflow :

Có hai trình quản lý mã nguồn mở được đề cập ở đó không xuất hiện trong danh sách này:

Một cái khác từ App Store


Có một cái nhìn tổng quan về Slate và những gì nó có thể làm trong bài đăng trên blog này có tiêu đề: Sử dụng Slate: Trình quản lý cửa sổ của hacker cho máy Mac
slm

Tôi sử dụng Spectre mình. Nó có một vấn đề với một ứng dụng cụ thể. Lệnh hoàn tác dường như không hoạt động trên các cửa sổ Firefox. Nó dường như không có nhiều tính năng như Slate.
SilverWolf - Phục hồi Monica


2

Dưới đây là một Applescript sẽ xếp tất cả các cửa sổ đang mở trong ứng dụng ngoài cùng. Thêm ~/Library/Scriptsvà gọi từ menu Applescript trong thanh menu. Thêm muối để nếm (và miễn phí).

--tile windows of frontmost applications in a grid
--this script is useful for
--multiple window chatting
--working side by side of several windows of the same app

--make need to make it as a stay open application later
--for now assume that it is opened and closed per invokation

property horizontalSpacing : 10 -- sets the horizontal spacing between windows
property verticalSpacing : 10 -- sets the vertical spacing between windows
property maxRows : 2
property maxCols : 2

on run {}
    local a
    set userscreen to my getUserScreen()

    --display dialog (getFrntApp() as string)
    try
        set applist to getFrntApp()
        if length of applist = 0 then
            return
        end if
        set a to item 1 of getFrntApp()
    on error the error_message number the error_number
        display dialog "Error: " & the error_number & ". " & the error_message buttons {"OK"} default button 1
    end try

    try
        tileScriptable(a, userscreen)
    on error the error_message number the error_number
        --display dialog "Error: " & the error_number & ". " & the error_message buttons {"OK"} default button 1
        try
            tileUnscriptable(a, userscreen)
        on error the error_message number the error_number
            display dialog "Error: " & the error_number & ". " & the error_message buttons {"OK"} default button 1
        end try
    end try

end run

on tileScriptable(a, screen)
    local i, c
    set i to 1
    tell application named a
        set theWindows to every window of application a whose visible is true and floating is false and ¬
            modal is false -- and miniaturized is false
        set c to count theWindows
        if c = 0 then
            return
        end if
        set tiles to calTileBounds(c, screen, 1)
        repeat with theWindow in theWindows
            my tileScriptableWindow(a, theWindow, item i of tiles)
            set i to i + 1
        end repeat
    end tell
end tileScriptable

on tileUnscriptable(a, screeninfo)
    -- unscriptable app
    local i, c
    set i to 1
    tell application "System Events"
        set theWindows to (every window of application process a)
        --set theWindows to my filterUnscriptableInvisible(theWindows)

        set c to count theWindows

        if c = 0 then
            return
        end if

        --display dialog screeninfo as string giving up after 5
        set tiles to my calTileBounds(c, screeninfo, 1)
        repeat with theWindow in theWindows
            --display dialog (class of visible of theWindow)
            my tileUnScriptableWindow(a, theWindow, item i of tiles)
            set i to i + 1
        end repeat

    end tell
end tileUnscriptable

on filterUnscriptableInvisible(ws)
    -- filter out from ws windows that are docked    
    set newws to {}
    set docklist to getNamesDocked()
    --display dialog (docklist as string)
    repeat with theWindow in ws
        if name of theWindow is not in docklist then
            set end of newws to theWindow
        end if
    end repeat

    --display dialog (count newws)
    return newws
end filterUnscriptableInvisible

on getNamesDocked()
    tell application "System Events" to tell process "Dock"'s list 1
        set l to name of UI elements whose subrole is "AXMinimizedWindowDockItem"
    end tell

    return l
end getNamesDocked

on tileScriptableWindow(a, w, bound)
    tell application a
        set bounds of w to bound
    end tell
end tileScriptableWindow

on tileUnScriptableWindow(a, w, bound)
    tell application "System Events"
        --display dialog (count position of w)
        set AppleScript's text item delimiters to " "

        set position of w to {(item 1 of bound), (item 2 of bound)}

        -- why the -5?
        set size of w to {(item 3 of bound) - (item 1 of bound) - 5, ¬
            (item 4 of bound) - (item 2 of bound) - 5}
        --display dialog (count properties of w)
    end tell
end tileUnScriptableWindow

on calTileBounds(nWindows, screen, direction)
    -- return a list of lists of window bounds
    -- a simple tile algo that tiles along direction (current only 1=horizontal)

    local nrows, nColumns, irow, icolumn, nSpacingWidth, nSpacingHeight, nWindowWidth, nWindowHeight
    set {x0, y0, availScreenWidth, availScreenHeight} to screen
    set ret to {}

    set nrows to (nWindows div maxCols)
    if (nWindows mod maxCols) ≠ 0 then
        set nrows to nrows + 1
    end if

    if nrows < maxRows then
        set nSpacingHeight to (nrows - 1) * verticalSpacing
        set nWindowHeight to (availScreenHeight - nSpacingHeight) / nrows
    else
        set nSpacingHeight to (maxRows - 1) * verticalSpacing
        set nWindowHeight to (availScreenHeight - nSpacingHeight) / maxRows
    end if

    repeat with irow from 0 to nrows - 1
        if nrows ≤ maxRows and irow = nrows - 1 then
            set nColumns to nWindows - irow * maxCols
        else
            set nColumns to maxCols
        end if
        set nSpacingWidth to (nColumns - 1) * horizontalSpacing
        set nWindowWidth to (availScreenWidth - nSpacingWidth) / nColumns
        set nTop to y0 + (irow mod maxRows) * (verticalSpacing + nWindowHeight)
        --display dialog "Top: " & nTop buttons {"OK"} default button 1
        repeat with icolumn from 0 to nColumns - 1
            set nLeft to x0 + (icolumn) * (horizontalSpacing + nWindowWidth)
            set itile to {¬
                nLeft, ¬
                nTop, ¬
                nLeft + nWindowWidth, ¬
                nTop + nWindowHeight}
            set end of ret to itile
            --display dialog item 3 of itile as string
            --set itile to {x0 + (icolumn - 1) * wgrid, y0, wgrid, hgrid}
            --set item 3 of itile to ((item 1 of itile) + (item 3 of itile))
            --set item 4 of itile to ((item 2 of itile) + (item 4 of itile))
        end repeat
    end repeat

    return ret
end calTileBounds



on getFrntApp()
    tell application "System Events" to set frntProc to ¬
        name of every process whose frontmost is true and visible ≠ false
    return frntProc
end getFrntApp

on getUserScreen()
    -- size of the menubar
    tell application "System Events"
        set {menuBarWidth, menuBarHeight} to size of UI element 1 of application process "SystemUIServer"
        --display dialog "Menubar width: " & menubarWidth & ", height: " & menubarHeight
        set dockApp to (application process "Dock")
        set {dockWidth, dockHeight} to size of UI element 1 of dockApp
        --display dialog "Dock width: " & dockWidth & ", height: " & dockHeight
        set dockPos to position of UI element 1 of dockApp
        --display dialog "Dock x: " & (item 1 of dockPos) & ", y: " & (item 2 of dockPos)
    end tell

    -- size of the full screen
    (*
   {word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Width") as number, ¬
       word 3 of (do shell script "defaults read /Library/Preferences/com.apple.windowserver | grep -w Height") as number}
   *)
    tell application "Finder"
        set screenSize to bounds of window of desktop
        set screenWidth to item 3 of screenSize
        set screenHeight to item 4 of screenSize
    end tell
    --display dialog "Screen width: " & screenWidth & ", height: " & screenHeight

    -- by default, set the available screen size to the full screen size
    set availableWidth to screenWidth
    set availableHeight to screenHeight - menuBarHeight
    set availableX to 0
    set availableY to menuBarHeight

    --determine the userscreen origin and size

    -- case 0: hidden dock
    -- if (item 1 of dockPos < 0 or item 1 of dockPos ≥ screenHeight) then
    -- no need to change anything
    -- end if

    -- case 1: bottom dock
    if ((item 2 of dockPos) + dockHeight = screenHeight) then
        set availableHeight to availableHeight - dockHeight
    end if

    -- case 2: left dock
    if (item 1 of dockPos = 0) then
        set availableWidth to availableWidth - dockWidth
        set availableX to dockWidth
    end if

    -- case 3: right dock
    if ((item 1 of dockPos) + dockWidth = screenWidth) then
        set availableWidth to availableWidth - dockWidth
    end if

    return {availableX, availableY, availableWidth, availableHeight}
end getUserScreen

Nguồn: MacScripter qua Google


1

Từ những gì tôi đã thấy và nghe thấy, Cinch là một ứng dụng tuyệt vời để đưa việc quản lý cửa sổ Windows 7 lên Mac OS X.


Mặc dù vậy, việc quản lý cửa sổ của Windows 7 hầu như không tồn tại ngoài Aero Snap. * nix có nhiều tùy chọn hơn, mà những phần mềm này có khả năng bị ảnh hưởng.
Ehtesh Choudhury

1

Trước hết, nếu miễn phí là quan trọng đối với bạn, hãy lấy ShiftIt.

Nếu sự thuận tiện từ một con chuột là quan trọng đối với bạn, hãy lấy Cinch. Nó có trong Mac App Store.

Cuối cùng, nếu bạn có Macbook hoặc Magic Trackpad, hãy lấy JiTouch. Nó sẽ cho phép bạn chỉ định một cử chỉ cho nhiều, nhiều thứ; một trong số đó là toàn màn hình, nửa trái, nửa phải. Nghiêm túc kiểm tra xem nếu bạn thích cử chỉ dù chỉ một chút. Nó giống như có một con chuột với hơn 100 nút. JiTouch


0

Sao Thủy

Bạn cũng có thể xem MercuryMover, cung cấp cho bạn một loạt các công cụ di chuyển cửa sổ dưới một loạt ánh xạ bàn phím. Tôi đã từng sử dụng nó rất nhiều khi vật lộn với màn hình máy tính xách tay nhỏ và bạn có thể làm cho nó lật một cửa sổ ra cạnh màn hình, v.v. Nó ánh xạ gần nhất chức năng menu hệ thống 'di chuyển' mà bạn có trong Windows bình thường ' các cửa sổ'.



0

Theo như tôi hiểu bạn thắc mắc, bạn muốn dán cửa sổ vào cạnh màn hình, sao cho cạnh cửa sổ nằm trực tiếp trên cạnh màn hình. Điều này hiện có thể có trên macOS Sierra (10.12) nguyên bản.

Tất cả những gì bạn cần làm là di chuyển cửa sổ bạn muốn định vị (bằng cách nhấp và kéo phần trên cùng của cửa sổ) sang bên mà bạn muốn nó dính vào. Bạn cần phải làm điều này từ từ, nếu không nó sẽ không hoạt động. Sau khi bạn kéo cửa sổ sang cạnh, nó sẽ dính một lúc và đó là lúc bạn nên dừng lại.

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.