재택근무 시에는 맥북 음량을 켜놓는데 사무실 출근하면 음소거를 해야 하기 때문에 번거롭다.
hammerspoon으로 이를 구현할 수 있다고 듣긴 했는데, 이거 하나 때문에 hammerspoon을 설치하긴 싫어서 버티고 있다가, 스크립트로 자동화해볼까 싶어서 해보기로 했다.
1. 설정하려는 Wi-Fi 이름 확인하기
networksetup -getairportnetwork en0
위 명령어로 볼륨 조절이 필요한 Wi-Fi의 이름을 확인한다.
Wi-Fi 이름을 알고 있다면 스크립트에 직접 적으면 되지만, 내가 설정하려는 Wi-Fi는 이름이 길어서 직접 치기 번거로워 명령어로 확인해 주었다.
Current Wi-Fi Network: your-wifi-name
위처럼 your-wifi-name 자리에 현재 연결된 Wi-Fi 이름이 나온다.
2. 쉘 스크립트 만들기
원하는 위치에 실행할 스크립트 파일을 만든다.
나는 ~/scripts/wifi-volume-control.sh 로 만들었다.
#!/bin/bash
TARGET_SSID="????"
CURRENT_SSID=$(networksetup -getairportnetwork en0 | cut -d ':' -f2 | xargs)
if [ "$CURRENT_SSID" == "$TARGET_SSID" ]; then
osascript -e "set volume output volume 0"
fi
TARGET_SSID 의 물음표 자리에 1번에서 확인한 Wi-Fi 이름을 넣어준다.
[#!/bin/bash]
스크립트 중 1번 라인의 #!/bin/bash 는 스크립트를 어떤 셸로 실행할지를 지정하는 것으로, 스크립트가 정상적으로 실행되게 해주는 역할을 한다.
#!/bin/bash가 없으면 터미널에서 직접 스크립트를 실행할 때 bash를 명시적으로 지정해야 하거나 시스템이 기본 셸 (sh나 zsh)을 사용하여 실행하려 할 수 있는데 이때 bash 전용 문법이 포함되어 있으면 오류가 발생할 수 있다.
3. 실행 권한 부여
chmod +x ~/scripts/wifi-volume-control.sh
이 명령어로 우리가 만든 스크립트를 실행할 수 있게 만들어준다.
기본적으로 스크립트 파일은 실행 가능하지 않아서 실행하려면 권한을 부여해야 한다.
실행 권한이 없으면 Permission denied 오류가 발생할 수 있다.
[chmod +x의 뜻]
• chmod: 파일이나 디렉터리의 권한을 변경하는 명령어
• +x: 실행 권한을 추가. 해당 파일을 실행 가능한 상태로 만든다.
4. launchd 등록 파일 생성
아쉽게도 macOS에서 와이파이 변경 감지하는 공식 이벤트 트리거가 없다.
이를 감지하려면 Swift나 Objective-C로 네트워크 이벤트 감시를 해주어야 하는데 굳이 이렇게 까지 할 필요 없으니 간단하게 30초 주기로 와이파이 이름을 확인해 줄 것이다.
30초마다 Wi-Fi 상태를 확인하는 건 SSID 한 줄 읽어서 조건 검사하는 아주 가벼운 작업이기 때문에 30초마다 체크해도 시스템에 부담은 전혀 없다.
터미널에 다음 명령 입력:
nano ~/Library/LaunchAgents/com.user.wifi-volume-control.plist
열린 nano편집기에서 다음 내용 작성:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.user.wifi-volume-control</string>
<key>ProgramArguments</key>
<array>
<string>/bin/bash</string>
<string>/Users/YOUR_USERNAME/scripts/wifi-volume-control.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartInterval</key>
<integer>30</integer> <!-- 30초마다 실행 -->
</dict>
</plist>
* 중간에 YOUR_USERNAME 부분을 사용자 이름으로 바꿔준다.
* 이건 nano 편집기로 열었지만 vim, TextEdit, Xcode 어떤 걸로 열건 상관없다.
[nano 조작법]
• control + O (쓰기/저장) → 엔터
• control + X (종료)
5. launchd로 등록하기
마지막으로 다음 명령어를 터미널에 입력한다.
이 명령어는 macOS의 launchd 시스템에 내가 만든 자동화 작업(=launch agent)을 등록하는 명령어이다.
launchctl load ~/Library/LaunchAgents/com.user.wifi-volume-control.plist
6. 확인
볼륨을 1 이상으로 설정한 후, 잠시 후 볼륨이 다시 0으로 잘 변경되는지 확인해 보자.
그런데 이 작업을 하는 중간에 맥북이 기본 제공하는 Shortcuts로 이 기능을 쉽게 설정할 수 있다는 걸 알게 되었다.
이왕 시작했으니 끝까지 하긴 했지만 스크립트는 Wi-Fi 상태 변경을 감지하지 못하기도 하고(Shortcuts로는 Wi-Fi 상태가 변경될 때를 음량 변경을 해주기 때문에..), 굳이 스크립트를 만들어서 할 필요 없는 것 같다.
'기타' 카테고리의 다른 글
2024 인프콘 후기 (0) | 2024.08.04 |
---|---|
2년차 비전공자 프런트엔드 개발자의 6개월간의 이직 기록 (0) | 2022.07.01 |