Herhangi bir pencere yöneticisi pencereleri ekranın kenarlarına geçirmeme izin veriyor mu?


21

Mac için bir Pencere Yöneticisi önerebilir misiniz? Bir pencereyi ekranımın soluna veya sağına yaslayacak bir klavye kısayoluna sahip olmak istiyorum.


4
OS X altında bir pencere yöneticisine
girip çıkabileceğinizi sanmıyorum

@mankoff Bu soru 6 ay önce soruldu. Sorunuz bunun bir kopyası.
Kyle Cronin

@Kyle yeni soru daha genel bir soru olmaya çalışıyor. Bu, sola / sağa yaslanmaya özgüdür. Bir sürü özel pencere sorusu var. Maalesef, burada iyi +11 yanıtınızla ilgili sorunlara neden olmamaya çalışmayın, tüm WM soruları için tek bir referans noktası oluşturmaya çalışıyorum.

@ mankoff Cevabım için endişelenmiyorum, sadece bu sorunun yeni bir sorunun "kopyası" olarak kapatılmaması gerektiğini söylüyorum.
Kyle Cronin

Aslında kapatılmaması gerektiğine katılıyorum, ama yine de bir kopyası. Zaman önemli değil, her biri birbirinin kopyası ve birbirleriyle ilgili olmalı. Sadece bu yazının

Yanıtlar:


17

SizeUp tam olarak ihtiyacınız olan şey:

SizeUp bir pencereyi ekranın tam yarısını (ekran ekranı), ekranın çeyreğini (çeyrek), tam ekranı ya da menü çubuğu ya da yapılandırılabilir sistem çapında kısayollar (kısayol tuşları) merkezlenecek şekilde tam olarak dolduracak şekilde konumlandırmanızı sağlar. Diğer işletim sistemlerinde bulunan "döşeme pencereleri" işlevine benzer.


1
Özgür bir alternatif olmaması garip görünüyor, ancak bu maliyete değdi. Gerçekten sadece 'Tam Ekran' ve 'Next Monitor' kullanıyorum, ancak buna değer.
Fishtoaster

@Fishtoaster SizeUp yapan şirket ayrıca TwoUp adlı ücretsiz bir sürüm yaptı, ancak üretime son verildi
Kyle Cronin

1
Bu. SizeUp günlük olarak dünyamı sallıyor.
Matt,

Bunun bir ton büyük varsayılan konumu var. Önerin için teşekkürler.
citadelgrad

1
@citadelgrad: Eğer bu probleminizi çözdüyse, yazının yanındaki √ işaretini kontrol etmeyi unutmayın.
zneak

8

bölmek

Divvy otomatik olarak herhangi bir aktif pencereyi yeniden boyutlandırmak için izin veren küçük bir menü çubuğu uygulaması. Divviy, ekranınızı neredeyse 6x6 ızgaraya böler. Çağrıldığında Divvy, bu 6x6 ızgarayla ekranın ortasına bir miktar HUD getiriyor. Ekranınızın hangi bölümünün aktif pencerenizi yeniden boyutlandırmak istediğinize bağlı olarak, HUD üzerindeki kareleri sürükleyip seçmeniz yeterlidir, gerisini pencere kapatır. Bu kadar basit.


7

SizeUp ve Breeze test ettikten sonra, ben karar verdik Breeze ihtiyaçlarımı en iyi uyan. Her ikisi de pencereleri sola, sağa veya Tam Ekrana yerleştirmenize izin verir. Benim için satan özellik, bir uygulama için varsayılan boyut ve konum ayarlamak ve kısayol tuşu atamaktı.


Muhteşem. Kararını verdiğin şeyi paylaştığın için teşekkürler. 8 dolar için harika görünüyor.
mkelley33

7

ShiftIt (bağlantıdaki orijinal sürüm üretilmiyor) bunu yapıyor ve ücretsiz ve açık kaynak.

Düzenleme: Proje şimdi GitHub'da , ancak son sürüm Kasım 2010'da yapıldı.


1
Ben de öyle diyecektim. Kar leoparı üzerinde iyi çalışıyor. Aynı zamanda atanabilir klavye kısayollarını da destekler.
Randy6T9

Açık kaynak olması harika bir şey, ama X11'i gerektirmesi gerçeği benim için hiçbir işe yaramaz hale getiriyor
James McMahon

5

Moom

Bazılarının da bunu konuştuğunu duydum:

Pencereleri taşımak ve yakınlaştırmak için çok zaman harcıyor musunuz, böylece Mac'inizdeki tüm içeriği daha iyi görüp onlarla çalışabilirsiniz. Bu işi kendiniz yapmak yerine, Moom'un görevi yerine getirmesine izin verin.


4

