Alcuni gestori di finestre mi consentono di agganciare le finestre ai lati del display?


21

Puoi consigliare un gestore di finestre per Mac? Vorrei avere una scorciatoia da tastiera che avrebbe fatto scattare una finestra nella metà sinistra o destra dello schermo.


4
Non credo che tu possa agganciare o uscire un gestore di finestre in OS X.
zneak,

@mankoff Questa domanda è stata posta 6 mesi fa. La tua domanda è un duplicato di questo.
Kyle Cronin,

@Kyle la nuova domanda sta tentando di essere una domanda più generica. Questo è specifico per scattare a sinistra / a destra. Ci sono molte domande specifiche sulle finestre. Siamo spiacenti, non provando a causare problemi con la tua buona risposta +11 qui, sto solo cercando di creare un unico punto di riferimento per tutte le domande di WM.

@mankoff Non sono preoccupato per la mia risposta, sto solo dicendo che questa domanda non dovrebbe essere chiusa come un "duplicato" di una nuova domanda.
Kyle Cronin,

Sono d'accordo che in realtà non dovrebbe essere chiuso, ma è ancora un duplicato. Il tempo è irrilevante, sono entrambi duplicati l'uno dell'altro e dovrebbero fare riferimento l'un l'altro. Stavo solo cercando di seguire l'ultimo paragrafo di questo post: blog.stackoverflow.com/2011/01/…

Risposte:


17

SizeUp è esattamente ciò di cui hai bisogno:

SizeUp consente di posizionare rapidamente una finestra per riempire esattamente metà dello schermo (schermo diviso), un quarto dello schermo (quadrante), schermo intero o centrato tramite la barra dei menu o collegamenti configurabili a livello di sistema (tasti di scelta rapida). Simile alla funzionalità "finestre piastrellate" disponibile su altri sistemi operativi.


1
Sembra strano che non ci siano alternative gratuite, ma ne è valsa la pena. Uso solo "Schermo intero" e "Monitor successivo", ma ne vale la pena.
Fishtoaster

@Fishtoaster La società che produce SizeUp ha anche realizzato una versione gratuita chiamata TwoUp, ma è stata interrotta
Kyle Cronin

1
Questo. SizeUp scuote il mio mondo su base giornaliera.
Matt,

Questo ha moltissime posizioni di default. Grazie per il suggerimento
Citadelgrad,

1
@citadelgrad: se questo ha risolto il tuo problema, non dimenticare di controllare il segno √ accanto al post.
zneak,

8

divvy

Divvy è una piccola app della barra dei menu che ti consente di ridimensionare automaticamente qualsiasi finestra attiva. Divviy divide virtualmente lo schermo in una griglia 6x6. Quando viene invocato, Divvy fa apparire un po 'di HUD al centro dello schermo con questa griglia 6x6. A seconda della parte dello schermo che desideri ridimensionare la finestra attiva, trascina e seleziona quei quadrati sull'HUD e la finestra fa il resto. È così semplice.


7

Dopo aver testato SizeUp e Breeze, ho deciso che Breeze soddisfa al meglio le mie esigenze. Entrambi consentono di posizionare le finestre a sinistra, a destra o a schermo intero. La funzione che lo ha venduto per me è stata l'impostazione di una dimensione e posizione predefinite per un'applicazione e l'assegnazione di un tasto di scelta rapida.


Eccezionale. Grazie per aver condiviso ciò che hai deciso. Per 8 dollari sembra fantastico.
mkelley33,

7

ShiftIt (versione originale al link interrotta) fa questo, ed è gratuito e open source.

Modifica: il progetto è ora su GitHub , tuttavia l'ultima versione è stata nel novembre 2010.


1
Questo è quello che stavo per dire. Funziona bene su Snow Leopard. Supporta anche le scorciatoie da tastiera assegnabili.
Randy6T9,

È bello che sia open source, ma il fatto che richieda X11 lo rende un gioco da ragazzi
James McMahon

5

Moom

Ho sentito alcune persone parlare anche questo:

Trascorri molto tempo a spostare e ingrandire le finestre, in modo da poter vedere e lavorare meglio con tutti i contenuti del tuo Mac? Invece di farlo tu stesso, lascia che Moom gestisca il compito per te.


