최근 수정 시각 : 2025-05-02 18:04:24

윈도우 매니저


[[컴퓨터공학|컴퓨터 과학 & 공학
Computer Science & Engineering
]]
[ 펼치기 · 접기 ]
||<tablebgcolor=#fff,#1c1d1f><tablecolor=#373a3c,#ddd><colkeepall><colbgcolor=#0066DC><colcolor=white> 기반 학문 ||수학(해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학(환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학(형태론 · 통사론 · 의미론 · 화용론 · 음운론) · 인지과학 ||
하드웨어 구성 SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품
기술 기계어 · 어셈블리어 · 바이오스 · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 함수형 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · NERF · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속
연구 및 기타 논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영체제(멀티태스킹 · 프로세스 스케줄링 · 데드락 · 식사하는 철학자 문제 · 뮤텍스 · 세마포어 · 인터럽트) · 데이터베이스 · 컴퓨터 언어 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론 · 어휘 분석 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 마크업 언어 · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크(네트워크 포트) · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리(기계 번역 · 음성인식) · 버전 (버전 관리 시스템) · 난수생성

1. 개요2. 분류
2.1. 컴포지팅과 스태킹 방식2.2. 타일링 방식2.3. 동적 방식
3. 동작
3.1. 최대화/복원3.2. 최소화3.3. 닫기
4. 리눅스/유닉스 윈도우 매니저5. 관련 문서

1. 개요

컴퓨터 운영체제에서 윈도우 매니저란 말그대로, GUI 환경에서 각 프로그램들이 뜨는 을 다루는 프로그램을 뜻한다. MS 윈도우 운영체제나 애플 Mac OS X 같은 운영체제에서는 운영체제 기본시스템에 포함되어있지만, 리눅스 및 BSD 유닉스 등은 윈도우 매니저 역시 애플리케이션 취급하기 때문에 원하는 윈도우 매니저를 골라서 인스톨하여 사용할 수 있다.

2. 분류

크게 컴포지팅, 스태킹, 타일링으로 나뉜다. 컴포지팅과 스태킹은 이미 대다수의 유저들이 사용하고 있는 그 방식이기 때문에, 여기서는 타일링 윈도우에 보다 중점을 두어 설명될것이다.

2.1. 컴포지팅과 스태킹 방식

컴포지팅 방식은 오늘날 데스크톱 환경에서 가장 많이 사용되는 방식으로, 모든 각각의 창을 메모리에 저장해서 다루기 때문에 화면상에서 해당 윈도우가 안 보여도 컴퓨터는 그것을 위해 계속 일을 한다. 반면, 스태킹 방식은 정확히 모니터에 표현되는 부분만(다른 윈도우에 겹치지 않은 부분) 컴퓨터가 일을 하고, 나머지 부분은 신경을 안 쓴다.

얼핏 보면 컴포지팅은 스태킹에 비해 매우 비효율적인 시스템같지만, 이 방식의 커다란 이점은 바로 그래픽 효과이다. 특히, 윈도우가 겹쳐서 뒤쪽 윈도우 일부분이 안 보일때, 그 뒤쪽의 윈도우가 겹쳤다고 그쪽을 표현하는 것을 컴퓨터가 포기해버리면 앞쪽 윈도우에 투명화를 걸어줬을 경우, 뒤의 윈도우는 안 보이고 바로 배경화면이 보이는 결과가 발생한다.

따라서, 스태킹 방식에서의 투명화는 Pseudo transparency 라 칭하며, 컴포지팅에서의 투명화는 Real transparency 혹은 translucency 라 이야기한다. 이외에도 기타 3D 효과들은 컴포지팅 방식으로만 가능한 것들이 대부분이다. 물론, 리소스는 스태킹에 비해 그만큼 많이 먹는다. 이 두 가지 방식은 일반 데스크톱 사용자들이라면 대부분 친숙할 것이다.

