Пам’ятайте про розміри вікна та розміщення під час відключення та підключення другого монітора


99

Ось щось, що смокче:

  1. Підключіть зовнішній монітор до ноутбука (у моєму випадку Mac OS X Leopard).
  2. Влаштуйте свої вікна, щоб IDE був на одному екрані, а браузер - на іншому. (І т. Д. Ізміна розміру, перестановки, суєти, суєти, суєти.)
  3. Відключіть монітор від мережі, щоб перейти на зустріч чи будь-що інше.
  4. Перейти 1.

Я хотів би замінити крок 2 на "комп'ютер пам'ятає саме те, як у мене був, і просто повертає його назад".

(Мені особисто потрібно лише рішення для Mac, але збирання рішень для інших систем тут може бути корисним для інших. Я впевнений, що це поширена проблема.)

Відповіді:


56

Погляньте на Stay by Cordless Dog. Я вважаю, це робить саме те, що ви шукаєте.


2
Я спробував це. Він не працює для вікон X11, але в іншому випадку здається, як рекламується. Дякую за вказівник! Можливо, це найближче рішення, яке ми маємо в даний час для рішення для Mac.
дрів

Вікна X11 не є "справжніми" екземплярами NSWindow (принаймні, вони не востаннє перевіряли), тому це не велика несподіванка, що Перебування не хоче нічого з ними робити :) Рада, що це склалося інакше!

1
Це виглядає добре, але це не працює з повноекранними програмами в Леві. У мене Safari в повноекранному режимі, коли у мене є 1 дисплей, і після того, як я приєднаю 2-й дисплей, я хочу вийти з повноекранного режиму і перемістити Safari на другий дисплей. Залишайтеся не переміщуючи жодного додатка на повноекранному екрані.

1
Здавалося, це добре підходить. Але з 3-ма зовнішніми дисплеями у нього часто виникали проблеми з положеннями і просто вирішували проблему до 50%. Тож мені ще довелося багато ручної роботи. Я просто його деінсталював. О, і його лише 30-денний випробування!
Ернст Ернст

15

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

Одна з найкрутіших речей про Slate - це те, що ви можете визначати різні макети, виходячи з того, скільки моніторів ви підключили . Наприклад, якщо ви використовуєте свій ноутбук самостійно, можливо, ви хочете, щоб усі ваші програми заповнювали весь екран. Але коли у вас є більший вторинний монітор, ви, можливо, захочете розділити екран між браузером, поштою та музикою. Шифер робить це легко.

Ви також можете визначити комбінації клавіш для конкретних макетів та дій, таких як переміщення та зміна розміру вікон на певний відсоток.

Нижче мій файл конфігурації. Я зберігаю всі мої програми на повноекранному екрані на всіх моніторах, але ви можете змінити їх, щоб зробити їх наполовину чи іншим розміром:

# Monitor Aliases
alias mon-laptop    0    # variable for my laptop monitor
alias mon-hp        1    # my external HP monitor

# Window Position Regions
alias hp-full        move screenOriginX;screenOriginY screenSizeX;screenSizeY         ${mon-hp}
alias hp-left        move screenOriginX;screenOriginY screenSizeX/2;screenSizeY         ${mon-hp}
alias hp-right       move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY         ${mon-hp}
alias laptop-full        move screenOriginX;screenOriginY screenSizeX;screenSizeY         ${mon-laptop}
alias laptop-left        move screenOriginX;screenOriginY screenSizeX/2;screenSizeY         ${mon-laptop}
alias laptop-right       move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY         ${mon-laptop}
alias laptop-righttop    move screenOriginX+screenSizeX/2;screenOriginY screenSizeX/2;screenSizeY/2       ${mon-laptop}
alias laptop-rightbottom move screenOriginX+screenSizeX/2;screenOriginY+screenSizeY/2    screenSizeX/2;screenSizeY/2       ${mon-laptop}

# Window layouts for when I have 2 monitors
layout 2monitor 'Google Chrome':REPEAT ${hp-full}
layout 2monitor 'iCal':REPEAT ${hp-full}
layout 2monitor 'Coda':REPEAT ${hp-full}
layout 2monitor 'Mail':REPEAT ${laptop-full}
layout 2monitor 'Rdio':REPEAT ${laptop-full}
layout 2monitor 'Spotify':REPEAT ${laptop-full}
layout 2monitor 'Evernote':REPEAT ${laptop-full}

