4K 모니터를 구입했습니다.
최근에 자취를 새로 하게 되면서 이런 저런 물건들을 많이 구입했습니다. 처음에는 한성 ULTRON 3278 QHD New 제품을 구입했었습니다. 제가 입주해서 모니터를 구입한 시기는 2월 말 - 3월 초 사이. 코로나 바이러스 여파로 인해 물건 수급에 차질이 빚어지면서 물건을 3월 말에나 받아볼 수 있게 되어버렸습니다. 그러나 저는 다른 무엇보다 모니터가 가장 필요한 상황인지라 눈물을 머금고 해당 모델 델 주문을 취소한 다음 LG 32UK50T를 구입하게 되었습니다.
4K 모니터를 구입하자, 이상한 일이 벌어졌다 (쓸데없이 눈만 높아졌다)
모니터가 4K라고 한들, 생각보다 쓸데가 없습니다(...) 유튜브로 4K 영상 몇 번 보는게 다입니다. 넷플릭스 역시 하드웨어 사양 문제로 4K를 쓸 수가 없습니다. 제게 4K 모니터가 가장 진가를 발휘할 때는 사진을 볼 때 뿐입니다. 4K 뽕을 맞는 데가 안타깝게도 사진과 바탕화면 밖에 없습니다.
그렇다고 4K 디스플레이가 마냥 계륵이냐, 하면 또 그것도 아닙니다. 문서작성, 프로그래밍에서도 4K 해상도는 꽤 쓸만한 선택지입니다. 이에 관해서는 다른 포스팅에서 자세히 말씀드리겠습니다.
배경화면이라도 좋은 걸로 써 보자!
4K 해상도에는 아무래도 그 해상도에 걸맞는 배경화면을 쓰는 게 좋습니다. 그렇지만 윈도우 기본 배경화면을 쓰기엔 너무 심심하고, 구글에 검색하면 나오는 배경화면들은 딱히 마음을 사로잡는 게 없었습니다. 그러다 맥 배경화면에 눈을 돌리니 해상도가 일단 5K로, 4K 모니터에 적용하기는 충분하고, 퀄리티도 괜찮았습니다.
맥 배경화면을 적용했을 때 가장 좋은 점을 꼽으라면 배경화면이 자동으로 변경된다는 점입니다.
10.14 Mojave 이후부터는 시간에 따라, 일출 / 일몰 시간에 따라 배경화면이 변경되는 것을 지원합니다. 윈도우에서 일출 / 일몰 시간까지 반영해서 배경화면을 바꿔주는 건 바라지도 않았습니다. 그냥 이미지를 받아서 슬라이드쇼로 돌리기만 하면 됐습니다. 그렇지만 제 생각과는 달리 Catalina, Mojave 배경화면을 윈도우에 그냥 적용하면 치명적인 문제가 발생합니다.
윈도우 기본 설정으로는 맥의 다이나믹 배경화면을 쓸 수 없다.
Catalina는 시간의 변화에 따라 8장, Mojave 역시 마찬가지로 16장의 이미지를 가지고 있습니다. 하루에 각 배경화면을 모두 다 쓰려면 Catalina는 3시간에 1장씩, Mojave는 1시간 30분에 1장씩 바꿔야 합니다. 그러나 윈도우 기본 슬라이드쇼 기능은 90분, 3시간에 한 번씩 변경되는 옵션을 제공하지 않습니다. 설사 제공한다 해도 그리 쓸모 없는 기능입니다. 결국 배경화면 바뀌는 주기는 컴퓨터가 켜진 시간을 기준으로 하기 때문입니다. 예를 들어 자정에 해당하는 배경화면이 첫 번째 순서고, 컴퓨터를 오후에 켰다면 자정에 해당하는 배경화면이 설정되어 있을 겁니다. 이건 제가 원하던 게 아닙니다.
시간 / 해 뜨는 시간 / 해 지는 시간에 따라 배경화면 역시 바꿔주는 프로그램을 제작해보자!
그동안 뭔가를 만들고 하는 활동을 멈춘지가 꽤 됐습니다. 자기계발의 일환으로, 편리함의 일환으로 파이썬을 공부하고 있는데, 아마 파이썬이라면 이 모든 걸 해낼 수 있을 것 같다는 생각이 들었습니다. 프로그램 자체도 간단히 만들 수 있을 것만 같았습니다.
핵심 코드
ctypes.windll.user32.SystemParametersInfoW(0x14, 0, wallpaper_path, 0x3) # SystemParametersInfoA
#(배경화면 변경 고유코드0x14, 0, 배경화면 경로, 배경화면이 바뀐 걸 시스템에 즉시 알림)
모듈 | ctypes : 파이썬에서 dll 파일을 다룰 수 있도록 해줍니다.
메서드 | BOOL SystemParametersInfoW( UINT uiAction, UINT uiParam, PVOID pvParam, UINT fWinIni );
SystemParametersInfoW : 시스템 전반에 있는 파라미터를 가져오거나 설정합니다. 이 함수는 파라미터를 설정하는 동안 유저 프로필 또한 업데이트할 수 있습니다.
파라미터 | (uiAction, uiParam, pvParam, fWinlni)
uiAction : 시스템에 존재하는 파라미터를 가져오거나 설정할 수 있습니다. 접근성, 바탕화면, 아이콘, 입력, 메뉴, 전원 , 화면보호기 ,Timeout UI 효과, 윈도우 파라미터 항목에 대한 값들을 구성할 수 있습니다. 위 코드에서의 0x14는 SPI_SETDESKWALLPAPER로, 배경화면을 설정합니다.
uiParam : 시스템에서 사용하고 검색하는 파라미터입니다. 시스템 전반적으로 사용하는 파라미터에 대한 더 많은 정보는 uiAction 파라미터를 참조하세요. 따로 강조되지 않았다면 이 파라미터에 0을 표시해야합니다.
pvParam : 시스템에서 사용하고 검색하는 파라미터입니다. 시스템 전반적으로 사용하는 파라미터에 대한 더 많은 정보는 uiAction 파라미터를 참조하세요. 따로 강조되지 않았다면 이 파라미터에 NULL을 표시해야합니다. 위 코드에서 wallpaper_path는 배경화면을 적용할 경로에 대한 값이 담겨 있습니다.
fWinIni : 시스템 파라미터가 설정될 때, 유저 프로필이 업데이트될지와 변동사항에 대해 WM_SETTINGCHANGE 메시지를 상위 레벨의 윈도우에 뿌리는지 명시합니다.
SPIF_UPDATEINIFILE | Writes the new system-wide parameter setting to the user profile. |
SPIF_SENDCHANGE | Broadcasts the WM_SETTINGCHANGE message after updating the user profile. |
SPIF_SENDWININICHANGE | Same as SPIF_SENDCHANGE. |
글이 도움이 되셨다면 왼쪽 아래의 공감과 광고 클릭 부탁드립니다. 고마움을 표현하는 가장 쉬운 방법입니다.
감사합니다.