아래는 스태킹 방식을 사용하는 윈도우 매니저들이다.
Mutter · MATE/Marco · Muffin · KWin · Openbox · xfwm · twm

2.2. 타일링 방식

타일링의 경우는 위 두 가지 방식과는 개념적으로 다르게 접근하는데, 보통 유닉스 운영체제에서는 친숙한 가상 데스크톱과 연동하여 쓰는 경우가 많다. 기본적으로, 수많은 창을 한꺼번에 띄워서 쓰는 유저들이 주로 택하는 기능 우선주의 방식으로, 프로그램을 실행하여 창을 띄울경우, 절대 겹치지 않도록 창 배열을 알아서 해주는 특징이 있다. 절대 겹치지 않으므로, 스태킹이나 컴포지팅같이 안 보이는 부분을 표현할 것인가 말 것인가와 같은 고민 자체가 필요없으며, 창 1개를 띄울경우 전체화면, 2개를 띄울경우 전체화면을 반으로 갈라 양쪽에 하나씩 꽉차게 띄우는 식으로 언제나 전체화면을 다 활용한다. 참고로, 동일하게 비율을 나누지는 않고, 현재 작업하는 창에 보다 큰 화면비율을 배분하는 것이 일반적이다.[1] 이 방식의 또 하나의 특징은 키보드 단축키 위주로 만들어지는 경우가 많다는 것인데, 이는 아무래도 일반유저가 대상이 아닌, 좀 마이너한 성향의 고급 유저들을 겨냥하여 만들어진 윈도우 매니저이기 때문이다.

타일링 방식의 또 다른 특징은 태스크 매니저가 필요없다는 것이다. 컴포지팅이나 스태킹의 경우는 여러 개의 윈도우를 띄울경우, 윈도우가 겹쳐서 안 보이는 경우도 많기 때문에 이것을 다루기 위해 화면 가장자리 부근에다가 띄워진 모든 창의 이름을 나열하고 선택할 수 있는 태스크 매니저가 필수적이다. 그러나, 타일링 방식은 애초에 겹쳐지질 않는다. 즉, 현재 화면에 보이는 창 전부가 현재 화면에 띄워진 창 전부이기 때문에, 태스크 매니저 역할을 자동으로 겸하게 되는 것이다. 특히 동일한 프로그램을 여러 개 띄워놓았을 경우(유닉스 유저들의 경우, 주로 터미널을 여러 개 띄워 사용한다. 수 개에서 많게는 수십 개.), 스태킹/컴포지팅의 태스크 매니저로는 이름이 전부 같으므로, 그중 하나를 골라서 선택하는 것이 힘들지만, 타일링 방식에서는 해당 창의 내용물까지 보여주기 때문에 창 선택면에서 오히려 더 유리하다.

단점은, 언제나 전체화면을 활용하기 때문에 작아도 되는 창까지 크게 표현되는 경향이 있다. 예를 들어, 메신저라든가 파이어폭스에서 다운로드 창이라든가 Yes or No 를 선택하는 Dialog 창같은 경우는 커져야 할 이유가 없는데도 이런 창이 뜨면 순식간에 전체화면이던 파이어폭스 창이 절반으로 줄어들면서 모니터 반쪽을 저런 창이 차지하게 된다. 또한, 해상도 혹은 화면비율이 중요한 비디오 플레이어의 경우 역시 타일링 윈도우 매니저로 자동배열될 경우, 비디오 플레이어 혹은 미디어파일 자체적인 화면비율이 무시될수밖에 없기 때문에 이런경우도 문제가 많다. 물론, 알아서 원상복귀 시키거나 수동으로 배열하면 되지만 매번 이러는 것도 꽤 짜증나는 일이다.

덕분에 요즘 타일링 윈도우 매니저는 Stacking 방식을 대부분 겸하고 있으며, 설정에서 스태킹 방식으로 띄울 프로그램을 선택할 수 있게끔 한다.(물론, 타일링 방식의 설정은 대부분 수동으로 파일을 고치는식이고, 몇몇 타일링 윈도우 매니저는 아예 프로그램 자체를 고쳐서 재컴파일하는 방식을 이용한다.(xmoand, dwm 등)) 이렇게 타일링과 스태킹이 결합된 방식을 다이나믹 방식이라 하기도 한다.