# Single monitor window layouts
layout 1monitor 'Google Chrome':REPEAT ${laptop-full}
layout 1monitor 'iCal':REPEAT ${laptop-full}
layout 1monitor 'Coda':REPEAT ${laptop-full}
layout 1monitor 'Mail':REPEAT ${laptop-full}
layout 1monitor 'Rdio':REPEAT ${laptop-full}
layout 1monitor 'Spotify':REPEAT ${laptop-full}
layout 1monitor 'Evernote':REPEAT ${laptop-full}

# Keyboard shortcuts for each layout
bind l:shift;ctrl layout 2monitor
bind g:shift;ctrl grid padding:5 0:2,1 1:2,2

# Auto-detect when a monitor is plugged in or out
default 2monitor count:2
default 1monitor count:1

Ось перелік функцій на сторінці GitHub Slate:

  • Високо налаштовується
  • Прив’яжіть натискання клавіш до:
    • переміщення та / або зміна розміру вікон
    • спрямованого фокусування вікон
    • активувати задані макети
    • створювати, видаляти та активувати знімки поточного стану Windows
  • Встановіть макети за замовчуванням для різних конфігурацій монітора, які активуються, коли виявиться ця конфігурація.
  • Підказки для вікон: інтуїтивно зрозумілий спосіб змінити фокус вікна
  • [Бета] Кращий, більш настроюваний, перемикач програм.

Ось чудовий підручник про те, як отримати максимальну користь від Шиферу.


Чи можна пригадати, як розташовувалися вікна, коли зовнішні монітори, куди востаннє підключено, та просто відновити їх? Додаток "Залишайтеся" майже це робить, але він не запам'ятовує Windows (особливо Chrome), тому я все ще шукаю щось краще.
дерев

@dreeves Так, це працює для мене. Я просто успішно зробив це вручну, використовуючи пункти меню «Шифр» та «Активувати знімок»; якщо натиснути їх до і після того, як ви перекладете комп'ютер у режим сну, ви збережете та відновите всі позиції вікна. З документів виходить , що Slate може зробити «Активувати знімок» автоматично за допомогою своєї defaultдирективи . Я не знаю, чи можете ви автоматизувати частину "Зробити знімок".
Rory O'Kane

2
Хочу зазначити, що для випадку використання ОП вони можуть просто натиснути зберегти знімок і відновити знімок у меню. Поки є лише одна віконна конфігурація, яку ви хочете, вона повинна справно працювати, не псуючись ні з чим іншим.
Мухд

3
Шифер більше не підтримується, вони пропонують використовувати Hammerspoon зараз.
certainlyakey

8

Я вирішив це за допомогою невеликого AppleScript і невеликої безкоштовної утиліти Quicksilver.

  1. Збережіть цей невеликий AppleScript у місці, яке не зміниться на вашому комп’ютері:

    try
        tell application "Adium"
            activate
            tell window "contacts"
                set the bounds to {1281, 200, 1460, 850}
            end tell
            tell chat windows
                set the bounds to {1281, 800, 1800, 1200}
            end tell
        end tell
    end try
    
    try
        tell application "iTunes"
            activate
            set the bounds of the first window to {1750, 520, 2700, 1150}
        end tell
    end try
    
    try
        tell application "Terminal"
            activate
            set the bounds of the first window to {2450, 320, 3180, 950}
        end tell
    end try
    
    try
        tell application "Firefox"
            activate
            set the bounds of the first window to {1460, 20, 2800, 950}
        end tell
    end try
    
  2. Вам потрібно буде налаштувати, які програми ви хочете знаходити на моніторі, і вікно межує так, як вам подобається. Я програміст, і наведена вище конфігурація - це те, як я запускаю свій другий монітор.

  3. Встановіть Quicksilver .

    Я вирішив зробити його непомітним у Доку і просто запустити як невеликий демон на панелі завдань

  4. Встановіть команду ключа в Quicksilver і перетягніть ваш AppleScript з кроку 1 у вікно, як виконується дія. Я зв'язав це CommandShiftA. Чудово працює!


3
Не особливо масштабований, якщо у вас є велика кількість програм для управління. Нелегко керувати! Межі з жорстким кодуванням насправді не є задоволенням.
фатухоку

Чи можете ви встановити робочий стіл, на якому відображається програма?
небезпечний день

3

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

