KDE 애플리케이션은 Gnome에서 어떻게 실행됩니까?


19

Gnome이 GTK +를 사용하고 KDE가 Qt를 사용하는 경우 Kno 애플리케이션이 Gnome에서 어떻게 실행될 수 있습니까?

답변:


30

GTK와 Qt는 모두 그래픽 인터페이스를 구축하기위한 툴킷 입니다. 각 UI 툴킷은 프로그램이 위젯 (단추, 텍스트 상자 ...)을 작성하기위한 고유 한 기능을 제공하며 그래픽 프로그램이 링크 되는 라이브러리 형식으로 제공됩니다 . 그놈 용으로 작성된 프로그램은 GTK ( libgdklibgtk)를 사용하는 반면 KDE 프로그램은 Qt ( libQtCorelibQtGui)를 사용하고 계몽 프로그램은 EFL 등을 사용합니다.

그러나 이러한 모든 툴킷 은 동일한 X 윈도우 시스템 및 동일한 X11 프로토콜을 사용합니다 . 화면에 항목을 표시하기 위해 툴킷은 실행중인 X 서버 (일반적으로 XFree, 이전에는 XFree86이라고 함)에 연결하고 X11 명령 (창 만들기, 창에 무언가 그리기)을 보내고 X11 입력 이벤트 (마우스, 키보드, 창 크기 조정)를받습니다. , & c) 뒤로.

(GTK, Qt 또는 EFL과 같은 대부분의 최신 툴킷은 멋진 드로잉 자체를 수행하고 X11을 사용하여 전체 윈도우의 완성 된 이미지를 전송하면 X 서버는 이미지를 화면에 표시합니다. lXaw 또는 Motif와 같은 이전 툴킷은 대신 사용합니다. X11은 선, 사각형 또는 텍스트와 같은 프리미티브를 그리며 X 서버는 모든 렌더링을 수행합니다.)

그런 다음 X 서버는 모든 것을 하나로 모으고 그래픽 카드와 대화하는 등의 작업을 수행합니다. 이러한 방식으로 다양한 툴킷의 다양한 버전을 사용하는 프로그램을 실행할 수 있습니다. 결국 동일한 OS 기능 만 사용하기 때문입니다.

정책이 아닌 메커니즘

다중 툴킷 상황은 X에 고유하지 않습니다. 예를 들어 표준을 사용하는 Windows 프로그램 comctl32뿐만 아니라 WPF, .NET WinForms, Chrome의 Aura, Firefox의 XUL 및 심지어 동일한 GTK 또는 Qt를 사용합니다. 대부분의 게임은 자체 스타일 컨트롤을 사용합니다. 실제로 이것은 전체 창에서 이미지를 그릴 수 있는 모든 그래픽 시스템 에서 가능 합니다.

그러나 X원칙 중 하나 는 "정책이 아니라 메커니즘"이었습니다. 이는 X 서버가 클라이언트 (그래픽 프로그램)가 다양한 작업을 수행 할 수있는 메커니즘 만 제공하지만 필요한만큼 규칙을 적용하지 않음을 의미 합니다 . 다시 말해, X는 이것을 다른 그래픽 시스템보다 훨씬 더 많이 사용합니다.

예를 들어 그래픽 시스템의 핵심 부분 중 하나는 창 관리입니다. 각 창 주위에 프레임 그리기 (일명 장식), 창 이동 및 크기 조정 기능 등이 있습니다. Windows 및 OS X에는 시스템에 창 관리자가 내장되어 있지만 X에서는 별도의 프로그램으로 실행됩니다. X.Org 제품군에는 최소한의 twm데스크톱 환경이 있으며 자체 창 관리자가 제공됩니다 (GNOME은 Sawfish, Metacity, gnome-shell; KDE는 각각의 데스크탑 환경과의 통합을 제공합니다.

툴킷과 마찬가지로 현대적인 "합성"창 관리자는 Xorg의 모든 창을 최종 화면 이미지로 구성하는 작업을 대신하여 그림자 나 효과 등을 추가 할 수 있습니다.

최신 데스크톱 환경에서는 실제로 문제가 발생했습니다. 가장 일반적인 예를 사용하려면 : 동일한 "잡기 키보드"기능이 핫키에서 사용됩니다. 팝업 메뉴; 스크린 세이버가 있으며 한 번에 한 프로그램 만 사용할 수 있습니다 이는 팝업 메뉴가 열려있는 동안 화면을 잠 그거나 화면이 잠겨있는 동안 노래를 건너 뛸 수 없음을 의미합니다. Wayland가 X11을 대체하기 위해 만들어지는 몇 가지 이유 중 하나입니다.

사이드 노트

기술적으로 이것은 심지어 다른 컴퓨터에서 X 프로그램을 실행하여 네트워크를 통해 컴퓨터의 X 서버와 통신 할 수 있음을 의미합니다. 실제로 이것은 초기 의 주요 사용 사례였으며 처음에는 "X server "라는 이름 이 사용되었습니다. Mac에서 X 서버를 실행하고 Linux, FreeBSD, 심지어 OpenVMS에서 실행되는 프로그램으로 만든 창을 표시 할 수 있습니다.

그러나 위에서 언급했듯이 현대 툴킷은 모든 그리기 클라이언트 측을 수행하며 (멋진 그래픽과 예쁜 글꼴은 X11 기본 요소와는 매우 어렵습니다) 최종 이미지를 X 서버로만 푸시합니다. 네트워크 대역폭의 상당한 비트.

RFB (일명 VNC) 또는 Microsoft의 "원격 데스크톱"과 같은 다른 프로토콜은이를 위해 설계되었으며 창 이미지를 압축하는 매우 효율적인 방법이 있습니다.


1
Qt의 이벤트 루프는 GTK를 래핑하므로 동일한 응용 프로그램에서 Qt와 GTK 코드를 결합 할 수도 있습니다 (일반적으로 플러그인과 같이 제공).
Alex P

@Alex : Qt의 이벤트 루프가 GTK에 이벤트를 전달할 수 있다는 "포장"을 의미 했습니까, 아니면 Qt가 실제로 이벤트 루프를 위해 GLib에 의존한다고 말하고 있습니까?
grawity

1
Qt는 자체 순수 이벤트 루프 구현도 사용할 수 있지만 기본적으로 Glib을 래핑합니다 (적어도 Qt4에서는 Qt5의 작동 방식을 보지 못했습니다). 런타임에이를 제어하는 ​​숨겨진 플래그 ($ QT_NO_GLIB)가 있습니다.
Alex P

7

이에 대한 대답 중 하나는 주요 데스크톱 환경 (Gnome, KDE, XFCE 등)이 http://freedesktop.org 에서 함께 작동 하여 이러한 상호 운용성을 가능하게한다는 것입니다. FD.o 에서 발표 한 사양 중 하나는 EWMH 입니다.이 기능은 창 관리자간에 특정 수준의 호환성을 보장합니다 (기본 창 관리가 아닌 최신 기능의 경우).


4

그놈에서 실행될 때 KDE 응용 프로그램은 여전히 ​​자신이 의존하는 공유 Qt 라이브러리를 호출합니다. 다른 데스크탑 환경에서 모든 응용 프로그램을 실행하는 경우에도 마찬가지입니다. 그들은 무엇을 호출 할 수 있고 무엇을 할 수 없는지 제한하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.