ウィンドウマネージャーを使用して、ウィンドウをディスプレイの横にスナップできますか?


21

Mac用のウィンドウマネージャーを推奨できますか?画面の左半分または右半分にウィンドウをスナップするキーボードショートカットが必要です。


4
OS Xでウィンドウマネージャーをスナップインまたはスナップアウトできるとは思わない。
zneak10年

@mankoffこの質問は6か月前に質問されました。あなたの質問はこれの複製です。
カイルクローニン

@Kyle新しい質問は、より一般的な質問になろうとしています。これは、左/右のスナップに固有です。特定のウィンドウに関する質問がたくさんあります。申し訳ありませんが、ここであなたの良い+11の答えに問題を引き起こそうとはせず、すべてのWMの質問に対して単一の参照場所を作成しようとしています。

@mankoff私は自分の答えを心配していません。この質問を新しい質問の「複製」として閉じるべきではないと言っているだけです。
カイルクロニン

実際に閉じてはいけないことに同意しますが、それでも複製です。時間は無関係であり、それぞれが互いに重複しているため、相互に参照する必要があります。私はこの記事の最後の段落を追跡しようとしていた。blog.stackoverflow.com/2011/01/...

回答:


17

SizeUpはまさにあなたが必要とするものです:

SizeUpを使用すると、画面のちょうど半分(分割画面)、画面の4分の1(四分円)、全画面、またはメニューバーまたは構成可能なシステム全体のショートカット(ホットキー)の中央にウィンドウをすばやく配置できます。他のオペレーティングシステムで利用可能な「タイルウィンドウ」機能に似ています。


1
無料の代替手段がないのは奇妙に思えますが、これはコストに見合う価値がありました。私は本当に「フルスクリーン」と「ネクストモニター」のみを使用していますが、それだけの価値はあります。
フィッシュトースター

SizeUpを作る会社もTwoUp呼ばれる無料版を作ったが、それが中止されています@Fishtoaster
カイルクローニン

1
この。SizeUpは毎日私の世界を揺るがします。
マット

これにはたくさんの素晴らしいデフォルトポジションがあります。提案をありがとう。
シタデルグラード

1
@citadelgrad:これで問題が解決した場合は、投稿の横にある√マークを忘れずにチェックしてください。
-zneak

8

Divvy

Divvyは、アクティブなウィンドウのサイズを自動的に変更できる小さなメニューバーアプリです。Divviyは、画面を仮想的に6x6グリッドに分割します。呼び出されると、Divvyはこの6x6グリッドで画面の中央に小さなHUDを表示します。アクティブウィンドウのサイズを変更する画面の部分に応じて、HUD上の四角形をドラッグして選択するだけで、残りはウィンドウで処理されます。とても簡単です。


7

SizeUpとBreezeをテストした後、私はBreezeが私のニーズに最適であると判断しました。両方とも、ウィンドウを左、右、またはフルスクリーンに配置できます。私のためにそれを販売した機能は、アプリケーションのデフォルトのサイズと位置を設定し、ショートカットキーを割り当てることでした。


驚くばかり。あなたが決めたことを共有してくれてありがとう。8ドルは素晴らしいですね。
mkelley33

7

ShiftIt(リンクの元のバージョンは廃止)はこれを行い、無料でオープンソースです。

編集:プロジェクトは現在GitHubにありますが、最後のリリースは2010年11月でした。


1
これは私が言っていたものです。Snow Leopardで正常に動作します。割り当て可能なキーボードショートカットもサポートします。
Randy6T9

それはオープンソースであるが、それはX11が必要とするという事実は、それが私のために行く行わないことにクールだ
ジェームズ・マクマホン

5

ムーム

一部の人々がこれについても話を聞いたことがあります。

ウィンドウの移動とズームに多くの時間を費やしているので、Mac上のすべてのコンテンツをよりよく見ることができます。自分で作業する代わりに、Moomにタスクを処理させます。


