แป้นพิมพ์ลัดเพื่อยกเลิกการแจ้งเตือน


27

ฉันต้องการยกเลิกและเปิดการแจ้งเตือนด้วยแป้นพิมพ์

(ไม่ได้พูดเกี่ยวกับการเปิด / ปิดศูนย์การแจ้งเตือน)

เป็นไปได้ไหม และถ้าเป็นเช่นนั้นได้อย่างไร


คุณเห็นการอัปเดตที่คุณขอหรือไม่
markhunte

คำตอบ:


25

คุณสามารถสร้างบริการ Automator เพื่อเรียกใช้ Applescript นี้และกำหนดแป้นพิมพ์ลัดในแป้นพิมพ์ลัดของ System Preferences

สิ่งนี้จะปิด Alert และ banners Notification


ใน Automator เลือกบริการใหม่

ป้อนคำอธิบายรูปภาพที่นี่


เพิ่มคำสั่ง Run 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

ตั้งค่า 'บริการได้รับ [ไม่มีอินพุต] ใน [แอปพลิเคชันใด ๆ ]'

บันทึกการบริการ


เปิดแป้นพิมพ์ลัดในการตั้งค่าระบบและตั้งค่าสำหรับบริการของคุณภายใต้ 'บริการ' ป้อนคำอธิบายรูปภาพที่นี่

ตอนนี้แอปที่เพิ่งเปิดตัวใหม่จะเลือกทางลัด

(หมายเหตุ: ฉันจัดโครงสร้างสคริปต์เพื่อตอบโต้การโยนข้อผิดพลาดที่จะเกิดขึ้นเมื่อการแจ้งเตือน / หน้าต่างเริ่มปิด

การเรียงข้อมูล / หน้าต่างจะมีหมายเลข 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

ขอบคุณนี่เจ๋งจริงๆ สิ่งหนึ่งที่ขาดหายไปคือวิธีเปิดการแจ้งเตือนแทนที่จะปิดมัน ... คือสิ่งที่คุณสามารถเพิ่มได้และฉันยินดีที่จะตอบคำตอบของคุณ!
Drewdavid

@Drewdavid อัปเดตคำตอบ :-)
markhunte

1
Drewdavid: ฉันมีปัญหาเดียวกันและยกเลิกการแก้ไขภายใต้ความปลอดภัยและความเป็นส่วนตัวและเพิ่งตั้งค่าคีย์ลัดทั่วโลกผ่าน BetterTouchTool
Bez Hermoso

1
หมายเหตุ: กระบวนการ "ศูนย์การแจ้งเตือน" สามารถตั้งชื่อได้ว่า "ศูนย์การแจ้งเตือน" ของ "ศูนย์การแจ้งเตือน" ระบบจะเข้าใจทั้งสองอย่างภายใน Applescript เป็นเรื่องปกติที่จะใช้ชื่อแอปใน AppleScript ในกรณีนี้ศูนย์การแจ้งเตือน "ถ้าคุณใช้เชลล์สคริปต์หรือยูนิกซ์ให้ใช้ชื่อกระบวนการจริง" NotificationCenter "
markhunte

1
@Chris บันทึกเวิร์กโฟลว์เป็นแอปพลิเคชันใน Automator ตั้งชื่อบางอย่างเช่น "ปิดการแจ้งเตือนทั้งหมดแอป" จากนั้นเพิ่มไปยังการเข้าถึงด้วยตนเอง จากนั้นสร้างบริการตามที่อธิบายไว้ข้างต้น แต่ในการเรียกใช้ Applescript: "บอกแอปพลิเคชัน" ปิดการแจ้งเตือนทั้งหมด "เพื่อเปิดใช้งาน"
markhunte

6

ไม่ใช่สิ่งที่คุณขอ:

คุณสามารถ จำกัด เวลาที่แสดงสำหรับประเภทแบนเนอร์ด้วย

เทอร์มินัลและวางในต่อไปนี้

defaults write com.apple.notificationcenterui bannerTime #

ด้วยเครื่องหมาย # number ถูกแทนที่ด้วยจำนวนวินาทีที่คุณต้องการให้การแจ้งเตือนแบนเนอร์ติดอยู่จากนั้นออกจากระบบแล้วเปิดใหม่

ในการกู้คืนฟังก์ชั่นดั้งเดิม (5 วินาที) ให้ใช้ defaults delete com.apple.notificationcenterui bannerTime

ฉันรู้ว่าคุณกล่าวว่าไม่มี แต่คุณสามารถวงจรประกาศเปิด / ปิดด้วยสคริปต์และกำหนดแป้นพิมพ์ลัดให้กับมัน ปิดใช้งานศูนย์การแจ้งเตือนใน Mountain Lion ชั่วคราวจากบรรทัดคำสั่งหรือไม่


ขอบคุณสำหรับการโพสต์; เวลาที่กำหนดนอกจากนี้ยังเป็นมูลค่า noting ที่นี่ :)
Drewdavid

ใช้งานได้ใน High Sierra หรือไม่ ฉันไม่สามารถรับผลกระทบใด ๆ ได้
luckman212

0

สคริปต์ต้นฉบับโดย markhunte ทำงานได้ แต่หยุดหลังจากผ่านไปสองสามหน้าต่าง อาจเป็นได้ว่ารายการของหน้าต่างมีเฉพาะหน้าต่างที่มองเห็นได้ในปัจจุบันเท่านั้น เมื่อคุณมีมากเกินไปสิ่งนี้จะไม่ปิดทั้งหมด ฉันเพิ่มลูปนอกลูปหลักเพื่อเคียวรีหน้าต่างจนกว่าเราจะได้จำนวนหน้าต่างเป็นศูนย์ นี่คือรหัส:

closeNotif () ของฉันบน 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

ปิดท้ายหมายเหตุ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.