Apple M1 Pro 듀얼 모니터 위치바뀌는 현상 해결하기

nudge411·2024년 1월 21일
0
post-thumbnail

1. 개요

Apple M1 Pro 14인치 를 쓰고있다.

완전히 같은 모델인 27인치 모니터 2대를 연결했는데, 맥북을 잠자기모드에서 해제 했을때 모니터 위치가 거의 매번 좌우가 바뀌어져 있다.

HDMI 포트를 뽑았다 다시꼈다 하다보면 다시 정렬이 돌아오긴 한다.

별 생각 없이 지내오다가 "내가 여태까지 이 문제로 몇시간을 허비했을까..?" 라는 생각을 하다가 "이건 업무에 해로운 요소다!" 라는 결론을 내고 이 문제를 해결해버리고 싶었다.

2. 원인

정상

"엘지 모니터에 LEFT ID 할당"
"삼성 모니터에 RIGHT ID 할당"
모니터가 다르다면 명확하게 ID 를 할당해준다. 이렇게 되면 큰 문제 없이 왼쪽에는 엘지 모니터, 오른쪽에는 삼성모니터가 출력된다.

버그

"벤큐 모니터에 LEFT ID 할당(?)"
"벤큐 모니터에 RIGHT ID 할당(?)"

여기서 부터 혼란이 시작된다.
사진에는 구별을 위해 괄호 안에 숫자를 추가하여 벤큐(1), 벤큐(2) 로 구분 했지만 시스템은 모델명이 같은 모니터를 구분하지 못하는것 같다.

마치 우리가 서류상에 적혀있는 동명이인을 구분하지 못하는 거랑 비슷하달까
예를 들면 반배정시 김철수는 1반, 김철수는 2반 이라고 한다면 두명의 철수는 굉장히 혼란스러울 것이다.

벤큐 모니터들은 혼란스럽다.
그래서 시스템의 어떠한 알수없는 우선순위로 ID 가 할당된다.
결과는 둘중 하나다. 잘 나오거나, 좌우반전 되거나.

해결

이를 해결해보자 만약 좌우 반전 출력 된다면
왼쪽에 RIGHT 화면을 출력해 주고 오른쪽에 LEFT 화면을 출력 해주면 된다.

나는 편하게 ID Switching 이라고 부르겠다.

3. 해결 방법

  1. 우선 제대로 정렬된 화면에서 작업
  2. 모니터 ID 및 정렬정보 얻기
  3. 모니터 ID Switching 하는 명령어 만들기
  4. 해당 명령어를 키보드 커맨드로 동작 시키기

1. 모니터 ID 와 정렬 정보 얻기

# displayplacer 설치
> brew install displayplacer
# 설치 동작 확인
> displayplacer list

> displayplacer "id:... ~~~ degree:0"

