Erlauben mir Fenstermanager, Fenster an den Seiten des Displays einzurasten?


21

Kannst du einen Window Manager für den Mac empfehlen? Ich hätte gerne eine Tastenkombination, die ein Fenster zur linken oder rechten Hälfte meines Bildschirms einrastet.


4
Ich glaube nicht, dass Sie unter OS X einen Fenstermanager
ein-

@mankoff Diese Frage wurde vor 6 Monaten gestellt. Ihre Frage ist ein Duplikat davon.
Kyle Cronin

@ Kyle die neue Frage versucht, eine allgemeinere Frage zu sein. Dieser ist spezifisch für Links- / Rechtsschnappen. Es gibt viele spezifische Fensterfragen. Entschuldige, versuche nicht, Probleme mit deiner guten +11 Antwort hier zu verursachen, sondern versuche nur, einen einzigen Bezugspunkt für alle WM-Fragen zu schaffen.

@mankoff Ich mache mir keine Sorgen um meine Antwort, ich sage nur, dass diese Frage nicht als "Duplikat" einer neueren Frage geschlossen werden sollte.
Kyle Cronin

Ich bin damit einverstanden, dass es eigentlich nicht geschlossen werden sollte, aber es ist immer noch ein Duplikat. Zeit ist irrelevant, sie sind jeweils Duplikate voneinander und sollten sich gegenseitig referenzieren. Ich habe nur versucht, dem letzten Absatz dieses Beitrags zu folgen: blog.stackoverflow.com/2011/01/…

Antworten:


17

SizeUp ist genau das, was Sie brauchen:

Mit SizeUp können Sie ein Fenster schnell so positionieren, dass es genau die Hälfte des Bildschirms (Splitscreen), ein Viertel des Bildschirms (Quadrant), den gesamten Bildschirm oder über die Menüleiste oder über konfigurierbare systemweite Verknüpfungen (Hotkeys) zentriert ausfüllt. Ähnlich wie bei "gekachelten Fenstern", die unter anderen Betriebssystemen verfügbar sind.


1
Es scheint seltsam, dass es keine kostenlose Alternative gibt, aber das hat sich gelohnt. Ich benutze eigentlich nur "Vollbild" und "Nächster Monitor", aber es lohnt sich.
Fishtoaster

@Fishtoaster Die Firma, die SizeUp herstellt, hat auch eine kostenlose Version namens TwoUp erstellt, die jedoch eingestellt wurde
Kyle Cronin

1
Dies. SizeUp erschüttert meine Welt täglich.
Matt

Dies hat eine Menge großartiger Standardpositionen. Danke für den Vorschlag.
Citadelgrad

1
@citadelgrad: Wenn dies Ihr Problem gelöst hat, vergessen Sie nicht, das Häkchen √ neben dem Beitrag zu markieren.
Zneak

8

Divvy

Divvy ist eine kleine Menüleisten-App, mit der Sie die Größe jedes aktiven Fensters automatisch ändern können. Divviy unterteilt Ihren Bildschirm virtuell in ein 6x6-Raster. Beim Aufrufen zeigt Divvy mit diesem 6x6-Raster ein kleines HUD in der Mitte des Bildschirms an. Abhängig davon, welchen Teil Ihres Bildschirms Sie in der Größe Ihres aktiven Fensters verändern möchten, ziehen Sie einfach diese Quadrate auf die Schwebepalette und das Fenster erledigt den Rest. So einfach ist das.


7

Nach dem Testen von SizeUp und Breeze habe ich festgestellt, dass Breeze meinen Anforderungen am besten entspricht. Mit beiden können Sie Fenster links, rechts oder im Vollbildmodus positionieren. Die Funktion, die es für mich verkauft hat, war das Festlegen einer Standardgröße und -position für eine Anwendung und das Zuweisen einer Tastenkombination.


Genial. Vielen Dank, dass Sie uns Ihre Entscheidung mitgeteilt haben. Für 8 Dollar sieht toll aus.
mkelley33

7

ShiftIt (Originalversion bei eingestelltem Link) tut dies und ist kostenlos und Open Source.

Bearbeiten: Das Projekt ist jetzt auf GitHub , die letzte Veröffentlichung war jedoch im November 2010.


1
Das wollte ich sagen. Funktioniert gut auf Snow Leopard. Unterstützt auch zuweisbare Tastaturkürzel.
Randy6T9

Es ist cool, dass es Open Source ist, aber die Tatsache, dass es X11 erfordert, macht es für mich zu einem No Go
James McMahon

5

Moom

Ich habe gehört, dass einige Leute dies auch ausreden:

Verbringen Sie viel Zeit mit dem Verschieben und Zoomen von Fenstern, damit Sie den gesamten Inhalt auf Ihrem Mac besser sehen und bearbeiten können? Anstatt dies selbst zu erledigen, überlasse es Moom, die Aufgabe für dich zu erledigen.


4