아무래도 3D 효과도 불가능하고, 언제나 전체화면을 활용하기 때문에 배경화면의 역할도 거의 없어 눈즐거움에서는 최악에 가깝지만, 가상 데스크톱과 겸할 경우 헤비유저들에게 기능면에서는 압도적인 최강을 자랑한다. 각 창을 파일이라 하면, 가상 데스크톱은 폴더라 볼 수 있다. 즉, 파일이 1-2개 있을 때는 폴더같은게 필요가 없지만, 수십 개의 이상의 파일을 관리할 경우, 폴더로 알기쉽게 분류해서 사용한다면 파일을 찾기가 훨씬 편하다는 것은 다들 알고 있을것이다. 가상 데스크톱도 이런 개념으로, 가상 데스크톱을 적극적으로 사용하는 유저들은 본인의 용도에 따라 수학, 과학, 국어등등으로 분류하든가 개발, 멀티미디어, 잡동사니등으로 분류하든가 하는식으로 대부분 자신만의 창 분류법을 갖고 있으며, 그 방식에 따라 창을 각각의 가상 데스크톱에 분류하여 집어넣고 사용한다. 이럴경우, 동일한 xterm이 수십 개 띄워져 있어도 게중에 하나를 찾고싶을 때 일단 가상데스크톱을 통한 1차분류로 그것이 해당되는 가상데스크톱을 찾고, 해당 가상데스크톱 화면으로 들어가면 스태킹/컴포지팅 방식의 태스크매니저처럼 프로그램 이름 혹은 섬네일정도만 달랑 뜨는게 아닌, 내용물까지 보여주는 타일링 윈도우는 원하는 창을 손쉽게 찾을 수 있게 만들어준다. 무엇보다 대다수의 타일링 윈도우 매니저에서는 이 모든것이 마우스를 통하지 않고 오로지 키보드로만 가능하다는 커다란 장점이 있다.

일반적으로 타일링 윈도우 매니저를 사용하는 이들은 일반 유저들이 상상하는 것 이상으로 수많은 프로그램을 동시에 사용하는 경향이 있기 때문에 대부분 가벼운 프로그램 위주로 사용하며, 타일링 윈도우 매니저 자체도 그것을 감안하여 극도로 가볍게 만들어지는 경우가 많다.[2] dwm 의 경우 C 로 만들어졌으며, 코드의 라인 수가 2000 줄을 넘지 않는 것으로 유명하다. xmonad 는 하스켈로 만들어져 리소스는 dwm 보다 조금 더 먹지만, 전체 코드는 1200 줄정도이며, 수많은 기능확장이 가능하다. 물론, 그 기능확장은 하스켈 코드를 직접 수정하여 재컴파일하는식으로 진행된다는게 문제이긴 하지만.(dwm 역시 헤더파일을 수정하여 재컴파일하는식의 세팅방식을 이용한다.)

Windows 1.0Apple의 특허로 인해 스태킹 방식을 사용하지 못하고 타일링 방식을 채택했는데, 후속작인 Windows 2.0에 와서 스태킹 방식으로 전환하게 된다. 다만 이 때문에 Apple과의 특허 소송에 휘말리게 된다.

아래는 타일링 방식을 사용하는 윈도우 매니저다.
xmonad · Bspwm · i3

2.3. 동적 방식

동적 방식은 타일링 방식과 스태킹 방식을 자유자재로 오갈 수 있는 방식이다.

Awesome · dwmow

3. 동작

현대에 정립된 창 관리 동작 몇가지를 소개한다.

3.1. 최대화/복원

