Чи є спосіб налаштування скрипту простору (управління місією) в OSX?


7

Схоже, що Spaces розроблено з урахуванням призначення додатків до простору (див цієї статті КБ ). Навіть такі програми, як TotalSpaces з цією моделлю . Це здається мені зайвим, оскільки вже є перемикач програм (Cmd-Tab), який дозволяє перемикатися між програмами.

Я хотів би використовувати Spaces як спосіб перемикання між ними проектів . Так, наприклад, у мене є простір для ProjectA, який має вікно для XCode, Safari, Sublime Text і Terminal. Потім у мене є інший простір для ProjectB, який також має вікно для XCode, Safari, Sublime Text і Terminal. Просто вікна мають різні документи.

Але підтримка налаштувань є незручною, тому що мені доведеться знову і знову встановлювати їх, і це особливо страшно, коли я літаю вперед і назад між комп'ютерами, і мені доведеться відкрити п'ять вікон і потрапити в потрібний простір. Чи є спосіб я можу створити один крок, який автоматично встановлює пробіл? Shareware, Applescript і т.д.? Або я просто намагаюся покласти свій робочий стиль на функцію, яка була побудована для когось іншого?

Відповіді:


1

Ви впевнені можете. Я написав AppleScript деякий час тому, щоб виконати стомлююче завдання відкриття вікна Терміналу в кожному просторі.

Більшість прикладів в Інтернеті зрештою використовують AppleScript для створення натискань на клавіші. Наприклад, якщо ви налаштували його так, що "control-2" переносить вас у пробіл 2 (це можна встановити в панелі "клавіатура"), можна скористатися наступним AppleScript:

tell application "System Events"
        tell process "Finder"
                keystroke "2" using control down --switches to space 2
        end tell
end tell

щоб змінити на пробіл 2. Отже, мій скрипт, який відкриває вікно Терміналу в кожному просторі, працює так:

tell application "System Events"
    tell process "Finder"
            keystroke "1" using control down --switches to space 1
    end tell
    tell process "Terminal"
            activate
            keystroke "t" using command down --new terminal tab
    end tell
    tell process "Finder"
            keystroke "2" using control down --switches to space 2
    end tell
    ...etc...
end tell

Зрозуміло, ви можете доручити програмам, відмінним від терміналу, відкривати вікна у заданому просторі.

Ви можете запустити не запущений додаток з do shell script "open -a application_name".

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

Або, наприклад, якщо ви запускаєте програму, це може зайняти деякий час для ініціалізації, і воно відкриє її вікна в будь-якому активному місці після того, як він отримає так далеко (на відміну від того, який простір був активним, коли ви вперше запустили програму ). Таким чином, затримка повинна бути встановлена ​​належним чином кожного разу, а іноді може бути кілька секунд. Ще гірше, через дисперсії завантаження системи, час може навіть не бути послідовним від виконання до виконання, змушуючи вас використовувати затримку досить довго, щоб врахувати найгірший сценарій. (Наприклад, якщо ви запускаєте програму, яка може тривати до 5 секунд від моменту виконання, щоб відобразити перше вікно, потрібно затримати 5 секунд, перш ніж перейти на наступний простір і перейти далі.)

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

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

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