Wenn Sie eine magische Maus oder ein magisches Trackpad haben, ist BetterTouchTool besser, da Sie bestimmte Gesten zum Verwalten der Fenster festlegen können. Wie bei einem Wischen mit vier Fingern nach links kann die Größe des Fensters auf 50% des Bildschirms nach links geändert werden.


4

Moom ist großartig. Sie können Fenster einrasten lassen auf: Vollbild, Halbbild, Viertelbild. Sie können die Größe auch mit einem Raster ändern. Es werden auch benutzerdefinierte Tastaturkürzel unterstützt.

Moom-Screenshot


+1 für das Einfügen eines Bildes, da dies sehr nützlich ist, um eine Vorstellung davon zu bekommen, wie es funktioniert.
Paul Wagland

3

Ich persönlich benutze SizeUp und Divvy täglich. Wenn ich früher von ShiftIt gewusst hätte, hätte ich wahrscheinlich nicht für SizeUp bezahlt. Ein weiteres Feature , das noch nicht erwähnt wurde, ist BetterTouchTool , das viele andere Funktionen bietet. In den erweiterten Optionen ist jedoch eine nette Funktion namens "Fensterschnappen" versteckt, die das Fenster links oder rechts vom Fenster ausrichtet Bildschirm, wenn Sie ihn zur Seite ziehen. Enthält keine Tastaturkürzel, ist aber eine nette Ergänzung zu SizeUp und Divvy.


1
BetterTouchTool ist das, was ich jetzt dafür benutze, es ist eine der besten kostenlosen Apps, die es gibt.
Robert S Ciaccio

3

Ich fand hier aus einer Off-Topic-Frage zu Stack Overflow :

Dort wurden zwei Open Source-Manager erwähnt, die in dieser Liste nicht aufgeführt waren:

Ein weiterer aus dem App Store


Es gibt einen schönen Überblick über Slate und was es tun kann in diesem Blog-Beitrag mit dem Titel: Verwenden von Slate: Window Manager eines Hackers für Macs
slm

Ich benutze Spectacle selbst. Es gibt ein Problem mit einer bestimmten Anwendung: Der Befehl zum Rückgängigmachen scheint in Firefox-Fenstern nicht zu funktionieren. Es scheint auch nicht so viele Funktionen wie Slate zu haben.
SilverWolf - Setzen Sie Monica

2

Sie können auch Slate ausprobieren, das kostenlos und Open Source ist.

Vielleicht möchten Sie auch diesen Artikel darüber lesen .


2

Hier ist ein Applescript, das alle offenen Fenster in der vordersten Anwendung kachelt. Hinzufügen ~/Library/Scriptsund Aufrufen aus dem Applescript-Menü in der Menüleiste. Fügen Sie Salz hinzu, um zu schmecken (und geben Sie frei).

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

Quelle: MacScripter über Google


1

Nach allem, was ich gesehen und gehört habe, ist Cinch eine großartige Anwendung, um die Fensterverwaltung von Windows 7 auf Mac OS X zu bringen.


Abgesehen von Aero Snap ist die Fensterverwaltung von Windows 7 jedoch größtenteils nicht vorhanden. * nix hat viel mehr Optionen, von denen diese Software wahrscheinlich beeinflusst wird.
Ehtesh Choudhury

1

Erstens, wenn Ihnen das Freie wichtig ist, holen Sie sich ShiftIt.

Wenn Ihnen die Bequemlichkeit einer Maus wichtig ist, holen Sie sich Cinch. Es ist im Mac App Store.

Wenn Sie ein Macbook oder ein Magic Trackpad besitzen, holen Sie sich JiTouch. Sie können damit vielen Dingen eine Geste zuweisen. Eines davon ist Vollbild, halb links, halb rechts. Probiere es ernsthaft aus, wenn du Gesten auch nur ein bisschen magst. Es ist wie eine Maus mit mehr als 100 Tasten. JiTouch


0

MercuryMover

Sie können sich auch MercuryMover ansehen, das Ihnen eine Reihe von Werkzeugen zum Verschieben von Fenstern unter einer Reihe von Tastaturzuordnungen bietet. Früher habe ich dies häufig verwendet, wenn ich mit einem kleinen Laptop-Bildschirm zu kämpfen hatte, und Sie können damit ein Fenster an den Rand eines Bildschirms usw. klappen. Dadurch wird die Funktionalität des Systemmenüs "Verschieben", die Sie unter normalen Windows-Betriebssystemen erhalten, am ehesten abgebildet. Windows '.



0

Soweit ich Ihre Frage verstehe, möchten Sie das Fenster an den Rand des Bildschirms kleben , sodass sich die Seite des Fensters direkt am Rand des Bildschirms befindet. Dies ist jetzt auf MacOS Sierra (10.12) von Haus aus möglich.

Alles, was Sie tun müssen, ist, das zu positionierende Fenster (durch Klicken und Ziehen am oberen Rand des Fensters) an die Seite zu verschieben, an der es bleiben soll. Sie müssen dies langsam tun, sonst funktioniert es nicht. Nachdem Sie das Fenster an den Rand gezogen haben, bleibt es eine Weile hängen. Dann sollten Sie anhalten.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.