카테고리 없음

Display rotation shortcut for mac (맥북 화면 회전 단축키 설정)

Hithero 2025. 3. 2. 20:26

맥북프로 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에서 불러내서 엔터치면 바로 적용된다!

728x90
반응형