Чи дозволяють мені будь-які менеджери вікон прив'язувати вікна до сторінок дисплея?


21

Чи можете ви порекомендувати менеджер вікон для Mac? Я хотів би мати комбінацію клавіш, яка б оснастила вікно в лівій або правій половині екрана.


4
Я не думаю, що ви можете
запускати або вимикати

@mankoff Це питання було задано 6 місяців тому. Ваше запитання є дублікатом цього.
Кайл Кронін

@Kyle нове питання намагається стати більш загальним питанням. Цей характерний для оснащення ліворуч / праворуч. Існує безліч конкретних питань щодо вікон. Вибачте, що не намагаюся створити проблеми з вашою хорошою відповіді +11 тут, просто намагаюся зробити єдине місце для всіх питань WM.

@mankoff Я не переживаю за свою відповідь, я просто кажу, що це питання не слід закривати як "дублікат" нового питання.
Кайл Кронін

Я погоджуюся, що насправді це не повинно бути закритим, але це все ще дублікат. Час не має значення, вони є кожними копіями один одного і повинні посилатися один на одного. Я просто намагався дотримуватися останнього абзацу цього повідомлення: blog.stackoverflow.com/2011/01/…

Відповіді:


17

SizeUp - саме те, що вам потрібно:

SizeUp дозволяє швидко розмістити вікно, щоб заповнити рівно половину екрана (сплітскрін), чверть екрану (квадрант), повноекранний або по центру через панель меню або налаштовані ярлики по всій системі (гарячі клавіші). Аналогічно функціоналу "кахельні вікна", доступному в інших операційних системах.


1
Дивно здається, що немає безкоштовної альтернативи, але це коштувало великих витрат. Я дійсно використовую лише «Повний екран» та «Наступний монітор», але це того варте.
Fishtoaster

@Fishtoaster Компанія, яка виробляє SizeUp, також зробила безкоштовну версію під назвою TwoUp, але її припинили
Кайл Кронін

1
Це. SizeUp щодня скалює мій світ.
Метт

Це має великі позиції за замовчуванням. Дякую за пропозицію.
цитадельград

1
@citadelgrad: якщо це вирішило вашу проблему, не забудьте поставити позначку next поруч із публікацією.
zneak

8

Divvy

Divvy - це невеликий додаток меню, що дозволяє автоматично змінювати розмір будь-якого активного вікна. Divviy практично розділяє ваш екран на сітку 6x6. Після його виклику Divvy відображає трохи HUD посередині екрану з цією сіткою 6x6. Залежно від того, в якій частині екрана ви хочете змінити розмір активного вікна, просто перетягніть та виберіть ці квадрати на HUD, а вікно зробить все інше. Це так просто.


7

Після тестування SizeUp і Breeze я вирішив, що Breeze найкраще відповідає моїм потребам. Обидва дозволяють розміщувати вікна зліва, справа або на повний екран. Функція, яка продала його для мене, - це встановлення розміру та положення за замовчуванням для програми та присвоєння їй клавіші швидкого доступу.


Дивовижно. Дякуємо, що поділилися тим, що вирішили. Для 8 баксів виглядає чудово.
mkelley33

7

ShiftIt (оригінальна версія за посиланням припинено) робить це, і є безкоштовним та відкритим кодом.

Редагувати: Проект зараз на GitHub , проте останній реліз був у листопаді 2010 року.


1
Це я хотів сказати. Чудово працює на Snow Leopard. Підтримується також присвоювані комбінації клавіш.
Randy6T9

Приємно, що він є відкритим кодом, але той факт, що для нього потрібен X11, не сприймає мене
Джеймс Макмахон

5

Мум

Я також чув, як деякі люди так розмовляють:

Ви витрачаєте багато часу на переміщення та масштабування вікон, щоб ви могли краще бачити та працювати з усім вмістом на вашому Mac? Замість того, щоб робити цю роботу самостійно, дозвольте Мому впоратися із завданням за вас.


4

Якщо у вас є чарівна миша або чарівний трекпад, BetterTouchTool краще, оскільки ви можете встановити конкретні жести для управління вікнами. Як і пальцем ліворуч чотири пальці, можна змінити розмір вікна на 50% екрану зліва.


4

Мум чудовий. Ви можете оснастити вікна на: повноекранний, на півекранний, на четвертий екран. Ви також можете змінити розмір за допомогою сітки. Він також підтримує спеціальні комбінації клавіш.

Скріншот Moom


+1 для включення зображення, оскільки це дуже корисно для отримання уявлення про те, як воно працює.
Пол Вагленд

3

Я особисто використовую SizeUp та Divvy щодня. Якби я знав про ShiftIt раніше, я, певно, не платив би за SizeUp. Ще одна перевірка, про яку ще не було сказано, - це BetterTouchTool , який має безліч інших функцій, але прихований у розширених опціях - це приємна функція, яку вони називають "Вікно оснащення", яка затискає вікно ліворуч або праворуч від екран, коли ви перетягуєте його в бік. Не входить функція комбінації клавіш, але це приємне доповнення до SizeUp та Divvy.


1
BetterTouchTool - це те, що я зараз використовую для цього, це одне з найкращих безкоштовних додатків там.
Robert S Ciaccio

3

Я знайшов тут питання поза темою щодо переповнення стека :

Там були згадані два менеджери з відкритим кодом, які не відображались у цьому списку:

Ще з App Store


У цій публікації в блозі під назвою: Використання Шифер: Менеджер вікон Хакера для Маків
slm

Я користуюся Spectacle сам. У нього є одна проблема з конкретною програмою - команда скасування, здається, не працює на Windows 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

Джерело: MacScripter через Google


1

З того, що я бачив і чув, Cinch - це чудовий додаток для залучення управління вікнами Windows 7 до Mac OS X.


Хоча управління вікнами Windows 7 здебільшого не існує, окрім Aero Snap. * nix має набагато більше варіантів, на які, ймовірно, впливають ці фрагменти програмного забезпечення.
Ehtesh Choudhury

1

Перш за все, якщо для вас важливо безкоштовне, отримайте ShiftIt.

Якщо зручність миші для вас важлива, придбайте Cinch. Це в магазині додатків Mac.

Нарешті, якщо у вас є Macbook або Magic Trackpad, придбайте JiTouch. Це дозволить призначити жест багатьом, багатьом речам; один з них - повноекранний, напівлівий, напівправий. Серйозно перевірте це, чи хочете ви хоч трохи жестів. Це як мати мишу зі 100+ кнопками. JiTouch


0

MercuryMover

Ви також можете подивитися на MercuryMover, який надає вам ряд інструментів для переміщення вікон під низкою відображень на клавіатурі. Раніше я це багато використовував, коли боровся з невеликим екраном ноутбука, і ви можете змусити його перевернути вікно до краю екрана і т.д. windows '.



0

Наскільки я розумію, що ви ставите під сумнів, ви хочете приклеїти вікно до краю екрану, так що сторона вікна знаходиться прямо на краю екрана. Тепер це можливо в macOS Sierra (10.12).

Все, що вам потрібно зробити, - це перемістити вікно, яке ви хочете розташувати (натиснувши та перетягнувши верхню частину вікна) в ту сторону, на яку ви хочете, щоб воно прилипало. Вам потрібно робити це повільно, інакше це не вийде. Після того, як ви перетянете вікно до краю, воно деякий час приклеїться, і саме тоді вам слід зупинитися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.