Mavericks पर शेल से डू नॉट डिस्टर्ब को सक्षम / अक्षम कैसे करें?


16

मैं एक कीबोर्ड शॉर्टकट के साथ सूचना केंद्र में डू नॉट डिस्टर्ब को टॉगल करना चाहूंगा।

मैं कुछ अतिरिक्त कीबोर्ड शॉर्टकट के लिए BetterTouchTool का उपयोग कर रहा हूं, लेकिन यह डिफ़ॉल्ट विकल्पों में सूचनाओं को सक्षम / अक्षम करने का समर्थन नहीं करता है।

यह एक टर्मिनल कमांड निष्पादित करने के लिए एक विकल्प है इसलिए मैं यहां पूछ रहा हूं कि टर्मिनल से Do Not Disturb को सक्षम / अक्षम कैसे करें?

मुझे ऑटोमेटर के साथ OS X माउंटेन लायन में शेड्यूल 'डू नॉट डिस्टर्ब' मिला और मैंने कमांड्स चलाने की कोशिश की लेकिन यह काम नहीं आया।


चूंकि आप वास्तव में यह पूछ रहे हैं कि इसे कीबोर्ड से कैसे प्राप्त किया जाए, जैसा कि शेल से विरोध किया जाता है, आपको संभवतः प्रश्न का शीर्षक बदलना चाहिए। या अगर मैं गलत हूँ, कृपया मुझे सुधारो!
webmarc

वास्तव में, कोई बात नहीं ... मुझे एहसास नहीं था कि "betterTouchTool" के लिए टर्मिनल की आवश्यकता होती है जो आप चाहते हैं।
webmarc

मैंने मुख्य रूप से पूछा कि इसे शेल से कैसे किया जाए। सिस्टम वरीयताओं से यह करना मेरे मामले को हल करता है, लेकिन यह जानना अधिक मजेदार है कि इसे शेल से कैसे किया जाए।
रज़वान

गोचचा, मैंने शेल जानकारी के साथ अपना जवाब अपडेट किया।
webmarc

जवाबों:


13

आप सिस्टम वरीयताएँ -> कीबोर्ड -> शॉर्टकट -> मिशन नियंत्रण में इसके लिए एक वैश्विक कीबोर्ड शॉर्टकट सेटअप कर सकते हैं

या यदि आप निश्चित रूप से इसे कमांड लाइन से चाहते हैं, तो ऐसा करने के लिए एक एप्स्क्रिप्ट। (यह मानते हुए कि आप कीबोर्ड शॉर्टकट का उपयोग करने के लिए सेटअप करते हैं cmdshiftoptctrlD

ध्यान दें कि आप अभी भी काम करने के लिए सिस्टम प्राथमिकता में एक कीबोर्ड कमांड सेट करना चाहते हैं।

नीचे दी गई स्क्रिप्ट को एक फ़ाइल में डालें, कहते हैं, ~ / dnd.applescript

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

अब आप osascript ~/dnd.applescriptअपने DND सेटिंग को चालू करने के लिए कमांड लाइन से चल सकते हैं ।

स्क्रीन टोपी: सिस्टम वरीयता में कीबोर्ड शॉर्टकट संशोधन


1
उत्तम! धन्यवाद। काश एक बेहतर तरीका होता।
विल बी

किस तरीके से बेहतर है?
webmarc

1
एक अस्पष्ट कीबोर्ड शॉर्टकट को बांधने और उसके साथ टॉगल करने के लिए नहीं osascript
विल बी

मुझे लगता है कि मैं पूछ रहा हूं कि क्या आप "अधिक प्रभावी" या "कवर के नीचे प्रीटीयर" के रूप में बेहतर हैं। क्या यह व्यावहारिक या सौंदर्य की इच्छा है?
webmarc 15

बस जिज्ञासु, मेरे पास कोई अतिरिक्त सुझाव नहीं है।
webmarc 15

17

OS X 10.10.3 के अनुसार, यह AppleScript "डू नॉट डिस्टर्ब" को टॉगल करेगा। कोई कीबोर्ड शॉर्टकट आवश्यक नहीं:

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

आप इसे एक AppleScript के रूप में सहेज सकते हैं और इसे टर्मिनल से चला osascript DoNotDisturb.applescriptसकते हैं, या आप इसे बैश स्क्रिप्ट में इसे एक हेरेडोक में लपेट कर शामिल कर सकते हैं:

#!/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
इसका मतलब यह है कि आप कुंजी DoNotDisturbदबाए रखते हुए मेनू बार में सबसे दाहिनी टाइल पर क्लिक करके भी टॉगल कर सकते हैं Option
रजवन

2
यह अब Mojave पर काम नहीं करता है। मेनू बार आइटम पर क्लिक करने के लिए एप्सस्क्रिप्ट लगता है जैसे कि विकल्प नीचे नहीं था, भले ही वह हो
Dylanthepiguy

13

आप उस उत्तर को सरल कर सकते हैं जो रेज़वान ने डिफॉल्ट्स-currentHost कमांड के तर्क का उपयोग करके प्रदान किया था।

सक्षम न करें गड़बड़ी:

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/en enable- do- not- disturb- mode / के माध्यम से )

अक्षम न करें:

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

अब आप इसे आसानी से स्क्रिप्ट के रूप में "डू नॉट डिस्टर्ब" को सक्षम या अक्षम करने के लिए एक स्क्रिप्ट के रूप में लपेट सकते हैं जो सिस्टम वरीयताओं की परवाह किए बिना किसी की मशीन पर काम करेगा। यहाँ एक उदाहरण है कि कैसे करना है:

