이 글은 그래픽이 어떻게 구성되는지에 대한 내용입니다. Linux 그리고 어떤 구성 요소로 이루어져 있는지 보여줍니다. 다양한 데스크톱 환경 구현에 대한 많은 스크린샷이 포함되어 있습니다.
KDE와 GNOME의 차이점을 잘 모르시거나, 구분은 하지만 다른 대안이 있는지 궁금하시다면 이 글이 도움이 될 것입니다. 이 글은 개괄적인 내용을 다루고 있으며, 여러 용어와 명칭이 등장하지만 웹 데스크톱 환경에 처음 입문하는 분들에게도 유용할 것입니다. Linux.
이 주제는 원격 접속을 설정하거나 씬 클라이언트를 구현하는 고급 사용자에게 흥미로울 수 있습니다. 저는 종종 "서버는 명령줄만 있고, 그래픽은 기본 사용자용이니 자세히 공부할 생각은 없습니다."라고 말하는 노련한 리눅스 사용자들을 만납니다. 하지만 전문가조차도 Linux 그들은 큰 놀라움과 기쁨 속에 ssh 명령어의 "-X" 옵션을 발견합니다 (이를 위해서는 X 서버의 작동 방식과 기능을 이해하는 것이 유용합니다).

저는 거의 15년 동안 강의를 해왔습니다. Linux "에서"제가 교육한 5천 명이 넘는 사람들 중 상당수가 Habr에서 글을 읽고, 또 아마 직접 글을 쓰기도 할 거라고 확신합니다. 교육 과정은 항상 매우 집중적이며(평균 교육 기간은 5일), 완전히 이해하려면 최소 10일은 걸릴 주제들을 다룹니다. 교육 중에는 수강생(초보자 또는 숙련된 관리자)과 '질문'에 따라 어떤 내용을 더 자세히 다루고 어떤 내용을 간략하게 다룰지 항상 고민합니다. 명령줄 유틸리티와 실제 적용에 더 많은 시간을 할애하기도 합니다. 어쩔 수 없이 조금 희생해야 하는 주제들도 많습니다. 이것이 바로 '역사'입니다." Linux", "분포의 차이 Linux"라이선스에 관하여: GPL, BSD 등...", "그래픽 및 데스크톱 환경에 관하여"(이 글의 주제) 등. 중요하지 않다는 것은 아니지만, 보통 당장 더 시급한 질문들이 많고 시간은 고작 5일밖에 없기 때문에... 하지만 운영체제의 기본 사항을 전반적으로 이해하기 위해서는... Linux사용 가능한 다양성을 이해함으로써 (특정 분포 하나만 사용하더라도) Linux"라고 불리는 이 거대하고 무한한 세상 전체에 대해 여전히 더 넓은 시각을 갖고 있습니다."Linux이러한 주제들을 공부하는 것은 유익하고 필요하다.
이 글 전체에서 각 구성 요소에 대해 해당 주제를 더 깊이 파고들고 싶어하는 사람들을 위해 링크를 제공합니다. 예를 들어, 위키피디아 문서로의 링크가 있습니다(영어와 러시아어 문서가 있는 경우 보다 완전하고 유용한 버전을 나타냅니다).
주요 예제와 스크린샷에서는 openSUSE 배포판을 사용했습니다. 저장소에 많은 수의 패키지가 들어 있는 다른 커뮤니티에서 개발한 배포판을 사용하는 것도 가능했을 것입니다. 상업용 배포판에서는 데스크톱 디자인의 다양성을 보여주는 것이 어렵지만 가능합니다. 왜냐하면 이러한 배포판은 종종 가장 잘 알려진 데스크톱 환경 중 하나나 두 개만 사용하기 때문입니다. 이런 방식으로 개발자는 안정적이고 디버깅이 가능한 OS를 출시하는 데 작업 범위를 좁힙니다. 동일한 시스템에서 저장소에서 찾은 모든 DM/DE/WM(아래에 해당 용어에 대한 설명이 있음)을 설치했습니다.
"파란색 프레임"이 있는 스크린샷은 openSUSE에서 촬영되었습니다.
다른 배포판에서는 "흰색 프레임"으로 스크린샷을 찍었는데, 스크린샷에 표시되어 있습니다.
"회색 프레임"이 있는 스크린샷은 지난 몇 년간의 데스크톱 디자인의 예로 인터넷에서 가져온 것입니다.
자, 시작합시다.
그래픽을 구성하는 주요 구성 요소
시스템이 시작될 때 실행되는 순서대로 세 가지 주요 구성 요소를 강조하여 나열하겠습니다.
- DM(디스플레이 관리자)
- 디스플레이 서버;
- DE(데스크톱 환경).
또한, 데스크톱 환경의 중요한 하위 항목은 다음과 같습니다.
- 앱 관리자/런처/스위처(시작 버튼)
- WM(윈도우 관리자)
- 데스크톱 환경과 함께 제공되는 다양한 소프트웨어.
각 항목에 대한 자세한 내용은 다음과 같습니다.
DM(디스플레이 관리자)
"그래픽"을 시작할 때 실행되는 첫 번째 애플리케이션은 DM(Display Manager)입니다. 주요 업무는 다음과 같습니다.
- 시스템에 어떤 사용자를 허용할지 묻고, 인증 데이터(비밀번호, 지문)를 요청합니다.
- 실행할 데스크톱 환경을 선택합니다.
현재 다양한 배포판에서 널리 사용되는 것은 다음과 같습니다.
- (변경됨 ),
- ,
- ,
- .
- 또한 Astra에서 사용되는 Fly-DM도 언급할 가치가 있습니다.Linux).
기존 DM 목록은 최신 상태로 유지됩니다.