Ви можете скористатися програмами, які дозволяють одночасно відкривати більше одного примірника, але зберігати стан лише на закритті. Закрийте мультимоніторний екземпляр (що призводить до збереження стану). Відключіть другий монітор. Якщо у вас працює другий екземпляр, його слід переставити на головний монітор, або ви можете запустити інший екземпляр. Не закривайте цей примірник перед тим, як знову включити другий монітор і не запустити інший екземпляр (який би прочитав конфігурацію мультимонітора при запуску). Потім ви можете вийти з екземпляра одного монітора (збереження цього стану), а потім екземпляра з декількома моніторами (перезапис стану одного монітора).

Більш складний варіант може включати в себе з'ясування місця збереження стану, створення резервної копії та написання пакетного файлу / сценарію для відновлення перед відкриттям програми, що дозволить вам зробити посилання, щоб зробити це автоматично під час запуску програми .

Нарешті, може бути така утиліта для вашої платформи, або написання такої може бути не надто складною. Для Windows існує програма під назвою ShiftWindow, яка може розміщувати вікна або при запуску програми, або на певній гарячій клавіші. Боюся, я не знаю MacOS достатньо добре, щоб сказати, чи існує аналогічна утиліта. Це, мабуть, ідеальне рішення, що стосується лише того, щоб ОС підтримувала таку річ безпосередньо.


1
Дякую! Не відповідь, на яку я сподівався, але хороший привід!
дрів

3

Я щойно слідував за http://cordlessdog.com/stay/ , чудово працює для мене, хоча з невеликим відставанням

Залишившись встановленим на вашому mac, ви можете запустити його та зберігати вікна, як тільки захочете. Тому щоразу, коли ви від'єднаєте екрани та підключитесь назад, у вас буде відновлено всі вікна.

Можливо, вам доведеться додати програму «останок» як свою програму запуску, оскільки її потрібно буде запускати кожен раз, коли ви перезапускаєте комп'ютер.


2

Я це виправив без жодного зовнішнього застосування.

Все, що вам потрібно зробити, це переконатися, що ваш ноутбук "Desktop 1", а ваш зовнішній монітор "Desktop 2"

це можна зробити, перемістивши білу панель меню на екран ноутбука в системних налаштуваннях> Дисплеї> Розташування


1

Принаймні, у Windows багато додатків відновлять себе, якщо ви їх максимізуєте перед перемиканням моніторів. Залиште їх у спокої під час зустрічі, а потім відновіть їх після повторного підключення.

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

І якщо ви переходите від двох моніторів до одного, Alt + пробіл + M, тоді стрілки - це рятувальник життя (знову Windows, вибачте), якщо ви "втратите" свої вікна.


1

http://www.irradiatedsoftware.com/twoup/index.html

Я знайшов це через Lifehacker, і це чудово працює для мене. Я використовую Pro версію SizeUp на відміну від безкоштовного TwoUp, і це ідеально.


Ти кажеш, це вирішує проблему, яку я поставив? Сторінка, на яку ви пов’язані, схоже, нічого з цього приводу не згадує.
дерев

1
Ні, це зовсім не вирішує проблему. SizeUp дозволяє швидше переміщувати вікно там, де ви цього хочете, але вам все одно доведеться вручну перемикатися між кожним вікном і повідомляти SizeUp, куди ви хочете перемістити кожне.
Rory O'Kane

1

Я користувач Windows і шукав, як вимкнути нову функцію Windows 7, щоб перемістити всі вікна від відключеного зовнішнього монітора. Я знайшов квитанцію (для відеокарт ATI), щоб встановити всі значення DMMEnableDDCPolling у реєстрі на 0. Це відключає автоматичну перевірку, чи монітор вимкнено. Тепер, якщо монітор відключений та підключений до мережі, всі вікна залишаються в одному положенні.

Ось відповідь, яка мені допомогла: https://superuser.com/questions/120983/how-to-disable-monitor-auto-detection-in-windows-7 (відповідь Олексія)


1
Це не має нічого спільного з Mac?

5
Ні .. але питання було позначене також як "windows" (хоча, можливо, ОП посилалося на windows програми ;)). Так чи інакше, для Windows є кілька зручних утиліт для виконання завдання. Я особисто використовую ZMover Basta, і він добре працював. Ще одна альтернатива - WindowManager DeskSoft . Але це, звичайно, не допоможе користувачам OSX.
Віль
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.