Est-ce que des gestionnaires de fenêtres me permettent d'aligner les fenêtres sur les côtés de l'écran?

21

Pouvez-vous recommander un gestionnaire de fenêtres pour Mac? Je voudrais avoir un raccourci clavier qui casserait une fenêtre à gauche ou à droite de mon écran.

citadelgrad
la source
4
Je ne pense pas que vous puissiez insérer ou sortir un gestionnaire de fenêtres sous OS X.
zneak
@mankoff Cette question a été posée il y a 6 mois. Votre question est une copie de celle-ci.
Kyle Cronin
@Kyle, la nouvelle question tente d'être une question plus générique. Celui-ci est spécifique à la capture gauche / droite. Il y a beaucoup de questions de fenêtrage spécifiques. Désolé, n'essayez pas de causer des problèmes avec votre bonne réponse +11 ici, essayez simplement de créer une référence unique pour toutes les questions WM.
@mankoff Je ne suis pas inquiet de ma réponse, je dis simplement que cette question ne doit pas être fermée comme un "double" d'une question plus récente.
Kyle Cronin
Je suis d'accord qu'il ne devrait pas être fermé, mais c'est toujours un doublon. Le temps n'a pas d'importance, ils sont chacun des doublons les uns des autres et doivent se référencer mutuellement. J'essayais juste de suivre le dernier paragraphe de cet article: blog.stackoverflow.com/2011/01/…

Réponses:

17

SizeUp est exactement ce dont vous avez besoin:

SizeUp vous permet de positionner rapidement une fenêtre pour remplir exactement la moitié de l'écran (écran partagé), un quart de l'écran (quadrant), plein écran ou centré via la barre de menus ou des raccourcis configurables à l'échelle du système (raccourcis clavier). Similaire à la fonctionnalité "fenêtres en mosaïque" disponible sur d'autres systèmes d'exploitation.

Kyle Cronin
la source
1
Il semble étrange qu'il n'y ait pas d'alternative gratuite, mais cela en valait le coût. Je n'utilise vraiment que "Plein écran" et "Moniteur suivant", mais ça vaut le coup.
Fishtoaster
@Fishtoaster La société qui fabrique SizeUp a également créé une version gratuite appelée TwoUp, mais elle a été interrompue
Kyle Cronin
1
Cette. SizeUp secoue mon monde au quotidien.
Matt
Cela a une tonne de grandes positions par défaut. Merci pour la suggestion.
citadelgrad
1
@citadelgrad: si cela a résolu votre problème, n'oubliez pas de cocher la marque √ à côté du message.
zneak
8

Divvy

Divvy est une petite application de barre de menus qui vous permet de redimensionner automatiquement n'importe quelle fenêtre active. Divviy divise virtuellement votre écran en une grille 6x6. Lorsqu'il est invoqué, Divvy fait apparaître un petit HUD au milieu de l'écran avec cette grille 6x6. En fonction de la partie de votre écran que vous souhaitez redimensionner votre fenêtre active, faites simplement glisser et sélectionnez ces carrés sur la palette et la fenêtre fait le reste. C'est si simple.

neoneye
la source
7

Après avoir testé SizeUp et Breeze, j'ai décidé que Breeze répondait le mieux à mes besoins. Les deux vous permettent de positionner les fenêtres à gauche, à droite ou en plein écran. La fonctionnalité qui l'a vendu pour moi était de définir une taille et une position par défaut pour une application et de lui attribuer une touche de raccourci.

citadelgrad
la source
Impressionnant. Merci d'avoir partagé ce que vous avez décidé. Pour 8 dollars a fière allure.
mkelley33
7

ShiftIt (version originale au lien interrompu) fait cela, et est gratuit et open source.

Edit: Le projet est maintenant sur GitHub , mais la dernière version date de novembre 2010.

Robert S Ciaccio
la source
1
C'est ce que j'allais dire. Fonctionne bien sur Snow Leopard. Prend également en charge les raccourcis clavier assignables.
Randy6T9
C'est cool qu'il soit open source, mais le fait qu'il nécessite X11 en fait un non pour moi
James McMahon
5

Moom

J'ai aussi entendu des gens en parler:

Passez-vous beaucoup de temps à déplacer et à agrandir les fenêtres pour mieux voir et travailler avec tout le contenu de votre Mac? Au lieu de faire ce travail vous-même, laissez Moom gérer la tâche pour vous.

claytron
la source
4

Si vous avez une souris magique ou un trackpad magique, BetterTouchTool est meilleur car vous pouvez définir des gestes spécifiques pour gérer les fenêtres. Comme un balayage à quatre doigts vers la gauche, vous pouvez redimensionner la fenêtre à gauche de 50% de l'écran.

