매버릭스의 쉘에서 방해 사절을 활성화 / 비활성화하는 방법은 무엇입니까?


16

알림 센터에서 방해 금지를 키보드 단축키로 전환하고 싶습니다.

일부 추가 키보드 단축키에 BetterTouchTool을 사용하고 있지만 기본 옵션에서 알림 활성화 / 비활성화를 지원하지 않습니다.

여기에는 터미널 명령을 실행하는 옵션이 있으므로 여기에서 터미널에서 방해 사절을 활성화 / 비활성화하는 방법을 묻습니다.

OS X Mountain Lion With Automator에서 '방해 금지'일정을 찾았 는데 명령을 실행하려고했지만 작동하지 않는 것 같습니다.


쉘과 달리 키보드에서 키보드를 사용하는 방법에 대해 실제로 질문하고 있으므로 질문의 제목을 변경해야합니다. 또는 내가 틀렸다면 정정하십시오!
webmarc

사실, 신경 쓰지 마세요 ... "betterTouchTool"에 원하는 터미널이 필요하다는 것을 몰랐습니다.
webmarc

나는 주로 쉘에서 어떻게 하는지를 물었다. 시스템 환경 설정에서 수행하면 내 경우가 해결되지만 쉘에서 수행하는 방법을 아는 것이 더 재미 있습니다.
Razvan

Gotcha, 쉘 정보로 답변을 업데이트했습니다.
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
완전한! 감사. 더 좋은 방법이 있었으면 좋겠다.
Will B

어떤면에서 더 좋습니까?
webmarc

1
모호한 키보드 단축키를 바인딩 할 필요가 없습니다 osascript.
Will B

"보다 효과적"이나 "표지 밑의 더 예쁘다"에서 나아지는 것이 더 좋은지 묻고있는 것 같습니다. 실용적이거나 미학적 소망입니까?
webmarc

궁금한 점이 있습니다. 추가 제안이 없습니다.
webmarc

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하거나 heredoc에 다음과 같이 배치하여 Bash 스크립트에 포함시킬 수 있습니다.

#!/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키 를 누른 상태에서 메뉴 표시 줄에서 가장 오른쪽 타일을 클릭하여 전환 할 수도 있습니다 .
Razvan

2
이것은 더 이상 모하비에서 작동하지 않습니다. Applescript는 옵션이 다운되지 않았더라도 메뉴 막대 항목을 클릭하는 것으로 보입니다.
Dylanthepiguy

13

defaults 명령에 대한 인수를 사용하여 razvanz가 제공하는 답변을 단순화 할 수 있습니다 -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/enabling-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
사소한 시각적 버그! [@ color로 보이는 사람들을위한 것] : 나는 이것을 시도했고 그것은 다소 효과가있다. 5 분 동안 일부 알림을 일시 중지 한 다음 알림을 위해 방해 금지를 설정 한 다음 "방해 금지 안 함"에서 명령을 실행했습니다. 한편으로, 아이콘은 회색으로 유지되었지만 다른 한편으로는 다르게 작동하는 것처럼 보였습니다. 몇 분 안에 알림이 나타납니다. 두 번째 테스트 : 알림을 방해하지 않음 (무휴 알림)을 켜고 "방해 사절 비활성화"에서 명령을 실행했습니다. 아이콘은 회색으로 유지되었지만 알림이 바로 나타납니다.
Matthew Elvey

1
@MatthewElvey Sierra에서 High Sierra로 변경되었을 수 있습니다. 메뉴 바 아이콘을 새로 고침하는 새로운 방법을 찾아야 할 것입니다.
Ryan

1
비 Applescript 명령의 경우 +1!
Matt

1
이 솔루션을 사용하면 높은 시에라 / 모하비에서 Dnd가 변경되지 않는 것 같습니다
Dylanthepiguy 23.09의

8

James와 Zsolt의 답변을 바탕으로 DND 상태를 설정하거나 해제 (토글하지 않음)하는 몇 가지 스크립트를 만들었습니다. 또한 키 바인딩이나 시스템 GUID가 필요하지 않습니다.

중요 :이 스크립트를 처음 실행하려면 스크립트를 실행하는 앱에 대한 접근성 권한이 필요할 수 있습니다. 요청에 권한을 부여하지 않으면 시스템에 대해 alt/ option버튼을 누른 상태로 유지하고 "누르지 않기"위해 로그 아웃했다가 다시 로그인해야합니다. AppleScript를 사용한 이전 답변에서도 마찬가지입니다. 스크립트가 편집되면 권한을 취소하고 다시 부여해야합니다. 다음을 사용하여 권한이 부여됩니다.

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

macOS Sierra 및 High Sierra의 경우 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
이것은 더 이상 모하비에서 작동하지 않습니다. Applescript는 옵션이 다운되지 않았더라도 메뉴 막대 항목을 클릭하는 것으로 보입니다.
Dylanthepiguy

2

일정 이 방해받지 않음

명령 줄에서 방해 사절을 설정하여 매일 정해진 시간에 활성화 / 비활성화하도록 예약 할 수도 있습니다.

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 = 90018: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를 파일 이름으로 대체해야합니다 (파일이 하나만 있으므로 알아 내기 쉽습니다).

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.