Mavericks'teki kabuktan Rahatsız Etmeyin nasıl etkinleştirilir / devre dışı bırakılır?


16

Bildirim merkezindeki Rahatsız Etmeyin'i bir klavye kısayoluyla değiştirmek istiyorum.

Bazı ekstra klavye kısayolları için BetterTouchTool kullanıyorum, ancak varsayılan seçeneklerde bildirimlerin etkinleştirilmesini / devre dışı bırakılmasını desteklemiyor.

Terminal komutunu yürütmek için bir seçenek var, bu yüzden burada terminalden Rahatsız Etmeyin nasıl etkinleştirileceğini / devre dışı bırakılacağını soruyorum.

Automator ile OS X Mountain Lion'da 'Rahatsız Etmeyin' Zamanlamasını buldum ve komutları çalıştırmayı denedim ama işe yaramadı.


Kabuktan farklı olarak bir klavyeden nasıl yapılacağını gerçekten sorduğunuzdan, muhtemelen sorunun başlığını değiştirmeniz gerekir. Ya da yanılıyorsam, lütfen beni düzeltin!
webmarc

Aslýnda, boş ver ... "betterTouchTool" unun istediđin terminali gerektirdiđinin farkýnda deđildim.
webmarc

Öncelikle kabuktan nasıl yapılacağını sordum. Sistem tercihlerinden yapmak davamı çözüyor, ancak kabuktan nasıl yapılacağını bilmek daha eğlenceli.
Razvan

Anladım, cevabımı kabuk bilgisi ile güncelledim.
webmarc

Yanıtlar:


13

Bunun için, Sistem Tercihleri ​​-> Klavye -> Kısayollar -> Görev Kontrolü bölümünde genel bir klavye kısayolu oluşturabilirsiniz.

Veya komut satırından kesinlikle istiyorsanız, bunu yapmak için bir el yazısı (klavye kısayolunu kullanacağınızı varsayarsak) cmdshiftoptctrlD.

Bunun çalışması için Sistem Tercihleri'nde hala bir klavye komutu kurmanız GEREKİR.

Aşağıdaki komut dosyasını bir dosyaya koyun, örneğin, ~ / dnd.applescript

ignoring application responses
    tell application "System Events" to keystroke "D" using {command down, shift down, option down, control down}
end ignoring

Şimdi osascript ~/dnd.applescriptDND ayarınızı değiştirmek için komut satırından çalışabilirsiniz .

screencap: Sistem Tercihlerinde klavye kısayolu değişikliği


1
Mükemmel! Teşekkürler. Olsa daha iyi bir yol olsaydı.
B

Hangi açıdan daha iyi?
webmarc

1
Belirsiz bir klavye kısayolunu bağlamak zorunda değilsiniz osascript.
B

Sanırım "daha etkili" olarak daha iyi mi, yoksa "örtülerin altında daha güzel" olarak mı daha iyi demek istediğinizi soruyorum. Pratik veya estetik bir dilek mi?
webmarc

Sadece merak ediyorum, her iki şekilde de başka önerim yok.
webmarc

17

OS X 10.10.3'ten itibaren, bu AppleScript "Rahatsız Etmeyin" arasında geçiş yapar. Klavye kısayolu gerekmez:

tell application "System Events" to tell process "SystemUIServer"
  key down option
  click menu bar item 1 of menu bar 2
  key up option
end tell

Bir AppleScript olarak kaydedebilir ve terminalden ile çalıştırabilir osascript DoNotDisturb.applescriptveya aşağıdaki gibi bir yorumlu metin içine sarılarak bir Bash komut dosyasına dahil edebilirsiniz:

#!/bin/bash
osascript <<EOD
  tell application "System Events" to tell process "SystemUIServer"
    key down option
    click menu bar item 1 of menu bar 2
    key up option
  end tell
EOD

6
Bu DoNotDisturb, Optiontuşu basılı tutarken menü çubuğundaki en sağdaki kutucukları tıklayarak da geçiş yapabileceğiniz anlamına gelir .
Razvan

2
Bu artık Mojave'de çalışmaz.
Applescript

13

Razvanz tarafından verilen yanıtı, defaultults-currentHost komutuna argüman kullanarak basitleştirebilirsiniz .

Rahatsız Etmeyin'i etkinleştirin:

defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean true
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturbDate -date "`date -u +\"%Y-%m-%d %H:%M:%S +0000\"`"
killall NotificationCenter

