맥북프로 M1 max에 24인치 외장모니터를 연결해서 클램쉘로 사용중인데, 두가지 불편한점이 있었다.
1. 맥북에 전원을 연결하지 않았을 때 노트북을 닫아버리면, 외장모니터 화면도 같이 꺼짐 (전원 연결되어있을때는 괜찮음)
2. 윈도우에서는 존재했던 화면 회전 (0/90/180/270도 회전) 단축키가 맥북에는 없다! (외장모니터에 모니터암을 달아서 사용하는 중인데, 이 것의 활용을 극대화하고 싶었다. 논문을 읽든,, 긴글을 읽든 90도 회전시켜서 보고 싶었다) 내가 짜려고하는 bash 스크립트는 0 / 90 회전을 토글해주는 것을 목적으로 한다.
- 참고 : 윈도우에서는 Ctrl키 + Alt키 + ↑(방향키) 를 활용하여 전환이 가능하다. (기억이 안나서 찾아봄,,)
첫번째 문제도 해결했는데, 다음에 기록하도록하고 오늘 해결한 두번째 문제에 대해서 이야기하도록 하겠다.
bash 스크립트를 활용하여 해결할 예정이라, 터미널 사용법은 아는 것이 좋다.
사용한 패키지/앱 : brew, displayplacer (이친구가 중요한듯), warp, shortcut(맥에 있는 naive 앱)

다음과 같이 단축키를 통한 화면 회전에 필요성을 이야기하고 있다. 근데 최근 자료는 잘 없더라,,
패키지 하나 설치해야 편한 것같다. (displayplacer) Brew 를 통해 설치하도록 하자
brew install jakehilborn/jakehilborn/displayplacer
brew를 설치 안했다면 해당 링크(Brew 공식 홈페이지) 참조하자. 해당 링크에서 보여주는 설치 스크립트는 다음과 같다. 터미널에 복붙하자.
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
설치하고 bash 스크립트를 짜보려고 했다.
여기 링크(Stack Exchange)보면 이런식으로 작성하는 것 같은데,,
displayplacer 'id:123467890 res:1920x1200 scaling:off origin:(0,0) degree:180'
최대한 간단하게 degree 제외하고 다 지웠다. id는 디스플레이마다 가지고 있는 고유한 번호인것같았다. (displayplacer list 라고 터미널에 치면 id 가 나온다)
displayplacer 'id:123467890 degree:180'
Warp (공식 홈페이지) 라는 터미널 어플을 최근에 활용하는데, 이번에 야무지게 활용했다.
- 아래는 활용 예제. CMD + I 를 누르면 다음과 같이 claude에게 물어볼 수 있는 창이 생긴다.

이를 활용해, displayplacer list 에서 나오는 output을 파싱하는 것을 했다.
- 상황 설명 : displayplacer list | grep "degree:" 를 하면 아래와 같이 길게 나오는데, degree가 제일 마지막에 나와서 마지막에 나오는 degree 정보를 가져 오기 위해서, awk '{print $NF}' 대신 sed 커맨드를 활용하는 방안을 제안해준다.
displayplacer "id:xxxxxxxxxx res:1080x1920 hz:72 color_depth:8 enabled:true scaling:off origin:(0,0) degree:90"

- 이거는 toggle_display.sh 코드가 제대로 실행되지 않아서 검토해달라고 했다.

warp에서 사용가능한 claude를 통해 나온 bash script 결과이다. (원래 displayplacer로만 적어줘도 기본 터미널에서는 잘 실행이되는데, 단축키 어플에서는 displayplacer 위치를 찾지 못해서 다음과같이 전체경로를 넣어줬다. 만약 다른 곳에 설치를 했다면 위치를 바꿔주어야한다.)
# Get the display ID
DISPLAY_ID=$(/opt/homebrew/bin/displayplacer list | grep "Persistent screen id:" | sed 's/Persistent screen id: //' | head -n 1)
# Get current rotation
CURRENT_ROTATION=$(/opt/homebrew/bin/displayplacer list | grep "Rotation:" | head -n 1 | sed 's/.*Rotation: *\([0-9]*\).*/\1/')
# echo $DISPLAY_ID
# echo $CURRENT_ROTATION
if [ "$CURRENT_ROTATION" = "0" ]; then
# Current rotation is 0, change to 90
# echo "Rotating display to 90 degrees..."
/opt/homebrew/bin/displayplacer "id:$DISPLAY_ID degree:90"
elif [ "$CURRENT_ROTATION" = "90" ]; then
# Current rotation is 90, change to 0
# echo "Rotating display to 0 degrees..."
/opt/homebrew/bin/displayplacer "id:$DISPLAY_ID degree:0"
else
echo "Current rotation is $CURRENT_ROTATION, which is not supported for toggling."
exit 1
fi
echo "Display rotation toggled successfully."
- 이 코드를 단축키로 활용하기 위해 맥에 존재하는 shortcuts.app을 활용해 아래에 rotate display라는 스크립트를 만들어주었다. (위의 코드를 아래처럼 넣어주면된다)


아래와 같이 spotlight에서 불러내서 엔터치면 바로 적용된다!
