Apakah ada manajer jendela yang mengizinkan saya untuk memasang jendela ke sisi tampilan?


21

Bisakah Anda merekomendasikan Window Manager untuk Mac? Saya ingin memiliki pintasan keyboard yang akan mengambil jendela ke setengah kiri atau kanan layar saya.


4
Saya tidak berpikir Anda dapat masuk atau keluar manajer jendela di bawah OS X.
zneak

@mankoff Pertanyaan ini ditanyakan 6 bulan lalu. Pertanyaan Anda adalah duplikat dari pertanyaan ini.
Kyle Cronin

@Kyle pertanyaan baru berusaha menjadi pertanyaan yang lebih umum. Yang ini khusus untuk memotret kiri / kanan. Ada banyak pertanyaan windowing spesifik. Maaf, tidak mencoba menimbulkan masalah dengan jawaban +11 Anda yang baik di sini, hanya mencoba membuat satu tempat referensi untuk semua pertanyaan WM.

@mankoff Saya tidak khawatir dengan jawaban saya, saya hanya mengatakan bahwa pertanyaan ini tidak boleh ditutup sebagai "duplikat" dari pertanyaan yang lebih baru.
Kyle Cronin

Saya setuju itu seharusnya tidak benar-benar ditutup, tetapi masih duplikat. Waktu tidak relevan, mereka adalah duplikat satu sama lain dan harus saling referensi. Aku hanya mencoba untuk mengikuti paragraf terakhir dari posting ini: blog.stackoverflow.com/2011/01/...

Jawaban:


17

SizeUp tepat seperti yang Anda butuhkan:

SizeUp memungkinkan Anda untuk dengan cepat memposisikan jendela untuk mengisi persis setengah layar (layar terbagi), seperempat layar (kuadran), layar penuh, atau terpusat melalui bilah menu atau pintasan lebar sistem (hotkeys) yang dapat dikonfigurasi. Mirip dengan fungsionalitas "ubin jendela" yang tersedia di sistem operasi lain.


1
Tampaknya aneh bahwa tidak ada alternatif gratis, tetapi ini sepadan dengan biayanya. Saya benar-benar hanya menggunakan 'Layar Penuh' dan 'Monitor Selanjutnya', tetapi itu sepadan.
Fishtoaster

@Fishtoaster Perusahaan yang membuat SizeUp juga membuat versi gratis yang disebut TwoUp, tetapi sudah dihentikan
Kyle Cronin

1
Ini. SizeUp mengguncang duniaku setiap hari.
Matt

Ini memiliki banyak posisi default yang bagus. Terima kasih untuk sarannya.
citadelgrad

1
@citadelgrad: jika ini menyelesaikan masalah Anda, jangan lupa untuk memeriksa tanda √ di sebelah pos.
zneak

8

Bagian

Divvy adalah aplikasi menubar kecil yang memungkinkan Anda mengubah ukuran jendela aktif secara otomatis. Divviy secara virtual membagi layar Anda menjadi kisi 6x6. Ketika dipanggil, Divvy menampilkan HUD kecil di tengah layar dengan kisi 6x6 ini. Bergantung pada bagian mana dari layar Anda yang ingin Anda ubah ukurannya pada jendela aktif, cukup seret dan pilih kotak pada HUD dan jendela akan melakukan sisanya. Sesederhana itu.


7

Setelah menguji SizeUp dan Breeze, saya memutuskan bahwa Breeze paling sesuai dengan kebutuhan saya. Keduanya memungkinkan Anda untuk memposisikan windows di sebelah kiri, kanan, atau Fullscreen. Fitur yang menjualnya untuk saya adalah menetapkan ukuran & posisi default untuk aplikasi dan menetapkannya sebagai tombol pintasan.


Luar biasa. Terima kasih telah membagikan apa yang Anda putuskan. Untuk 8 dolar tampak hebat.
mkelley33

7

ShiftIt (versi asli di tautan dihentikan) melakukan ini, dan gratis dan open source.

Sunting: Proyek ini sekarang di GitHub , namun rilis terakhir adalah pada bulan November 2010.


1
Inilah yang akan saya katakan. Bekerja dengan baik di Snow Leopard. Mendukung pintasan keyboard yang dapat ditentukan juga.
Randy6T9

Itu keren bahwa itu adalah open source, tetapi fakta bahwa itu membutuhkan X11 membuatnya tidak cocok untuk saya
James McMahon

5

Moom

Saya pernah mendengar beberapa orang membicarakan ini juga:

Apakah Anda menghabiskan banyak waktu untuk memindahkan dan memperbesar jendela, sehingga Anda dapat melihat dan bekerja dengan lebih baik dengan semua konten di Mac Anda? Alih-alih melakukan itu bekerja sendiri, biarkan Moom menangani tugas untuk Anda.


4