컴포지트를 1개 타일로 타일링한다. 스태킹이랑 뭐가 다르냐고 할 수 있지만, Microsoft Windows을 예시로 최대화된 창을 드래그 시도할 시 직전의 크기로 한 번에 돌아오는 것으로 미뤄보아 최대화 창은 오고 가는 "상태"라는 것을 알 수 있으며, 현대의 운영체제에서는 최대화 상태에서도 엄연히 각각의 창을 별도로 관리하고 있기 때문에 에 따라서 최대화된 상태에서도 가려진 창을 볼 수 있도록 창 미리 보기 섬네일 기능이 들어가기도 한다.

전체 화면과 최대화는 명확히 구별되는데, 보편적으로 전체 화면이 최대화의 상위인 것으로 인식된다. 셸에 따라 상이할 수 있으나, 전체 화면에서는 제목 표시줄이 숨겨져 창 이동을 지원하지 않는다는 특징이 있다. 즉, 전체 화면 쪽이 완전한 스태킹에 가까운 방식이다.

3.2. 최소화

창을 셸에서 숨긴다. 이렇게 숨겨진 창은 일정 시간 후 백그라운드로 동작한다.[3] 최소화된 창을 다시 띄우는 동작 역시 "복원"이라 부른다.

Windows 9x 시절의 윈도우는 최소화된 창의 컴포지트 동작을 유지하기 위해 창을 최소화하는 방식을 3000×3000 위치로 보내버리는 꼼수를 쓰기도 하였다.

3.3. 닫기

해당 창 객체를 파괴하여 셸에서 없앤다. 간혹 백그라운드 구동을 지원하는 프로그램은 창이 닫혀도 프로세스가 종료되지 않고 실행되는 경우가 있는데, 현대의 운영체제에서는 시스템 트레이 등에서 이를 확인할 수 있도록 해놓는 경우가 많다.

4. 리눅스/유닉스 윈도우 매니저

Linux / UNIX GUI 환경
{{{#!folding [ 펼치기 · 접기 ]
{{{#!wiki style="border: 0px solid; margin: -11px; margin-top: -8px; margin-bottom: -6px;"
윈도우 시스템 X11 · Wayland · Mir · SurfaceFlinger · Quartz
윈도우
매니저
Compositing, Stacking Mutter · MATE/Marco · Muffin · KWin · Openbox · xfwm · twm · Hyprland
Tiling xmonad · Bspwm · i3
Dynamic Awesome · dwm
디스플레이 매니저 GDM · SDDM(KDM) · LightDM · LXDM
데스크톱
환경
GTK GNOME · MATE · Cinnamon · Budgie · Unity · Xfce · LXDE · Pantheon · Phosh
Qt KDE(Plasma Mobile) · LXQt · Deepin · JDE · UKUI
Rust COSMIC
}}}}}} ||

5. 관련 문서



[1] 창 1-2 개라면 문제가 없지만, 10개 이상의 창을 띄울경우(타일링 윈도우 매니저를 사용하는 이들에겐 드문일이 아니다.), 비율을 동일하게 배분한다면 모든 창이 전부 작업이 불가능할 정도로 작아지기 때문에 실용성이 전혀 없다.[2] 사실 컴포지팅 방식의 윈도우 매니저를 사용하는 대다수의 유저들은 컴포지팅 윈도우 매니저 자체도 무겁고, 사용하는 애플리케이션 자체도 뽀샤시한 그래픽으로 리소스를 많이 먹는 것들을 많이 쓰기 때문에 한꺼번에 여러 프로그램을 돌리게 되면 그 창을 찾는게 문제가 아니라, 컴퓨터가 버티는가 뻗어버리는가의 문제가 우선한다. 덕분에 이들에게는 한꺼번에 수십 개의 프로그램을 띄워본 경험 자체가 없거나 가능해도 위험한 것이라는 인식을 갖고 있는 경우가 대부분이라, 컴포지팅/태스크매니저 방식에서 창을 여러 개 띄우면 찾기가 불편한지도 모르는 경우가 많다.[3] 다만 이것도 프로그램마다 다르다.