Sihirli bir fareniz veya sihirli bir trackpad'iniz varsa, BetterTouchTool , pencereleri yönetmek için belirli hareketleri ayarlayabileceğinizden daha iyidir. Dört parmak gibi bir sola kaydırın, pencereyi ekranın% 50 soluna yeniden boyutlandırmak olabilir.


4

Moom harika. Pencereleri şu noktalara açabilirsiniz: tam ekran, yarım ekran, çeyrek ekran. Ayrıca bir ızgarayla yeniden boyutlandırabilirsiniz. Özel klavye kısayollarını da destekler.

Moom ekran görüntüsü


Bir resmi dahil etmek için +1, çünkü nasıl çalıştığı hakkında bir fikir edinmek için oldukça yararlı.
Paul Wagland

3

Kişisel olarak SizeUp ve Divvy'i günlük olarak kullanıyorum. ShiftIt hakkında daha önce bilseydim, muhtemelen SizeUp için para ödemezdim. Henüz söylenmemiş olan bir başka kontrol seçeneği daha var: BetterTouchTool , diğer birçok özelliğe sahip, ancak gelişmiş seçeneklerde gizlenmiş olan pencerenin soluna veya sağına oturan "Pencere Yapışması" olarak adlandırdıkları hoş bir özellik. tarafına sürüklediğinizde ekran. Klavye kısayol işlevi dahil değil, ancak SizeUp ve Divvy için güzel bir ekidir.


1
BetterTouchTool, şimdi bunun için kullandığım şey, buradaki en iyi ücretsiz uygulamalardan biri.
Robert S Ciaccio

3

Yığın Taşması ile ilgili kapalı bir soru sorusunu burada buldum :

Bu listede bulunmayan iki Açık Kaynak yöneticisi vardı:

App Store'dan bir başkası


Slate'e ve bu blog yazısında neler yapabileceğine dair güzel bir genel bakış var: Slate'i Kullanma: Mac'ler için Hacker'ın bir Pencere Yöneticisi
slm

Spectacle'ı kendim kullanırım. Belirli bir uygulamayla ilgili bir sorunu var; geri alma komutu Firefox pencerelerinde çalışmıyor gibi görünüyor. Ayrıca Slate kadar çok özelliğe sahip görünmüyor.
SilverWolf - Monica’yı

2

Serbest ve açık kaynak kodlu Slate'i de deneyebilirsiniz .

Bununla ilgili bu makaleyi de okumak isteyebilirsiniz .


2

İşte en açık uygulamadaki tüm açık pencereleri döşeyecek bir Applescript. ~/Library/ScriptsMenü çubuğundaki Applescript menüsünden ekleyin ve arayın. Tat vermek için tuz ekleyin (ve ücretsiz).

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

Kaynak: Google üzerinden MacScripter


1

Gördüğüm ve duyduğuma göre Cinch , Windows 7'nin pencere yönetimini Mac OS X'e getirmek için harika bir uygulama.


Yine de, Windows 7'nin pencere yönetimi çoğunlukla Aero Snap dışında mevcut değil. * nix, bu yazılım parçalarının muhtemelen etkileyeceği çok daha fazla seçeneğe sahiptir.
Ehtesh Choudhury,

1

Her şeyden önce, eğer ücretsiz sizin için önemliyse , ShiftIt.

Eğer bir fareden kolaylık sizin için önemliyse, Cinch'i edinin. Mac App Store'da.

Sonunda bir Macbook'unuz veya Magic Trackpad'iniz varsa, JiTouch'ı edinin. Çok, çok şey için bir jest atamanıza izin verecektir; bunlardan biri tam ekran, yarı sol, yarı sağ. Hareketleri biraz seviyorsanız ciddiye alın. 100+ düğmeli bir fareye sahip olmak gibidir. JiTouch


0

MercuryMover

Ayrıca size bir dizi klavye eşlemesi altında bir dizi pencere taşıma aracı sunan MercuryMover'a bakabilirsiniz. Küçük bir dizüstü bilgisayar ekranı ile uğraşırken bunu çok kullanırdım ve bir pencereyi ekranın kenarına vs. çevirmesini sağlayabilirsiniz. Bu, normal Windows'taki 'hareket' sistem menüsü işlevselliğini en yakından eşler. pencereler.



0

Soruyu anladığım kadarıyla , pencereyi ekranın kenarına yapıştırmak istersiniz , böylece pencerenin kenarı doğrudan ekranın kenarına tutturulur. Bu artık macOS Sierra'da (10.12) doğal olarak mümkün.

Yapmanız gereken tek şey, konumlandırmak istediğiniz pencereyi (pencerenin üst kısmına tıklayarak ve sürükleyerek) yapışmasını istediğiniz tarafa taşımak. Bunu yavaşça yapman gerekiyor, yoksa işe yaramaz. Pencereyi kenara doğru sürükledikten sonra, bir süre kalacak ve durmanız gereken zaman budur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.