Jika Anda memiliki mouse ajaib atau trackpad ajaib, BetterTouchTool lebih baik karena Anda dapat mengatur gerakan tertentu untuk mengelola windows. Seperti usapan jari empat jari bisa untuk mengubah ukuran jendela ke kiri 50% dari layar.


4

Moom luar biasa. Anda dapat mengambil windows ke: layar penuh, setengah layar, seperempat layar Anda juga dapat mengubah ukuran dengan kisi. Ini mendukung pintasan keyboard khusus juga.

Tangkapan layar Moom


+1 untuk menyertakan gambar, karena itu cukup berguna untuk mendapatkan ide tentang cara kerjanya.
Paul Wagland

3

Saya pribadi menggunakan SizeUp dan Divvy setiap hari. Jika saya tahu tentang ShiftIt sebelumnya, saya mungkin tidak akan membayar untuk SizeUp. Satu lagi untuk memeriksa yang belum disebutkan adalah BetterTouchTool , yang memiliki banyak fitur lain, tetapi tersembunyi dalam opsi lanjutan adalah fitur bagus yang mereka sebut "Window Snapping" yang menjentikkan jendela ke kiri atau ke kanan layar ketika Anda menyeretnya ke samping. Tidak memiliki fungsi pintasan keyboard yang disertakan, tetapi ini merupakan suplemen yang bagus untuk SizeUp dan Divvy.


1
BetterTouchTool adalah yang sekarang saya gunakan untuk ini, ini adalah salah satu aplikasi gratis terbaik di luar sana.
Robert S Ciaccio

3

Saya menemukan di sini dari pertanyaan di luar topik pada Stack Overflow :

Ada dua manajer Open Source yang disebutkan di sana yang tidak muncul dalam daftar ini:

Lain dari App Store


Ada ikhtisar yang bagus tentang Slate dan apa yang dapat dilakukannya di posting blog ini berjudul: Menggunakan Slate: Seorang Window Manager untuk Mac Hacker
slm

Saya menggunakan Spectacle sendiri. Itu memang memiliki satu masalah dengan aplikasi tertentu — perintah undo tampaknya tidak berfungsi di windows Firefox. Tampaknya juga tidak memiliki banyak fitur seperti Slate.
SilverWolf

2

Anda juga dapat mencoba Slate yang gratis dan open source.

Anda mungkin juga ingin membaca artikel ini tentang itu.


2

Ini adalah Applescript yang akan memasang semua jendela yang terbuka di aplikasi paling depan. Tambahkan ke ~/Library/Scriptsdan panggil dari menu Applescript di bilah menu. Tambahkan garam secukupnya (dan gratis).

--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

Sumber: MacScripter via Google


1

Dari apa yang saya lihat dan dengar, Cinch adalah aplikasi hebat untuk membawa manajemen jendela Windows 7 ke Mac OS X.


Pengelolaan jendela pada Windows 7 sebagian besar tidak ada selain dari Aero Snap. * nix memiliki lebih banyak opsi, yang kemungkinan dipengaruhi oleh perangkat lunak ini.
Ehtesh Choudhury

1

Pertama-tama, jika gratis penting bagi Anda, dapatkan ShiftIt.

Jika kenyamanan dari mouse penting bagi Anda, dapatkan Cinch. Ada di Mac App Store.

Akhirnya jika Anda memiliki Macbook atau Magic Trackpad, dapatkan JiTouch. Ini akan memungkinkan Anda untuk memberi isyarat pada banyak, banyak hal; salah satunya adalah layar penuh, setengah kiri, setengah kanan. Serius memeriksanya jika Anda suka sedikit gerakan. Ini seperti memiliki mouse dengan 100 tombol. JiTouch


0

MercuryMover

Anda mungkin juga melihat MercuryMover, yang memberi Anda berbagai alat pemindah jendela di bawah serangkaian pemetaan keyboard. Saya sering menggunakan ini ketika berjuang dengan layar laptop kecil, dan Anda bisa membuatnya untuk membalik jendela ke tepi layar dll. Ini paling dekat memetakan fungsi menu sistem 'bergerak' yang Anda dapatkan di Windows normal ' windows '.



0

Sejauh yang saya mengerti pertanyaan Anda, Anda ingin menempelkan jendela ke tepi layar, sehingga sisi jendela langsung di tepi layar. Ini sekarang dimungkinkan pada macOS Sierra (10.12) secara asli.

Yang perlu Anda lakukan adalah memindahkan jendela yang ingin Anda posisikan (dengan mengklik dan menyeret bagian atas jendela) ke sisi yang Anda inginkan. Anda perlu melakukan ini dengan lambat, atau itu tidak akan berhasil. Setelah Anda menyeret jendela ke tepi, itu akan menempel sebentar dan saat itulah Anda harus berhenti.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.