( https://heyfocus.com/blog/enabling-do-not-disturb-mode/ aracılığıyla )

Rahatsız Etmeyin:

defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean false
killall NotificationCenter

Şimdi "Rahatsız Etmeyin" i sistem tercihlerinden bağımsız olarak herhangi bir kişinin makinesinde çalışacak bir komut dosyası olarak etkinleştirmek veya devre dışı bırakmak için bunu bir komut dosyası olarak kolayca sarabilirsiniz. İşte bunun nasıl yapılacağına dair bir örnek:

#!/bin/bash

set -eou pipefail

# From https://heyfocus.com/enabling-do-not-disturb-mode and
# /apple/145487

if [[ $(defaults -currentHost read ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb) -eq 0 ]]; then
  defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean true
  defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturbDate -date "`date -u +\"%Y-%m-%d %H:%M:%S +000\"`"
  killall NotificationCenter
  echo "Do Not Disturb is enabled. Run $0 to turn it off (OS X will turn it off automatically tomorrow)."
else
  defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui doNotDisturb -boolean false
  killall NotificationCenter
  echo "Do Not Disturb is disabled. Run $0 to turn it on again."
fi

Kaynak: https://gist.github.com/ryangreenberg/5267f68a8e7b07ea66370b4eb5580ab9


2
Küçük görsel hata! [@ Color görünümlü insanlar için not edildi]: Bunu denedim ve işe yarıyor. Bazı bildirimleri 5 dakika erteledim ve ardından Bildirimler için Rahatsız Etmeyin özelliğini açtım ve "Rahatsız Etmeyin özelliğini devre dışı bırak" altındaki komutları çalıştırdım. Bir yandan, simge gri renkte kaldı, ancak diğer yandan, aksi halde çalışıyor gibi görünüyordu - bildirimler birkaç dakika içinde ortaya çıktı. İkinci test: Bildirimler için Rahatsız Etmeyin'i açtım (hiçbir şeyi ertelemeden) ve "Rahatsız Etmeyin'i Devre Dışı Bırak" altındaki komutları çalıştırdım. Simge gri renkte kaldı, ancak bildirimler hemen çıktı.
Matthew Elvey

1
@MatthewElvey Bu Sierra'dan High Sierra'ya bir değişiklik olabilir. Muhtemelen menü çubuğu simgesini yeniden yüklemek için yeni bir yol bulmamız gerekiyor.
Ryan

1
Applescript olmayan komut için +1!
Matt

1
Dnd

8

James ve Zsolt'un cevaplarına dayanarak, DND durumunu açmak veya kapatmak için birkaç komut dosyası oluşturdum. Ayrıca çalışmak için herhangi bir anahtar bağlama veya makine GUID'si gerektirmez.

ÖNEMLİ : Bu komut dosyalarını ilk kez çalıştırmanın komut dosyalarını çalıştıran uygulama için erişilebilirlik izni gerektirebileceğini lütfen unutmayın. İstekte izin vermezseniz, alt/ optiondüğmesi sistem için basılı olarak kalır ve "sıkıştırmasını kaldırmak" için oturumu kapatıp yeniden açmanız gerekir. Bu, AppleScript ile önceki yanıtlar için de geçerlidir. Komut dosyası düzenlenirse, izinlerin iptal edilmesi ve yeniden verilmesi gerekir. İzinler aşağıdakiler kullanılarak verilir:

System Preferences > Security & Privacy > Accessibility > Add your app

MacOS Sierra ve High Sierra için menu bar 1:

Rahatsız Etmeyin çevirin ON (devre dışı bildirimler):

if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <<EOD
      tell application "System Events" to tell process "SystemUIServer"
        key down option
        click menu bar item 1 of menu bar 1
        key up option
      end tell
EOD
fi

Rahatsız Etmeyin'i kapatın (bildirimleri etkinleştirin):

if ! [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <<EOD
      tell application "System Events" to tell process "SystemUIServer"
        key down option
        click menu bar item 1 of menu bar 1
        key up option
      end tell
EOD
fi

MacOS'un önceki sürümleri için menu bar 2:

Rahatsız Etmeyin çevirin ON (devre dışı bildirimler):

if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <<EOD
      tell application "System Events" to tell process "SystemUIServer"
        key down option
        click menu bar item 1 of menu bar 2
        key up option
      end tell
EOD
fi

Rahatsız Etmeyin'i kapatın (bildirimleri etkinleştirin):

if ! [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.*.plist | grep false) ]]; then
    osascript <<EOD
      tell application "System Events" to tell process "SystemUIServer"
        key down option
        click menu bar item 1 of menu bar 2
        key up option
      end tell
EOD
fi

1
Bu artık Mojave'de çalışmaz.
Applescript

2

Program Rahatsız Etmeyin

Sadece eklemek için komut satırından Rahatsız Etmeyin komutunu her gün ayarlanan saatlerde etkinleştirmek / devre dışı bırakmak için zamanlayabilirsiniz.

DND'nin ne zaman etkinleştirileceğini ayarlamak için :

defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndStart -integer <start_time_in_minutes>

DND'nin devre dışı bırakılacağı zamanı ayarlamak için :

defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndEnd -integer <end_time_in_minutes>

NOT / BILGI: değiştirin<start_time_in_minutes>ve<end_time_in_minutes>istenen değerle (aşağıda açıklanmıştır).


Misal:

DND'yi her gün saat 15: 00'te başlayacak ve 18: 30'da bitecek şekilde zamanlamak için aşağıdakileri yapın:

Dakikaya dönüştürme 15:00 ve 18:30 değerini elde etmek <start_time_in_minutes>ve <end_time_in_minutes>. Yani, saat sayısını 60 ile çarpın ve dakika sayısını ekleyin.

15:00 için olurdu: 15 * 60 + 0 = 90018:30 için olurdu: 18 * 60 + 30 = 1110. Aşağıdaki komutları bize verin:

defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndStart -integer 900
defaults -currentHost write ~/Library/Preferences/ByHost/com.apple.notificationcenterui dndEnd -integer 1110
killall NotificationCenter # 'resets' Notificatio Center so that it reads the DND change

1

James'in cevabına dayanarak, açık veya kapalı olup olmadığını da belirleyebileceğinizi belirtmek isterim. Böylece aşağıdakiler kapanır ve zaten kapalı ise hiçbir şey yapmaz:

if [[ $(plutil -convert xml1 -o - ~/Library/Preferences/ByHost/com.apple.notificationcenterui.000-000-000-000.plist | grep false) ]]; then
    osascript <<EOD
      tell application "System Events" to tell process "SystemUIServer"
        key down option
        click menu bar item 1 of menu bar 2
        key up option
      end tell
EOD
fi

Kendi makine GUID'nizi dosya adına değiştirmelisiniz (orada sadece bir dosya var, bu yüzden anlaşılması kolaydır)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.