MikhailT
la source
4

Moom est super. Vous pouvez aligner les fenêtres sur: plein écran, demi-écran, quart d'écran. Vous pouvez également redimensionner avec une grille. Il prend également en charge les raccourcis clavier personnalisés.

Capture d'écran de Moom

Peter Roe
la source
+1 pour inclure une image, car il est très utile pour avoir une idée de son fonctionnement.
Paul Wagland
3

J'utilise personnellement SizeUp et Divvy au quotidien. Si j'avais connu ShiftIt plus tôt, je n'aurais probablement pas payé SizeUp. Un autre à vérifier qui n'a pas encore été mentionné est BetterTouchTool , qui a beaucoup d'autres fonctionnalités, mais caché dans les options avancées est une fonctionnalité intéressante qu'ils appellent "Window Snapping" qui accroche la fenêtre à gauche ou à droite de la l'écran lorsque vous le faites glisser sur le côté. N'a pas de fonctionnalité de raccourci clavier incluse, mais c'est un bon complément à SizeUp et Divvy.

David Hollman
la source
1
BetterTouchTool est ce que j'utilise maintenant pour cela, c'est l'une des meilleures applications gratuites sur le marché.
Robert S Ciaccio
3

J'ai trouvé ici à partir d'une question hors sujet sur Stack Overflow :

Il y avait deux gestionnaires Open Source mentionnés ici qui ne figuraient pas sur cette liste:

Un autre de l'App Store

Frobbit
la source
Il y a un bon aperçu de Slate et de ce qu'il peut faire dans ce billet de blog intitulé: Utilisation de Slate: le gestionnaire de fenêtres d'un
pirate
J'utilise Spectacle moi-même. Il a un problème avec une application spécifique - la commande d'annulation ne semble pas fonctionner sur les fenêtres de Firefox. Il ne semble pas non plus avoir autant de fonctionnalités que Slate.
SilverWolf
2

Vous pouvez également essayer Slate qui est gratuit et open source.

Vous pourriez également vouloir lire cet article à ce sujet.

Huy
la source
2

Voici un Applescript qui tuile toutes les fenêtres ouvertes dans l'application la plus en avant. Ajoutez ~/Library/Scriptset appelez à partir du menu Applescript dans la barre de menus. Ajouter du sel au goût (et gratuitement).

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

Source: MacScripter via Google

Philip Regan
la source
1

D'après ce que j'ai vu et entendu, Cinch est une excellente application pour apporter la gestion des fenêtres de Windows 7 à Mac OS X.

daviesgeek
la source
Cependant, la gestion des fenêtres de Windows 7 est pratiquement inexistante, à l'exception d'Aero Snap. * nix a beaucoup plus d'options, dont ces logiciels sont probablement influencés par.
Ehtesh Choudhury
1

Tout d'abord, si la gratuité est importante pour vous, obtenez ShiftIt.

Si la commodité d'une souris est importante pour vous, procurez-vous Cinch. C'est dans le Mac App Store.

Enfin, si vous avez un Macbook ou un Magic Trackpad, procurez-vous JiTouch. Cela vous permettra d'assigner un geste à beaucoup, beaucoup de choses; dont l'un est plein écran, mi-gauche, mi-droite. Vérifiez sérieusement si vous aimez les gestes, même un peu. C'est comme avoir une souris avec plus de 100 boutons. JiTouch

Randy6T9
la source
0

MercuryMover

Vous pouvez également consulter MercuryMover, qui vous offre une gamme d'outils de déplacement de fenêtres sous une série de mappages de clavier. J'avais l'habitude de l'utiliser beaucoup lorsque je me débattais avec un petit écran d'ordinateur portable, et vous pouvez le faire basculer une fenêtre vers le bord d'un écran, etc. les fenêtres'.

robsoft
la source
0

Pour autant que je comprends votre question, vous voulez coller la fenêtre au bord de l'écran, de sorte que le côté de la fenêtre soit directement sur le bord de l'écran. Ceci est désormais possible sur macOS Sierra (10.12) en natif.

Tout ce que vous avez à faire est de déplacer la fenêtre que vous souhaitez positionner (en cliquant et en faisant glisser le haut de la fenêtre) vers le côté sur lequel vous souhaitez qu'elle reste. Vous devez le faire lentement, sinon cela ne fonctionnera pas. Après avoir fait glisser la fenêtre sur le bord, elle restera un moment et c'est à ce moment que vous devriez vous arrêter.

Arc squelette
la source