
기억나시나요? 이상한 모양의 윈도우 창
2000년대 초반에 컴퓨터를 쓰셨던 분이라면, 동그란 모양의 미디어 플레이어나 별 모양의 시계 위젯 같은 걸 본 기억이 있을 거예요. 사각형이 아닌 창, 이른바 "이상한 모양의 윈도우(Weird-Shaped Windows)"는 한때 데스크톱 커스터마이징 문화의 꽃이었는데요. Winamp의 스킨이 대표적이죠. 그런데 어느 순간부터 이런 창들이 거의 사라졌어요. 왜 그랬을까요? 이 질문에 대한 깊이 있는 분석이 나와서 함께 살펴보려고 해요.
Win32 API와 Region 개념
이상한 모양의 창을 만들려면 Win32 API에서 Region이라는 개념을 사용해야 했어요. Region이 뭐냐면, 화면에서 특정 영역을 정의하는 도형 데이터예요. 직사각형, 원, 다각형 같은 기본 도형을 조합해서 복잡한 모양을 만들 수 있었는데요, SetWindowRgn이라는 API 함수를 호출하면 윈도우의 모양을 이 Region에 맞춰서 잘라낼 수 있었어요.
좀 더 구체적으로 설명하면, 일반적인 윈도우 프로그래밍에서 창은 항상 사각형이에요. 운영체제가 그렇게 관리하거든요. 하지만 SetWindowRgn을 쓰면 운영체제에게 "이 창은 이 영역만 보여줘"라고 알려줄 수 있어요. Region 밖의 부분은 마우스 클릭도 안 되고, 투명하게 처리돼요. 마치 쿠키 커터로 반죽을 자르는 것처럼, 사각형 창에서 원하는 모양만 오려내는 거죠.
Region을 만드는 방법은 여러 가지였어요. CreateRectRgn으로 사각형을, CreateEllipticRgn으로 타원을, CreatePolygonRgn으로 다각형을 만들 수 있었고, CombineRgn으로 여러 Region을 합치거나 빼거나 교차시킬 수 있었어요. 정말 복잡한 모양을 만들려면 비트맵 이미지에서 특정 색(보통 마젠타)을 투명 키로 지정하고, 픽셀 단위로 Region을 생성하는 방법도 있었는데요, 이 방식은 비트맵을 한 줄씩 스캔하면서 불투명 픽셀이 있는 영역을 Region으로 쌓아가는 거라 꽤 노동집약적인 코드가 필요했어요.
왜 사라졌나?
이 멋진 기술이 사라진 데는 여러 이유가 겹쳐 있어요. 첫 번째이자 가장 큰 이유는 윈도우 비스타에서 도입된 DWM(Desktop Window Manager) 때문이에요. DWM이 뭐냐면, 윈도우의 창들을 GPU를 이용해서 합성(compositing)하는 시스템이에요. 비스타 이전에는 각 창이 직접 화면에 그려졌는데, DWM이 도입되면서 각 창은 먼저 오프스크린 버퍼에 그려지고, DWM이 이것들을 모아서 최종 화면을 만들어요. 이 과정에서 Aero Glass 같은 반투명 효과가 가능해진 거예요.
문제는 DWM 환경에서 Region 기반 윈도우가 제대로 동작하지 않는 경우가 생겼다는 거예요. DWM은 사각형 텍스처 단위로 창을 관리하기 때문에, 비정형 Region은 추가적인 처리가 필요했고, 성능 오버헤드도 있었어요. 반투명 효과와 Region이 충돌하는 문제도 있었고요.
두 번째 이유는 디자인 트렌드의 변화예요. 2000년대 중반부터 스큐어모피즘(실제 사물을 모방한 디자인)에서 플랫 디자인으로 트렌드가 넘어갔거든요. 2006년의 Winamp 스킨은 멋있었지만, 2012년의 Windows 8은 완전히 다른 철학이었죠. 심플하고 깔끔한 사각형 UI가 대세가 되면서, 굳이 별 모양 창을 만들 이유가 없어진 거예요.
세 번째 이유는 기술적 대안의 등장이에요. Region 없이도 비슷한 효과를 낼 수 있게 됐거든요. WPF(Windows Presentation Foundation)에서는 WindowStyle="None"과 AllowsTransparency="True"를 설정하면 투명 배경의 창을 만들 수 있어요. 창 모양을 잘라내는 게 아니라, 배경을 투명하게 하고 원하는 모양만 그리는 방식이죠. 훨씬 유연하고 DWM과도 잘 호환돼요.
현대 프레임워크에서의 비정형 윈도우
그렇다고 비정형 창이 완전히 사라진 건 아니에요. 요즘 Electron 앱을 보면, 타이틀바를 커스터마이징하거나 둥근 모서리를 적용한 앱이 많잖아요. BrowserWindow를 만들 때 frame: false로 설정하고, CSS로 모양을 잡는 방식인데요, 원리는 비슷해요. 프레임워크가 제공하는 기본 창 장식(title bar, border)을 없애고, 앱이 직접 그리는 거죠.
macOS도 마찬가지예요. NSWindow의 styleMask에서 .borderless를 쓰면 장식 없는 창을 만들 수 있고, backgroundColor를 .clear로 설정하면 투명 창이 돼요. 다만 macOS는 윈도우즈에 비해 비정형 창에 대한 사용자 경험 가이드라인이 엄격한 편이라, 앱스토어에 올리려면 제약이 좀 있어요.
한국 개발자에게 주는 시사점
이 이야기가 단순한 향수를 넘어서 의미 있는 이유가 있어요. 첫째, OS 레벨의 그래픽 시스템이 어떻게 발전해왔는지 이해하는 좋은 사례예요. GDI에서 DWM으로, 소프트웨어 렌더링에서 GPU 합성으로의 전환은 프런트엔드 성능 최적화를 이해하는 데 도움이 되거든요. 브라우저의 렌더링 엔진도 비슷한 발전 경로를 거쳤고요.
둘째, 데스크톱 앱을 개발하는 분이라면 창 커스터마이징의 옵션과 제약을 알아두면 좋아요. Electron이나 Tauri로 앱을 만들 때 커스텀 타이틀바를 구현하거나, 둥근 모서리를 적용하거나, 투명 창을 만드는 상황이 종종 생기는데, 그 밑단에서 무슨 일이 일어나는지 알면 디버깅이 훨씬 쉬워져요.
셋째, 기술의 흥망성쇠를 보여주는 재미있는 사례이기도 해요. 한때 최첨단이었던 기술이 OS 아키텍처의 변화와 디자인 트렌드의 변화라는 두 가지 힘에 의해 사라지는 과정은, 지금 우리가 쓰는 기술도 언젠가 같은 길을 갈 수 있다는 걸 상기시켜줘요.
정리하면
Win32 Region API로 만들던 비정형 창은 DWM 도입, 디자인 트렌드 변화, 더 나은 기술적 대안의 등장으로 사라졌지만, 그 아이디어 자체는 현대 프레임워크에서 다른 형태로 이어지고 있어요.
혹시 Winamp 스킨을 직접 만들어본 세대이신가요? 아니면 요즘 Electron이나 Tauri로 커스텀 윈도우를 만들어본 경험이 있으신가요? 비정형 UI에 대한 여러분의 경험이 궁금해요!
🔗 출처: Hacker News
TTJ 코딩클래스 정규반
월급 외 수입,
코딩으로 만들 수 있습니다
17가지 수익 모델을 직접 실습하고, 1,300만원 상당의 자동화 도구와 소스코드를 받아가세요.
"비전공 직장인인데 반년 만에 수익 파이프라인을 여러 개 만들었습니다"
실제 수강생 후기- 비전공자도 6개월이면 첫 수익
- 20년 경력 개발자 직강
- 자동화 프로그램 + 소스코드 제공