3

Теперь, когда появился Snow Leopard, я перестал использовать Entourage (ууууу!) и теперь я использую iCal.

Есть ли способ отключить сигнал тревоги iCal (например, «встреча в 11:00 утра начинается через 10 минут») без использования мыши?

Я не могу - Tab в окно. Если я переключаюсь на iCal, окно тревоги не в фокусе. Я не могу ` -` к этому окну тоже.

5 ответов5

4

В редакторе AppleScript создайте следующий скрипт:

tell application "iCal Helper" to quit
delay 2
tell application "iCal Helper" to launch

Используя такие приложения, как Quicksilver, Butler, FastScripts (lite), Controllermate и т.д., Создайте действие / ярлык для запуска сценария.

Причина, по которой я перезапускаю приложение, заключается в том, что мы хотим, чтобы оно открылось в фоновом режиме для следующего события / сообщения.

1

Вы можете использовать яблочный скрипт. Это активирует сигнал тревоги iCal:

tell application "iCal Helper"
 activate
end tell

Вы можете использовать что-то вроде FastScripts, QuickSilver, LaunchBar или приложение по выбору сочетаний клавиш для запуска сценария с сочетанием клавиш по вашему выбору, а затем вы можете набрать escape, чтобы закрыть его.

Я не думаю, что приложение iCal Helper доступно для сценариев, поскольку я не смог получить клавишу Escape или щелчок мышью через координаты мыши, чтобы перейти к нему. Тем не менее, вы можете дать сценарию ярлык, такой как Option-Escape, а затем вручную выполнить другой escape, чтобы закрыть его.

Я не мог заставить это работать на 10.5.8, но, может быть, iCal Helper более скриптован в 10.6?

tell application "iCal Helper"
 activate
 click at {1062, 300}
end tell

Я получил координаты, набрав Command Shift 4, так как приложение на скриншоте дает координаты. Тревоги удобно показывать в одном и том же месте, но разрешение вашего монитора приведет к тому, что ваши координаты будут отличаться от моих. Если кто-то более осведомлен об AppleScript, чем я, мне любопытно, почему именно вышеупомянутая строка "click at" не работает.

0

Ни один из других ответов здесь не работал для меня. Я использую приведенный ниже код (найден здесь), и он отлично работает на OSX Yosemite (10.10.2).

Я также немного подправил код, чтобы он работал как рабочий процесс Alfred v2, и разместил его на GitHub здесь.

on run
    closeNotifications()
end run

on closeNotifications()
    try
        -- This function closes all currently displaying notification alerts. It used to also return the titles of each notification, which I have commented out to disable.
        tell application "System Events"
            tell process "Notification Center"
                set theseWindows to every window whose subrole is "AXNotificationCenterAlert" or subrole is "AXNotificationCenterBanner"
                --set theseTitles to {}
                repeat with thisWindow in theseWindows
                    try
                        -- Save the title of each alert window:
                        --set thisTitle to the value of static text 1 of scroll area 1 of thisWindow
                        --set the end of theseTitles to thisTitle

                        -- Close each alert:
                        click button "Close" of thisWindow
                    end try
                end repeat --"theseWindows"
                --return theseTitles
            end tell -- "NotCenter"
        end tell -- "SysEvents"

    on error errorMessage number errorNumber
        if errorNumber is errorNumber then
            my addAppletToAccessibilityList()
            error number -128
        end if
    end try
end closeNotifications

on addAppletToAccessibilityList()
    -- This function gets the user to enable Accessibility, for scripting the UI interface (hitting buttons etc.)
    set thisAppletFile to (path to me)
    tell application "Finder" to reveal thisAppletFile
    tell application "System Preferences"
        launch
        activate

        reveal anchor "Privacy_Assistive" of pane id "com.apple.preference.security"

        activate

        display alert ¬
            "Add Applet to Accessibility" message "In order to respond to user clicks on Notification panels and alerts, this applet must be added to the lost of apps approved to use accessibility controls of the OS." & return & return & ¬
            "To add this app:" & return & return & ¬
            "1) Click the lock icon (if it is locked) and enter your password." & return & return & ¬
            "2) If 'SystemUIServer.app' is in the list, check the box next to it's name." & return & return & ¬
            "Otherwise, if the applet's name is in the list, check the box next to it's name. If it's not in the list, drag the applet (currently shown in the Finder) into the list area." & return & return & ¬
            "3) Click the lock to re-lock the preference pane, close System Preferences."
    end tell
end addAppletToAccessibilityList
0

Вы можете записать действие в automator и посмотреть, будет ли это работать. Я думаю, что вам придется "разрешить доступ для вспомогательных устройств" на панели "Универсальная доступность". Я попробовал это с помощью стороннего приложения, и оно работало довольно хорошо, хотя элементы управления не были названы. Я надеюсь, что Apple следует своим собственным правилам. После того, как у вас есть скрипт automator, вы можете запустить его через Quicksilver, как упоминал ридоги.

0

Нашел это

Но, конечно, если вы нажмете кнопку «x», Mac OS X фактически выведет iCal на первый план, нравится вам это или нет. Другими словами, невозможно отключить сигнал тревоги iCal без переключения на iCal. Это ... раздражает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .