윈도우 10용 클램셸 유틸리티를 만들어본다면

얼마나 잘 돌아갈진 모르겠지만, macOS에서 윈도우 랩탑으로 넘어오면서 딱 하나 아쉬웠던 클램셸 기능을 따라하는 유틸리티를 만들어보려고 약간의 사전 조사를 해보았습니다.

RegisterDeviceNotification API로 외장 모니터가 추가되거나 제거되는 상황을 체크하고, Microsoft.Win32.SystemEvents의 PowerModeChanged와 WPF나 WinForm의 SystemInformation 클래스를 이용해서 전원 케이블이 연결된 상태이면, powercfg 유틸리티로 "덮개를 닫았을 때 아무것도 하지 않음"으로, 그 외의 경우에는 “절전” 모드를 사용하도록 동적으로 변경해볼 수 있겠다는 생각이 들었습니다.

지금 생각나는 엣지 케이스는 프로그램이 돌아가고 있는 환경이 RDP 환경인지 아닌지, 그리고 가상 컴퓨터 환경이나 컨테이너 환경인지 따져보는 정도가 있을 것 같습니다. 그리고 좀 더 세밀하게 따져보면, 키보드 또는 마우스가 적어도 1기 이상 사용 가능한 상태인지도 따져봐야 할지 모르겠네요. :smirk:

개인적인 필요에 의해서 생각해본 유틸리티인데, 조금 만들어보고 github에 코드를 공유해볼까 합니다.

좋아요 2

참고로 클램셸이 무엇이냐하면, 맥북의 경우에는 전원을 연결한 상태 + 외장 모니터를 연결한 상태일 경우 덮개를 닫아도 절전모드로 빠지지 않도록 처리해주는 기능입니다. 윈도우에서는 이걸 비슷하게 따라하기 위해서 “덮개를 닫았을 때 아무것도 하지 않음” 설정을 바꿔줄 수는 있지만, 이런 세세한 구분이 뒷받침되지 않아서, 급하게 노트북을 덮고 나갈 때 전원이 꺼지지 않은 채로 들고 다니는 문제가 발생할 수 있습니다. ㅎㅎㅎ

좋아요 1