2. 모니터 ID Switching 쉘 스크립트 작성하기

  1. Finder 열기 - 응용 프로그램 - Automator

  2. 빠른 동작 - 선택

  3. 쉘 스크립트 실행 - 작업흐름 수신 (입력없음) - 쉘 선택

  4. 쉘 스크립트 작성 및 테스트

    # 메인 터미널로 돌아가 displayplacer 설치경로 얻기
    > which displayplacer
    > /opt/homebrew/bin/displayplacer
    # 현재 모니터 ID 와 정렬 정보 얻기
    > displayplacer list
    # 가시성을 위한 줄바꿈
    displayplacer 
    # 벤큐1
    "id:9951E3B6-792A-4F5F-98D0-47325B48D8DA res:1920x1080 hz:60 color_depth:8 enabled:true scaling:off origin:(0,0) degree:0" 
    # 맥북
    "id:37D8832A-2D66-02CA-B9F7-8F30A301B230 res:1512x982 hz:120 color_depth:8 enabled:true scaling:on origin:(224,1080) degree:0" 
    # 벤큐2
    "id:B7AB36DC-E4D5-489E-A2DF-DB3326DD99E0 res:1920x1080 hz:60 color_depth:8 enabled:true scaling:off origin:(-1920,0) degree:0"

    현재 모니터 정렬에서 ID Switching 을 하기위해 벤큐1, 벤큐2 id 를 서로 바꿔 수정한다.

    주의: 정렬은 바뀌어선 안된다. 무슨 의미냐면 origin 좌표의 값은 고정이여야 한다. id 값만 수정한다.

    # 가시성을 위한 줄바꿈
    displayplacer 
    # 벤큐2
    "id:B7AB36DC-E4D5-489E-A2DF-DB3326DD99E0 res:1920x1080 hz:60 color_depth:8 enabled:true scaling:off origin:(0,0) degree:0" 
    # 맥북
    "id:37D8832A-2D66-02CA-B9F7-8F30A301B230 res:1512x982 hz:120 color_depth:8 enabled:true scaling:on origin:(224,1080) degree:0" 
    # 벤큐1
    "id:9951E3B6-792A-4F5F-98D0-47325B48D8DA res:1920x1080 hz:60 color_depth:8 enabled:true scaling:off origin:(-1920,0) degree:0"

    쉘 스트립트 displayplacer 키워드가 중첩되지 않도록 주의

    /opt/homebrew/bin/displayplacer displayplacer "id: ..."


    /opt/homebrew/bin/displayplacer "id:9951E3B6-792A-4F5F-98D0-47325B48D8DA res:1920x1080 hz:60 color_depth:8 enabled:true scaling:off origin:(0,0) degree:0" "id:37D8832A-2D66-02CA-B9F7-8F30A301B230 res:1512x982 hz:120 color_depth:8 enabled:true scaling:on origin:(224,1080) degree:0" "id:B7AB36DC-E4D5-489E-A2DF-DB3326DD99E0 res:1920x1080 hz:60 color_depth:8 enabled:true scaling:off origin:(-1920,0) degree:0"

    exit 0;


    마지막 줄에 exit 0; 를 추가하여 쉘 스크립트 작성을 완료하고 우측 상단의 "실행" 버튼을 눌러 모니터 좌우 화면 전환을 확인한다. (실행후 다시 id 값을 바꿔 실행하면 원래 화면으로 되돌아온다)

    cmd + S 를 눌러 작성된 쉘 스크립트를 저장해준다.

3. 키보드 커맨드 등록하기

  1. 시스템 설정 - 키보드 - 키보드 단축키

  2. 서비스 - 일반 - 모니터 ID Switching

    만약 "일반" 하위 메뉴에 빠른동작 으로 저장해둔 "모니터 ID Switching" 이 보이지 않는다면, 빠른동작 설정 시 "작업흐름 수신 (입력없음)" 설정이 누락되었을 것이다. 다시 설정 해야 한다.

  3. 커맨드 설정
    "모니터 ID Switching" 을 더블클릭 하여 커서가 나오면 원하는 커맨드를 입력한다.
    option + cmd + "." 으로 설정 하였다.

4. 추가내용

사용하다 보니 "모니터 ID Switching" 동작을 다시 반대로 전환 해야할 상황이 발생하였다. 따라서 id 를 반대로 Switching 해주는 빠른 동작을 추가하여 상황에 맞게 사용 하는것을 추천한다.(사실 필수..) 예를 들면 "ID Switching reverse" 빠른 동작을 추가하여 option + cmd + "," 에 등록하여 사용 하면된다. 두가지 빠른 동작으로 상황에 맞게 모니터를 전환 하면 된다.


두가지 커맨드를 반복하여 Switching 하기

또 다른 문제점으로는 모니터의 방향을 돌아오지만 내부의 프로그램과 웹 정렬이 흐트러지는 현상이 있다. 이정도는 그냥 감내하려 한다..

완료 및 후기

벤큐는 내가 쓰는 모델이라서 예시로 쓰인것 뿐이다 ㅎㅎ 역시나 블로그 글쓰기는 항상 어렵다. 하루면 끝날을것 같은데 일주일이 걸리고.. 쓰다보면 이걸 누가 필요로 하긴 할까..? 하는 의문이 든다.. 이번 글은 사실 중간정도 쓰다가 그냥 쓰지말까 했다가 어찌어찌 다행히 마무리 하게 됐다.. 그리고 velog 글쓰기 마크다운이 버그가 너무 많다ㅠㅠ

profile
잊기 위한 기록을 합니다.

0개의 댓글