Phím tắt để loại bỏ thông báo


26

Tôi muốn có thể loại bỏ và mở thông báo bằng bàn phím

(Không nói về việc mở / đóng trung tâm thông báo)

Điều này có thể không? Và nếu vậy thì thế nào?


Bạn có thấy bản cập nhật mà bạn yêu cầu không?
markhunte

Câu trả lời:


25

Bạn có thể tạo dịch vụ Automator để chạy Applescript này và cung cấp cho nó một phím tắt trong bàn phím Tùy chọn hệ thống Phím tắt

Điều này sẽ đóng Thông báo và biểu ngữ Thông báo


Trong Automator chọn một dịch vụ mới

nhập mô tả hình ảnh ở đây


Thêm một hành động chạy Applescript

nhập mô tả hình ảnh ở đây


và thay thế mã của nó bằng:

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

Đặt 'Dịch vụ nhận [không có đầu vào] trong [bất kỳ ứng dụng nào]'

Lưu dịch vụ.


Mở các phím tắt trong Bàn phím hệ thống và đặt dịch vụ của bạn trong 'Dịch vụ' nhập mô tả hình ảnh ở đây

Bây giờ bất kỳ ứng dụng mới được tung ra sẽ chọn lối tắt lên.

(Lưu ý: Tôi đã cấu trúc tập lệnh để chống lại lỗi ném sẽ xảy ra khi các thông báo / cửa sổ bắt đầu đóng.

otifying / window được đánh số từ 1 đến tổng số. Nhưng khi họ đóng kịch bản vẫn sẽ làm việc với số cũ. Nhưng hệ thống sẽ được gán lại chỉ mục của các cửa sổ.

Vì vậy, nơi chúng tôi nói bắt đầu từ 1 -6, tập lệnh sẽ thử và đóng cửa sổ 1, cửa sổ 2, cửa sổ 3, v.v. Nhưng hệ thống đã gán lại các số cửa sổ 1,2,3 cho các cửa sổ cuối cùng còn lại. Nhưng tập lệnh sẽ thử và đóng cửa sổ 4 và đưa ra lỗi vì nó không tồn tại. Kịch bản sẽ nắm bắt điều này và đối phó với nó. )


Nếu bạn muốn nhấp vào nút 'Hiển thị' trên Thông báo cảnh báo. bạn thay đổi nút bạn bấm từ 1 đến 2.

click button 2 of this_item

Thông báo biểu ngữ không có nút 2.

Nhưng bạn chỉ có thể nhấp vào cửa sổ.

Vì vậy, mã này nên chăm sóc Hiển thị.

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

Cảm ơn, điều này thực sự mát mẻ. Điều duy nhất còn thiếu là làm thế nào để mở một thông báo thay vì đóng nó ... đó là thứ bạn có thể thêm vào, và tôi sẽ sẵn sàng chấp nhận câu trả lời của bạn!
Drewdavid

@Drewdavid đã cập nhật câu trả lời :-)
markhunte

1
Drewdavid: Tôi đang gặp vấn đề tương tự, và đã từ bỏ việc khắc phục nó trong Bảo mật & Quyền riêng tư và chỉ thiết lập một phím nóng toàn cầu thông qua BetterTouchTool.
Bez Hermoso

1
Lưu ý: quá trình "Trung tâm thông báo" có thể được đặt tên là "Trung tâm thông báo" của "Trung tâm thông báo". Hệ thống sẽ hiểu cả trong Applescript. Việc sử dụng tên ứng dụng trong AppleScript là bình thường. Trong trường hợp này Trung tâm thông báo ". Nếu bạn đang sử dụng tập lệnh shell hoặc unix thì hãy sử dụng tên quy trình thực tế" NotificationCenter "
markhunte

1
@Chris, lưu quy trình làm việc dưới dạng Ứng dụng trong Máy tự động. Được đặt tên là "Đóng tất cả các thông báo.app" Sau đó thêm nó vào Trợ năng theo cách thủ công. Sau đó, tạo một dịch vụ như được mô tả ở trên nhưng trong khi chạy Applescript, hãy sử dụng: "nói với ứng dụng" Đóng tất cả các thông báo "để kích hoạt"
markhunte

6

Không hoàn toàn những gì bạn yêu cầu:

Bạn có thể giới hạn thời gian hiển thị cho loại biểu ngữ với

Thiết bị đầu cuối và dán sau đây

defaults write com.apple.notificationcenterui bannerTime #

với ký hiệu số # được thay thế bằng số giây bạn muốn thông báo biểu ngữ dán xung quanh, sau đó đăng xuất và bật lại.

Để khôi phục chức năng ban đầu (5 giây), hãy sử dụng defaults delete com.apple.notificationcenterui bannerTime

Tôi biết bạn nói không: nhưng bạn có thể chu kỳ Notification on / off với một kịch bản và chỉ định một bàn phím cắt ngắn để nó. Tạm thời vô hiệu hóa Trung tâm thông báo trong Mountain Lion khỏi dòng lệnh?


Cảm ơn vì đăng; thời hạn cũng đáng chú ý ở đây :)
Drewdavid

Cái này có hoạt động ở High Sierra không? Tôi không thể có được nó để có hiệu lực.
luckman212

0

Kịch bản gốc của markhunte hoạt động nhưng dừng lại sau một vài cửa sổ. Nó có thể là danh sách các cửa sổ chỉ bao gồm những cái hiện đang hiển thị. Khi bạn có quá nhiều thứ này sẽ không đóng tất cả. Tôi đã thêm một vòng lặp bên ngoài vòng lặp chính để truy vấn các cửa sổ cho đến khi chúng tôi nhận được số lượng cửa sổ bằng không. Đây là mã:

my closeNotif () trên 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

kết thúc đóng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.