4

マジックマウスまたはマジックトラックパッドを使用している場合、特定のジェスチャーを設定してウィンドウを管理できるため、BetterTouchToolの方が優れています。4本の指で左にスワイプするように、ウィンドウのサイズを画面の左50%に変更できます。


4

Moomは素晴らしい。ウィンドウは、フルスクリーン、ハーフスクリーン、クォータースクリーンにスナップできます。グリッドを使用してサイズを変更することもできます。カスタムキーボードショートカットもサポートしています。

Moomスクリーンショット


画像を含めるための+1。それがどのように機能するかを知るのに非常に役立つからです。
ポールワグランド

3

私は個人的にSizeUpとDivvyを毎日使用しています。もし以前にShiftItについて知っていたら、おそらくSizeUpにお金を払わなかっただろう。まだ言及されていないもう1つのチェックアウトは、他の多くの機能を備えたBetterTouchToolですが、高度なオプションには隠されています。画面を横にドラッグします。キーボードショートカット機能は含まれていませんが、SizeUpとDivvyの優れた補足機能です。


1
BetterTouchToolは今私がこれに使用しているもので、最高の無料アプリの1つです。
ロバートSチャシオ

3

私はここでStack Overflowに関するトピック外の質問から見つけました:

そこには、このリストに載っていない2つのオープンソースマネージャーがあります。

App Storeからの別の


Slateの概要と、Slateの機能については、ブログの記事「Slateの使用:Mac用のハッカーのウィンドウマネージャー
-slm

私は自分でSpectacleを使用しています。特定のアプリケーションに1つの問題があります。Firefoxウィンドウでは元に戻すコマンドが機能しないようです。また、スレートほど多くの機能を備えていないようです。
SilverWolf-モニカの復活

2

無料でオープンソースのSlateを試すこともできます。

この記事を読むこともできます。


2

以下は、最前面のアプリケーションで開いているすべてのウィンドウを並べて表示するApplescriptです。~/Library/ScriptsメニューバーのApplescriptメニューに追加して呼び出します。味に塩を加えてください(そして無料)。

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

出典:Google経由のMacScripter


1

私が見て聞いたことから、CinchはWindows 7のウィンドウ管理をMac OS Xにもたらすための素晴らしいアプリケーションです。


ただし、Aero Snapを除き、Windows 7のウィンドウ管理はほとんど存在しません。* nixにはさらに多くのオプションがあり、これらのソフトウェアが影響を受ける可能性があります。
Ehteshチョードリー

1

まず、無料があなたにとって重要な場合、ShiftItを入手してください。

マウスからの利便性が重要な場合は、Cinchを入手してください。Mac App Storeにあります。

最後に、MacbookまたはMagic Trackpadをお持ちの場合は、JiTouchを入手してください。ジェスチャを多くの多くのものに割り当てることができます。1つはフルスクリーン、左半分、右半分です。少しでもジェスチャーが好きなら真剣にチェックしてください。100個以上のボタンを持つマウスを持っているようなものです。 ジタッチ


0

マーキュリームーバー

また、一連のキーボードマッピングの下で​​さまざまなウィンドウ移動ツールを提供するMercuryMoverもご覧ください。小さなノートパソコンの画面で苦労するとき、私はこれをよく使用しました、そしてあなたはそれをウィンドウの画面の端などにひっくり返すように得ることができます。窓 '。



0

私があなたの質問を理解している限り、ウィンドウの端が画面の端に直接付着するように、ウィンドウの端を画面の端に貼り付けます。これは、macOS Sierra(10.12)でネイティブに可能になりました。

必要なのは、配置したいウィンドウを(ウィンドウの上部をクリックしてドラッグすることで)貼り付けたい側に移動することです。これをゆっくり行う必要があります。そうしないと機能しません。ウィンドウを端までドラッグした後、ウィンドウはしばらくくっつきますので、停止する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.