通知を閉じるためのキーボードショートカット


回答:


25

Automatorサービスを作成して、このApplescriptを実行し、システム環境設定のキーボードショートカットでキーボードショートカットを指定できます。

これにより、アラートとバナー通知が閉じられます


Automatorで新しいサービスを選択します

ここに画像の説明を入力してください


Applescriptの実行アクションを追加する

ここに画像の説明を入力してください


そしてそのコードを次のように置き換えます:

my closeNotif()
on closeNotif()

    tell application "System Events"
        tell process "Notification Center"
            set theWindows to every window
            repeat with i from 1 to number of items in theWindows
                set this_item to item i of theWindows
                try
                    click button 1 of this_item
                on error

                    my closeNotif()
                end try
            end repeat
        end tell
    end tell

end closeNotif

[サービスは[すべてのアプリケーション]で[入力なし]を受け取ります]を設定します

サービスを保存します。


システム設定でキーボードショートカットを開き、「サービス」の下でサービスを設定します ここに画像の説明を入力してください

これで、新しく起動したアプリがショートカットを選択します。

(注:通知/ウィンドウが閉じ始めたときに発生するエラーに対処するようにスクリプトを構成しました。

otifications / windowsには、1から合計カウントまでの番号が付けられています。しかし、スクリプトを閉じても、スクリプトは古いカウントのままです。ただし、システムはウィンドウのインデックスを再割り当てします。

したがって、1〜6で開始すると言うと、スクリプトはウィンドウ1、ウィンドウ2、ウィンドウ3などを閉じようとします。しかし、システムは最後に残ったウィンドウにウィンドウ番号1、2、3を再割り当てしました。ただし、スクリプトはウィンドウ4を閉じようとし、存在しないためエラーをスローします。スクリプトはこれをキャッチして処理します。)


アラート通知の「表示」ボタンをクリックする場合。クリックするボタンを1から2に変更します。

click button 2 of this_item

バナー通知にはボタンがありません2。

ただし、ウィンドウをクリックするだけです。

したがって、このコードは表示を処理する必要があります。

my closeNotif()
on closeNotif()

    tell application "System Events"
        tell process "Notification Center"
            set theWindows to every window
            repeat with i from 1 to number of items in theWindows
                set this_item to item i of theWindows
                set cnt to count buttons of this_item
                try
                    if cnt > 1 then

                        click button 2 of this_item
                    else
                        click this_item
                    end if
                on error

                    closeNotif()
                end try
            end repeat
        end tell
    end tell

end closeNotif

おかげで、これは本当にクールです。それが欠けている1つのことは、通知を閉じるのではなく開く方法です...あなたが追加できるものであり、私は喜んであなたの答えを受け入れます!
ドリューデービッド14

@Drewdavidが答えを更新しました:-)
markhunte 14

1
Drewdavid:私も同じ問題を抱えていて、セキュリティとプライバシーの下でそれを修正するのをあきらめ、BetterTouchToolを介してグローバルホットキーを設定するだけでした。
ベズエルモソ

1
注:プロセス「Notification Center」は、「NotificationCenter」または「NotificationCenter」のいずれかに名前を付けることができます。システムはApplescript内で両方を理解します。AppleScriptでアプリ名を使用するのは正常です。この場合の通知センターに通知センター『」あなたは、シェルスクリプトまたはUNIXは、実際のプロセス名を使用して使用している場合。』
markhunte

1
@Chris、ワークフローをAutomatorのアプリケーションとして保存します。「すべてのNoifications.appを閉じる」などの名前を付けてから、手動でアクセシビリティに追加します。上が、実行するAppleScriptの使用で説明したように、サービスを作成します。「TELLアプリケーション『』有効にするには」すべて閉じるNoifications
markhunte

6

あなたが求めているものではありません:

バナータイプに表示される時間を制限することができます

ターミナルと次の貼り付け

defaults write com.apple.notificationcenterui bannerTime #

#番号記号を、バナー通知を保持する秒数に置き換えてから、ログオフして再度ログオンします。

元の機能(5秒)を復元するには defaults delete com.apple.notificationcenterui bannerTime

ノーと言ったのは知っていますが、スクリプトで通知のオン/オフを切り替えて、キーボードショートカットを割り当てることができますコマンドラインからMountain Lionの通知センターを一時的に無効にしますか?


投稿していただきありがとうございます。制限時間もここで注意する価値があります:)
Drewdavid 14年

これはHigh Sierraで機能しますか?効果が得られませんでした。
luckman212

0

markhunteによる元のスクリプトは動作しますが、数ウィンドウ後に停止します。ウィンドウのリストには、現在表示されているウィンドウのみが含まれている場合があります。あまりにも多くの場合、これはすべてを閉じません。メインループの外側にループを追加して、ウィンドウカウントがゼロになるまでウィンドウを照会しました。コードは次のとおりです。

closeNotif()上のmy closeNotif()

tell application "System Events"
    tell process "Notification Center"
        set theWindows to every window
        set nWindows to number of items in theWindows
        repeat until nWindows is 0
            repeat with i from 1 to number of items in theWindows
                set this_item to item i of theWindows
                try
                    click button 1 of this_item
                    delay 0.2
                on error

                    my closeNotif()
                end try
            end repeat
            set theWindows to every window
            set nWindows to number of items in theWindows
        end repeat
    end tell
end tell

endcloseNotif

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