4

Se hai un mouse magico o un trackpad magico, BetterTouchTool è migliore in quanto puoi impostare gesti specifici per gestire le finestre. Come un colpo di quattro dita a sinistra può essere per ridimensionare la finestra a sinistra del 50% dello schermo.


4

Moom è fantastico. È possibile agganciare le finestre a: schermo intero, metà schermo, quarto schermo. Puoi anche ridimensionare con una griglia. Supporta anche le scorciatoie da tastiera personalizzate.

Schermata di Moom


+1 per includere un'immagine, dal momento che è abbastanza utile per farsi un'idea di come funziona.
Paul Wagland,

3

Personalmente uso SizeUp e Divvy su base giornaliera. Se avessi saputo di ShiftIt prima, probabilmente non avrei pagato per SizeUp. Un altro da verificare che non è stato ancora menzionato è BetterTouchTool , che ha molte altre funzionalità, ma nascosto nelle opzioni avanzate è una bella funzione che chiamano "Window Snapping" che scatta la finestra a sinistra o a destra del schermo quando lo trascini di lato. Non ha funzionalità di scelta rapida da tastiera incluse, ma è un buon complemento di SizeUp e Divvy.


1
BetterTouchTool è quello che ora uso per questo, è una delle migliori app gratuite là fuori.
Robert S Ciaccio,

3

Ho trovato qui da una domanda off topic su Stack Overflow :

Ci sono stati menzionati due manger Open Source che non sono stati mostrati in questo elenco:

Un altro dall'App Store


C'è una bella panoramica di Slate e cosa può fare in questo post del blog intitolato: Usare Slate: Window Manager di A Hacker per Mac
slm

Uso lo spettacolo da solo. Ha un problema con un'applicazione specifica: il comando annulla non sembra funzionare su Windows Firefox. Inoltre non sembra avere tutte le funzionalità di Slate.
SilverWolf - Ripristina Monica il

2

Puoi anche provare Slate che è gratuito e open source.

Potresti anche voler leggere questo articolo al riguardo.


2

Ecco un Applescript che affiancherà tutte le finestre aperte nell'applicazione in primo piano. Aggiungi ~/Library/Scriptse chiama dal menu Applescript nella barra dei menu. Aggiungi sale qb (e gratuito).

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

Fonte: MacScripter tramite Google


1

Da quello che ho visto e sentito, Cinch è un'ottima applicazione per portare la gestione delle finestre di Windows 7 su Mac OS X.


Tuttavia, la gestione delle finestre di Windows 7 è quasi inesistente a parte Aero Snap. * nix ha molte più opzioni, su cui probabilmente questi software sono influenzati.
Ehtesh Choudhury,

1

Prima di tutto, se la libertà è importante per te, ottieni ShiftIt.

Se la comodità di un mouse è importante per te, procurati Cinch. È nel Mac App Store.

Infine, se hai un Macbook o un Magic Trackpad, ottieni JiTouch. Ti permetterà di assegnare un gesto a molte, molte cose; uno dei quali è a schermo intero, metà sinistra, metà destra. Controllalo seriamente se ti piacciono i gesti anche un po '. È come avere un mouse con oltre 100 pulsanti. JiTouch


0

MercuryMover

Potresti anche guardare MercuryMover, che ti offre una gamma di strumenti per lo spostamento delle finestre in una serie di mappature della tastiera. Lo usavo molto quando combattevo con un piccolo schermo di un laptop, e puoi farlo capovolgere una finestra sul bordo di uno schermo ecc. Mappa più da vicino la funzionalità del menu di sistema 'sposta' che ottieni in Windows normale ' finestre'.



0

Per quanto ho capito la tua domanda, vuoi attaccare la finestra al bordo dello schermo, in modo che il lato della finestra sia direttamente sul bordo dello schermo. Questo è ora possibile su macOS Sierra (10.12) in modo nativo.

Tutto quello che devi fare è spostare la finestra che vuoi posizionare (facendo clic e trascinando la parte superiore della finestra) sul lato su cui vuoi aderire. Devi farlo lentamente, altrimenti non funzionerà. Dopo aver trascinato la finestra sul bordo, si attaccherà per un po 'ed è allora che dovresti fermarti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.