#!/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

स्रोत: https://gist.github.com/ryangreenberg/5267f68a8e7b07ea66370b4eb5580ab9


2
मामूली दृश्य बग! [@ रंग देखने वाले लोगों के लिए प्रसिद्ध]: मैंने यह कोशिश की और यह काम करता है। मैंने 5 मिनट के लिए कुछ सूचनाएं स्नूज़ कीं, और फिर नोटिफिकेशन के लिए डू नॉट डिस्टर्ब को चालू किया, और फिर "डिसएबल डू नॉट डिस्टर्ब" के तहत कमांड चलाए। एक ओर, आइकन बाहर बने रहे, लेकिन दूसरी ओर, यह अन्यथा काम करने के लिए प्रकट हुआ - कुछ ही मिनटों में सूचनाएं पॉप अप हुईं। दूसरा परीक्षण: मैंने नोटिफिकेशन के लिए डू नॉट डिस्टर्ब को चालू किया (w / o कुछ भी स्नूज़िंग), और "डिसएबल डू नॉट डिस्टर्ब" के तहत कमांड चलाए। आइकन को बाहर रखा गया था, लेकिन सूचनाओं ने सही पॉप अप किया।
मैथ्यू एलेव

1
@MatthewElvey यह सिएरा से हाई सिएरा के लिए एक बदलाव हो सकता है। हमें शायद मेनूबार आइकन को पुनः लोड करने के लिए एक नया तरीका खोजने की आवश्यकता है।
रायन

1
नॉन-एप्लास्क्रिप्ट कमांड के लिए +1!
मैट

1
Dnd इस समाधान के साथ उच्च sierra / mojave पर बदला नहीं जा सकता है
Dylanthepiguy

8

जेम्स और ज़ोल्सट के उत्तर पर निर्माण, मैंने DND राज्य को चालू या बंद (टॉगल नहीं) करने के लिए कुछ स्क्रिप्ट बनाई है। उन्हें काम करने के लिए किसी भी प्रमुख बाइंडिंग या मशीन GUID की आवश्यकता नहीं होती है।

महत्वपूर्ण : कृपया ध्यान दें कि इन स्क्रिप्ट्स को पहली बार चलाने पर स्क्रिप्ट चलाने वाले ऐप के लिए एक्सेसिबिलिटी अनुमति की आवश्यकता हो सकती है। यदि आप अनुरोध में अनुमति नहीं देते हैं तो alt/ optionबटन सिस्टम के लिए दबाया जाएगा और आपको इसे "अनप्रेस" करने के लिए लॉग आउट करना होगा। यह AppleScript के साथ पिछले उत्तरों के लिए भी सही है। यदि स्क्रिप्ट संपादित की जाती है, तो अनुमतियों को रद्द करना होगा और फिर से प्रदान करना होगा। अनुमतियों का उपयोग कर दिया जाता है:

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

MacOS सिएरा और हाई सिएरा के लिए menu bar 1:

चालू करें पर डिस्टर्ब न करें (नोटिफिकेशन को निष्क्रिय करें ):

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

बंद न करें डिस्टर्ब ऑफ (सूचनाओं को सक्षम करें):

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 के पुराने संस्करणों के लिए menu bar 2:

चालू करें पर डिस्टर्ब न करें (नोटिफिकेशन को निष्क्रिय करें ):

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

बंद न करें डिस्टर्ब ऑफ (सूचनाओं को सक्षम करें):

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
यह अब Mojave पर काम नहीं करता है। मेनू बार आइटम पर क्लिक करने के लिए एप्सस्क्रिप्ट लगता है जैसे कि विकल्प नीचे नहीं था, भले ही यह हो
Dylanthepiguy

2

शेड्यूल नॉट डिस्टर्ब

बस यह जोड़ने के लिए कि आप निर्धारित समय पर प्रत्येक दिन को सक्रिय / निष्क्रिय करने के लिए कमांड लाइन से Do Not Disturb को भी शेड्यूल कर सकते हैं।

उस समय को सेट करने के लिए जब DND सक्षम किया जाएगा :

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

उस समय को सेट करने के लिए जब DND अक्षम हो जाएगा :

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

नोट: प्रतिस्थापित करें<start_time_in_minutes>और<end_time_in_minutes>वांछित मान के साथ (नीचे समझाया गया है)।


उदाहरण:

DND को हर दिन 15:00 बजे शुरू करने और 18:30 पर समाप्त करने के लिए निम्नलिखित कार्य करें:

परिवर्तित 15:00 और 18:30 मिनट के मूल्य प्राप्त करने <start_time_in_minutes>और <end_time_in_minutes>। यही है, घंटे की संख्या को 60 से गुणा करें और मिनटों की संख्या जोड़ें।

15:00 के लिए जो होगा: 15 * 60 + 0 = 900और 18:30 के लिए यह होगा 18 * 60 + 30 = 1110:। हमें नीचे दिए गए आदेश:

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

जेम्स के जवाब पर बिल्डिंग, मैं यह बताना चाहता हूं कि आप यह भी निर्धारित कर सकते हैं कि यह चालू या बंद है या नहीं। तो निम्नलिखित इसे बंद कर देता है, और कुछ नहीं करता है अगर पहले से ही बंद है:

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

आपको अपनी मशीन GUID को फ़ाइल नाम में स्थान देना चाहिए (वहां केवल एक फ़ाइल है, इसलिए यह पता लगाना आसान है)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.