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.
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.
Réponses:
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.
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.
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.
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.
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.
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.
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.
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
Voici un Applescript qui tuile toutes les fenêtres ouvertes dans l'application la plus en avant. Ajoutez ~/Library/Scripts
et 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
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.
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
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'.
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.