다음 스크린샷은 동일한 LightDM 디스플레이 관리자를 사용하지만, 배포판이 다르다는 점에 주목할 필요가 있습니다(배포판 이름은 괄호 안에 표시되어 있습니다). 다양한 배포판의 디자이너들의 작업 덕분에 이 DM이 얼마나 다르게 보일 수 있는지 확인해 보세요.





이러한 다양성에서 가장 중요한 것은 그래픽을 실행하고 사용자가 이 그래픽에 접근할 수 있도록 하는 애플리케이션이 있으며, 이 애플리케이션에는 모양과 기능(디자인 환경 선택, 사용자 선택, 시각 장애인 사용자를 위한 버전, 프로토콜을 통한 원격 접근 가능성)이 약간씩 다른 구현이 있다는 점을 분명히 하는 것입니다. ).
디스플레이 서버
디스플레이 서버는 일종의 그래픽 기반으로, 주된 역할은 비디오 카드, 모니터, 다양한 입력 장치(키보드, 마우스, 터치패드)를 다루는 것입니다. 즉, "그래픽"으로 렌더링되는 애플리케이션(예: 브라우저나 텍스트 편집기)은 장치와 직접 작동하는 방법을 알 필요가 없고 드라이버에 대해서도 알 필요가 없습니다. X Window가 이 모든 작업을 처리합니다.
디스플레이 서버는 오랜 역사를 가지고 있습니다. Linux그리고 유닉스에서는 응용 프로그램으로 사용되었습니다. 또는 일반적으로 X(Xs)라고 합니다.
이제 많은 배포판이 X를 대체품으로 구현하고 있습니다. .
다음 내용도 읽어보세요:
- ,
- ,
- (예: PuTTY를 사용하여 그래픽 애플리케이션을 원격으로 시작하는 데 필요함).
먼저 X와 그 안에 있는 몇몇 그래픽 애플리케이션을 실행해 보겠습니다.
워크숍 "X 및 X를 활용한 애플리케이션 실행"
새로 생성된 사용자 webinaruser로 모든 작업을 수행하겠습니다(루트로 모든 작업을 수행하는 것이 더 쉽지만 안전하지는 않습니다).
- X'am이 장치에 접근해야 하므로 접근 권한을 부여합니다. 로그(/home/webinaruser/.local/share/xorg/Xorg.77.log)에서 X를 시작할 때 발생하는 오류를 보고 장치 목록을 확인했습니다.
% sudo setfacl -m u:webinaruser:rw /dev/tty8 /dev/dri/card0 /dev/fb0 /dev/input/*
- 그 후 X를 실행합니다.
% X -retro :77 vt8 &
옵션: * -retro - 기본 검정색 대신 "회색" 클래식 배경으로 시작합니다. * :77 — 화면 번호를 지정합니다(적절한 범위 내에서 가능하지만 :0은 이미 실행 중인 그래픽으로 채워져 있을 가능성이 가장 높음). 이는 여러 개의 실행 중인 X를 구별할 수 있는 일종의 실제 고유 식별자입니다. * vt8 - X가 표시될 터미널(여기서는 /dev/tty8)을 지정합니다.
- 그래픽 애플리케이션을 실행합니다.
이를 위해 먼저 애플리케이션이 실행 중인 X 중 어느 X에 무엇을 그려야 할지 이해할 수 있는 변수를 설정합니다.
% export DISPLAY=":77"
실행 중인 X 목록은 다음과 같이 볼 수 있습니다.
ps -fwwC X
변수를 설정한 후에는 X에서 애플리케이션을 실행할 수 있습니다. 예를 들어 시계를 실행합니다.
% xclock -update 1 &
% xcalc &
% xeyes -g 200x150-300+50 &

이 글의 주요 아이디어와 결론:
- X는 장치에 대한 액세스가 필요합니다: 터미널, 비디오 카드, 입력 장치,
- X 자체에는 어떠한 인터페이스 요소도 표시되지 않습니다. 그래픽 애플리케이션을 실행하기 위한 특정 크기(예: 1920x1080 또는 1024x768)의 회색(--retro 옵션 사용 시) 또는 검은색 캔버스입니다.
- "십자가"의 움직임은 X가 마우스 위치를 추적하고 이 정보를 해당 위치에서 실행되는 애플리케이션으로 전송한다는 것을 보여줍니다.
- X는 또한 키보드의 키 입력을 포착하여 이 정보를 애플리케이션에 전달합니다.
- DISPLAY 변수는 그래픽 애플리케이션에 어떤 화면(각 X는 실행 시 고유한 화면 번호로 실행됨)을 지정하고, 따라서 내 컴퓨터에서 실행 중인 애플리케이션 중 어떤 화면이 X를 그려야 하는지 알려줍니다. (또한 이 변수에 원격 컴퓨터를 지정하고 네트워크의 다른 컴퓨터에서 실행 중인 X로 출력을 보낼 수도 있습니다.) X는 -auth 옵션 없이 실행되었으므로 XAUTHORITY 변수나 xhost 명령을 처리할 필요가 없습니다.
- 그래픽 애플리케이션(또는 X 클라이언트라고 함)은 X에 그려지며, 이를 이동하거나 닫거나 변경할 수 없습니다. "-g (너비)x(높이)+(왼쪽 가장자리에서 Shift)+상단 가장자리에서 Shift)". 각각 오른쪽과 아래쪽 가장자리에서 빼기 기호를 붙입니다.
- 언급할 만한 두 가지 용어는 X 서버(X의 명칭)와 X 클라이언트(X에서 실행되는 모든 그래픽 애플리케이션의 명칭)입니다. 이 용어를 이해하는 데 약간의 혼란이 있으며, 많은 사람들이 이를 정반대로 이해합니다. "클라이언트 머신"(원격 액세스 용어)에서 "서버"(원격 액세스 용어)에 연결하여 서버의 그래픽 애플리케이션을 내 모니터에 표시하면 X 서버는 모니터가 있는 머신(즉, "서버"가 아닌 "클라이언트 머신")에서 시작되고 X 클라이언트는 "서버"에서 시작되어 실행되지만 "클라이언트 머신"의 모니터에 표시됩니다.

DE 구성 요소
다음으로, 데스크탑을 구성하는 일반적인 구성 요소를 살펴보겠습니다.
DE 구성 요소: 시작 버튼 및 작업 표시줄
먼저 "시작" 버튼부터 시작해 보겠습니다. 이는 종종 작업 표시줄에 사용되는 별도의 애플릿입니다. 실행 중인 애플리케이션 간에 전환하기 위한 애플릿도 일반적으로 있습니다.

다양한 데스크톱 환경을 살펴본 후, 이러한 애플리케이션을 "앱 관리자(런처/스위처)"라는 일반 명칭으로 일반화하겠습니다. 즉, 애플리케이션을 관리(실행 중인 애플리케이션을 시작하고 전환)하는 도구입니다. 또한 이러한 유형의 애플리케이션의 예가 되는 유틸리티도 표시하겠습니다.
- 클래식(화면의 한 모서리의 전체 길이) "작업 표시줄"의 "시작" 버튼 형태일 수 있습니다.
○ xfce4-패널,
○ 메이트 패널/그놈 패널,
○ 발라패널,
○ 틴트2. - "MacOS 스타일 작업 표시줄"(전체 엣지 버전이 아님)을 선택할 수도 있지만, 많은 작업 표시줄을 두 버전 모두에서 표시할 수 있습니다. 여기서 가장 큰 차이점은 순전히 시각적인 면, 즉 "아이콘 위에 마우스를 올리면 아이콘이 확대되는 효과"가 있다는 점입니다.
○ 부두,
○ 라떼독,
○ 카이로-독,
○ 판자. - 또는 단축키를 누르면 애플리케이션을 실행하는 서비스(많은 데스크톱 환경에는 사용자가 단축키를 직접 설정할 수 있는 유사한 구성 요소가 있음):
○ sxhkd.
- 또한 다양한 메뉴 형태의 "런처"(영어 Launch(런치)에서 시작)가 있습니다.
○ dmenu-실행,
○ 로피-쇼 드런,
○ 앨버트,
○ 으르렁.

DE 구성 요소: WM(Window Manager)
WM(Window Manager)은 창을 관리하는 애플리케이션으로, 다음과 같은 기능을 추가합니다.
- 바탕 화면 주변으로 창을 이동합니다(창의 어느 부분에서든 Alt 키를 누르고 있는 표준 방법 포함, 제목에서만이 아님)
- 예를 들어 "창 프레임"을 끌어서 창 크기를 조절합니다.
- 창 인터페이스에 "제목"과 애플리케이션을 최소화/최대화/닫기 위한 버튼을 추가합니다.
- 어떤 애플리케이션이 "초점"에 있는지에 대한 개념입니다.

가장 잘 알려진 DE를 나열해 보겠습니다(괄호 안은 기본적으로 사용되는 DE를 나타냈습니다).
- (그놈3),
- (친구),
- (그놈2),
- (계피),
- (KDE)
- (XFCE),
- .

DE 요소가 포함된 오래된 WM도 나열하겠습니다. 저것들. 윈도우 관리자 외에도 시작 버튼과 작업 표시줄과 같은 요소가 있는데, 이는 본격적인 DE에서 흔히 볼 수 있는 요소입니다. IceWM과 WindowMaker가 이미 2020년에 업데이트된 버전을 출시했다면 얼마나 "오래된" 버전일까요? "오래된" 버전이 아니라 "옛날 것"이라고 하는 게 더 정확할 것 같습니다.
- ,
- ,
- , , , ,
- ...





"클래식"("스택 창 관리자") 외에도 별도로 언급할 가치가 있습니다. 이를 통해 전체 화면에 창을 바둑판식으로 배열할 수 있으며, 일부 애플리케이션의 경우 전체 화면에 실행 중인 각 애플리케이션에 대해 별도의 데스크톱을 가질 수 있습니다. 이전에 이런 인터페이스를 사용한 적이 없는 사람들에게는 다소 특이할 수 있지만, 저는 이런 인터페이스를 꽤 오랫동안 사용해 왔기 때문에 매우 편리하다고 말할 수 있고, 이런 인터페이스에 금방 익숙해질 수 있습니다. 익숙해진 뒤에는 "고전적인" 윈도우 관리자가 더 이상 편리하지 않게 느껴집니다.
- ,
- ,
- ,
- ,
- ,
- 분위수,
- bspwm,
- 허브스트루프트움,
- ...
- 쌍둥이,
- .

프로젝트를 별도로 언급하는 것도 가치가 있습니다. 그리고 하드웨어 가속을 사용하여 투명도, 그림자 및 다양한 3D 효과를 표시하는 "복합 창 관리자"라는 개념이 있습니다. 약 10년 전, 3D 효과가 폭발적으로 증가했습니다. Linux-데스크톱. 오늘날 데스크톱 환경에 내장된 많은 창 관리자는 합성 기능을 부분적으로 활용합니다. 최근에는, — Wayland에서 Compiz와 비슷한 기능을 가진 제품입니다.

다양한 창 관리자의 자세한 목록도 다음에서 찾을 수 있습니다. .
DE 구성 요소: 기타
다음 데스크톱 구성 요소도 주목할 만합니다(여기서는 애플리케이션 유형을 설명하기 위해 확립된 영어 용어를 사용했으며, 이는 애플리케이션 자체의 이름이 아닙니다).
- 애플릿:
- 소프트웨어(위젯 툴킷) - 종종 특정 "최소 세트"의 소프트웨어가 환경과 함께 제공됩니다.
DE(데스크톱 환경)
위에 나열된 구성 요소는 소위 "데스크톱 디자인 환경"을 만듭니다. 종종 모든 구성 요소가 동일한 그래픽 라이브러리와 동일한 디자인 원칙을 사용하여 개발됩니다. 이런 방식을 사용하면 적어도 애플리케이션의 모양에 대한 공통적인 스타일이 유지됩니다.
현재 존재하는 데스크톱 환경은 다음과 같습니다.
가장 흔한 것은 GNOME과 KDE이고, XFCE가 바로 그 뒤를 따릅니다.

다양한 매개변수의 비교는 표 형태로 해당 항목에서 확인할 수 있습니다. .
DE 품종

역사 속에도 흥미로운 사례들이 있습니다. 2003년부터 2007년까지 Linux 썬 마이크로시스템즈에서 "프로젝트 루킹 글래스(Project Looking Glass)"라는 3D 데스크톱 테마를 만들었습니다. 저도 이 테마를 사용해 봤는데, 정확히 말하면 사용하기가 어려워서 "살짝 만져봤다"고 하는 게 맞습니다. 이 "3D 테마"는 3D 그래픽 카드가 없던 시절에 자바로 작성되었기 때문에 모든 효과를 프로세서가 다시 계산해야 했습니다. 따라서 컴퓨터 성능이 매우 좋아야 했고, 그렇지 않으면 모든 것이 느리게 작동했습니다. 하지만 결과물은 정말 아름다웠습니다. 3D 애플리케이션 패널을 회전시키고 펼칠 수 있었고, 360도 파노라마 배경화면이 있는 원통형 데스크톱 안에서 회전할 수도 있었습니다. "CD 체인저" 형태로 음악을 듣는 것과 같은 멋진 애플리케이션도 여러 개 있었습니다. 유튜브에서 영상을 찾아보실 수 있습니다. 이 프로젝트에 관해서는, 그 당시에는 고품질의 영상을 업로드할 방법이 없었기 때문에 영상의 품질이 좋지 않을 가능성이 높습니다.

가벼운 작업대. 이 프로젝트는 1996년부터 꽤 오랫동안 진행되어 왔습니다. 최근 몇 년 동안 많은 배포판에서 가볍고 "클래식한" 데스크톱 인터페이스를 필요로 하는 무거운 KDE와 GNOME과 대조적으로 이 프로젝트는 꽤 인기를 얻었습니다. 많은 설정과 자체 프로그램이 있습니다: 터미널(xfce4-terminal), 파일 관리자(thunar), 이미지 뷰어(ristretto), 텍스트 편집기(mousepad).

Elementary OS 배포판에서 사용됩니다. 특정 배포판 내에서 개발 및 사용되는 데스크톱 환경이 다른 배포판에서는 널리 사용되지 않거나 아예 사용되지 않는 경우가 종종 있습니다. 적어도 아직까지는 인기를 얻거나 많은 사용자에게 그 장점을 설득하지 못했습니다. Pantheon은 Elementary OS와 유사한 인터페이스를 구축하는 것을 목표로 합니다. macOS.

도크 패널이 있는 옵션:

그래픽 효과와 위젯에 큰 중점을 두었습니다(다른 데스크톱 환경에 달력/시계와 같은 데스크톱 위젯이 없던 시절부터). 자체 라이브러리를 사용합니다. 자체적으로 "아름다운" 응용 프로그램이 많이 있습니다. 터미널(Terminology), 비디오 플레이어(Rage), 사진 뷰어(Ephoto) 등이 있습니다.

이것은 Bodhi 배포판에서 사용되는 Enlightenment17의 포크 버전입니다.Linux.

원래는 KDE에 대한 대항마로 만들어진 "클래식" 데스크톱 인터페이스로, QT 라이브러리를 기반으로 작성되었으며, 당시 상업용 배포에는 그다지 편리하지 않은 라이선스로 배포되었습니다.

세 번째 버전부터 GNOME에는 GNOME Shell이 제공되었는데, 이는 "비고전적인 모습"을 가지고 있어 모든 사용자가 좋아하지는 않았습니다(사용자는 인터페이스의 급격한 변화를 받아들이기 어렵습니다). 그 결과, 이 데스크탑을 "클래식" 스타일로 계속 개발하는 포크 프로젝트인 MATE와 Cinnamon이 등장했습니다. 많은 상업용 배포판에서 기본적으로 사용됩니다. 다양한 설정과 자체 응용 프로그램이 있습니다.

GNOME2를 기반으로 만들어졌으며 이러한 디자인 환경을 계속 개발하고 있습니다. GNOME2에서 사용되었던 많은 수의 설정과 애플리케이션 포크가 포함되어 있습니다(새로운 이름이 사용됨). 이는 포크와 GNOME3의 새로운 버전을 혼동하지 않기 위해서입니다.

GNOME Shell의 포크로, 사용자에게 "클래식" 스타일 인터페이스(GNOME2에서와 같음)를 제공합니다.
GNOME Shell과 동일한 응용 프로그램과 많은 수의 설정을 제공합니다.

Solus 배포판의 일부로 개발되었지만, 현재는 다양한 다른 배포판에서 독립형 데스크톱으로 제공되는 GNOME의 "클래식" 스타일 포크입니다.

(또는 종종 간단히 KDE라고 불립니다)
KDE 프로젝트에서 개발한 데스크톱 환경.
이 데스크톱에는 그래픽 인터페이스에서 일반 사용자가 사용할 수 있는 수많은 설정이 있으며, 이 데스크톱 내에서 개발된 많은 그래픽 애플리케이션도 있습니다.

2008년에 KDE는 새로운 구현체인 KDE Plasma를 출시했습니다(데스크톱 엔진은 대대적으로 다시 작성되었습니다). GNOME/MATE와 마찬가지로 모든 KDE 팬이 이를 좋아한 것은 아닙니다. 그 결과, 이전 버전의 개발을 계속하는 프로젝트 포크가 등장했는데, 이를 TDE(Trinity Desktop Environment)라고 합니다.

Qt(KDE에서 사용하는 것과 동일한 언어)로 작성된 새로운 데스크톱 환경 중 하나입니다. 다양한 사용자 지정 옵션과 상당히 아름답고(주관적일 수 있음) 정교한 인터페이스를 제공합니다. Deepin 배포판의 일부로 개발되고 있습니다. Linux다른 배포판용 패키지도 있습니다.

파리
Qt를 사용하여 작성된 데스크톱 환경의 예시입니다. 배포판의 일부로 개발되었습니다. Astra Linux.

가벼운 데스크톱 환경. 이전의 여러 예와 마찬가지로 이 예제도 Qt를 사용하여 작성되었습니다. 실제로 이는 LXDE 프로젝트의 연장선이며 Razor-qt 프로젝트와 합병된 결과입니다.
보시다시피, 바탕화면은 다음과 같습니다. Linux 인터페이스는 매우 다양하게 디자인될 수 있으며, 3D 효과가 있는 아름다운 인터페이스부터 미니멀한 인터페이스, "고전적인" 인터페이스부터 독특한 인터페이스, 시스템 리소스를 많이 사용하는 인터페이스부터 가벼운 인터페이스, 대형 화면부터 태블릿/스마트폰용 인터페이스까지 모든 취향에 맞는 다양한 종류가 있습니다.
자, 제가 운영체제의 그래픽과 데스크톱을 구성하는 주요 요소들에 대한 개략적인 설명을 드렸기를 바랍니다. Linux.
본 기사의 자료는 2020년 XNUMX월에 진행된 웨비나에서 테스트되었습니다. 시청할 수 있습니다 .
그게 전부입니다. 도움이 되었으면 좋겠습니다. 질문이나 의견이 있으시면 적어주세요. 기꺼이 답변해드리겠습니다. 그럼 와서 공부하세요 !
출처 : habr.com
