KDE 프레임워크
1. 개요
KDE 프레임워크는 KDE 애플리케이션 개발을 위한 라이브러리 및 프레임워크 모음이다. KDE 프레임워크는 KDElibs 1에서 시작되었으며, KDE 플랫폼 4를 기반으로 하는 KDE 프레임워크 5를 거쳐 Qt 6 기반의 KDE 프레임워크 6가 2024년에 출시되었다. 이 프레임워크는 70개 이상의 패키지로 구성되어 있으며, Qt에만 의존하는 계층 1부터 복잡한 종속성을 가진 계층 3까지 다양한 계층 구조를 갖는다. C++로 작성되었지만, 파이썬, 루비, 펄 등 다양한 언어 바인딩을 지원하며, Kirigami와 같은 QML 애플리케이션 프레임워크를 포함하여 다양한 애플리케이션에서 활용되고 있다.
이미지 준비중입니다.
| 개발자 | KDE |
|---|---|
| 최초 릴리스 | 2014년 7월 1일 |
| 프로그래밍 언어 | C++ (Qt) |
| 운영체제 | 크로스 플랫폼 (Android, Windows, macOS, Haiku 부분 지원) |
| 종류 | 시스템 라이브러리 소프트웨어 프레임워크 |
| 라이선스 | GNU 약소 일반 공중 사용 허가서 (LGPL) |
-
KDE 프레임워크 -
KIO
-
KDE 프레임워크 -
KHTML
KHTML은 KDE 프로젝트에서 개발되어 Konqueror의 렌더링 엔진으로 사용되었으며, HTML, CSS, JavaScript 등 다양한 웹 표준을 지원했지만, 2016년에 개발이 중단되었다. -
X 라이브러리 -
XCB
XCB는 X 윈도 시스템과 통신하기 위한 C 라이브러리로, Xlib를 대체하며 더 작고 현대적인 형태, X11 프로토콜 직접 접근, XML 프로토콜 설명을 통한 확장 용이성, 비동기 통신 지원을 특징으로 한다. -
X 라이브러리 -
Xlib
Xlib는 X 윈도우 시스템의 클라이언트 측 라이브러리로, C 언어로 작성되어 X 프로토콜을 직접 구현하며 창 생성, 그래픽 처리, 사용자 입력 관리 등 클라이언트 프로그램이 X 서버와 통신하는 데 필요한 기본적인 함수들을 제공한다. -
KDE 소프트웨어 -
KDE 네온
KDE 네온은 우분투 기반의 리눅스 배포판으로, KDE Plasma 데스크탑 환경과 KDE 애플리케이션의 최신 개발 버전을 제공하는 데 중점을 둔다. -
KDE 소프트웨어 -
KDE 플라스마 4
KDE 플라스마 4는 KDE에서 개발한 데스크톱 환경으로, 다양한 장치 지원, 데이터 엔진과 시각화 분리를 통한 개발 효율성 증대, 위젯 사용자 정의 기능 강화, 다목적 도구인 KRunner 통합, 그리고 다양한 작업 공간 제공을 특징으로 한다.
2. 역사
KDE 프레임워크의 역사는 KDE 프로젝트 초창기의 KDElibs 1 버전까지 거슬러 올라간다. 이후 KDE 플랫폼 4 시대를 거쳐, 2013년 8월 Qt 라이브러리가 버전 5로 업데이트되면서 큰 변화를 맞이하게 되었다.
이 전환 과정의 핵심은 기존의 단일 패키지였던 KDE 플랫폼을 여러 개의 독립적인 모듈로 분리하는 모듈화였다. 이 결과로 등장한 [[KDE 프레임워크 5]]는 Qt 5 버전을 기반으로 개발되었으며, 이는 사용자 인터페이스 개발에 QML 활용도를 높이는 계기가 되었다. 모듈화 덕분에 개발자들은 필요한 기능만 선택적으로 사용할 수 있게 되었고, 다른 Qt 기반 애플리케이션에서의 재사용성 및 의존성 관리가 용이해졌다.
또한, KDE 소프트웨어 컴필레이션이 KDE 프레임워크 5, KDE 플라즈마 5, KDE 응용 프로그램으로 분할되면서 각 프로젝트는 독립적인 개발 및 릴리스 주기를 갖게 되었다. KDE 프레임워크는 Git을 사용하여 매달 새로운 버전을 출시하는 방식으로 개발되었으며, 이전 버전과의 호환성도 유지했다.
KDE 프레임워크 5.0은 여러 테스트 단계를 거쳐 2014년 7월 7일에 정식 출시되었고, 이후 파이어폭스 통합 개선 등 새로운 기능들이 꾸준히 추가되었다.
2024년 2월 28일, KDE 프로젝트의 대규모 업데이트인 '메가릴리스 6'의 일환으로 Qt 6 기반으로 업그레이드된 [[KDE 프레임워크 6]]가 출시되어 현재에 이르고 있다.
2.1. KDE 프레임워크의 기원
KDE 프레임워크의 소스 코드는 KDE 프로젝트 초창기의 KDElibs 1 버전부터 존재해 왔다. KDE SC 4 시기에는 KDE 플랫폼이라는 이름으로 불렸으며, 당시 KDE 플라즈마 작업 환경과 여러 KDE 애플리케이션 구동에 필요한 모든 라이브러리와 서비스를 포함하는 단일 패키지 형태였다. 이 플랫폼에는 솔리드, 네포묵, 포논과 같은 핵심 구성 요소들이 포함되어 있었고, 이들은 주로 LGPL, BSD 라이선스, MIT 라이선스, X11 라이선스와 같은 자유 소프트웨어 라이선스 하에 배포되었다.
Qt 라이브러리가 버전 5로 업데이트되면서, KDE 개발 커뮤니티는 기존의 거대한 KDE 플랫폼을 보다 유연하고 독립적인 모듈 구조로 전환하기로 결정했다. 이 전환 작업은 2013년 8월에 시작되었으며, KDE의 주요 기술 기여자들에 의해 주도되었다.
이러한 노력의 결과로 등장한 것이 KDE 프레임워크 5이다. 'KDE 프레임워크'라는 이름으로 출시된 첫 번째 버전이지만, 실제 코드 기반은 KDE 플랫폼의 마지막 주요 버전인 버전 4를 계승하고 발전시킨 것이다. KDE 프레임워크 5의 가장 큰 개선점은 모듈화에 있다. 이전 KDE 플랫폼이 모든 라이브러리를 하나의 큰 패키지로 묶었던 것과 달리, 프레임워크 5에서는 기능별로 잘게 나뉜 작은 라이브러리 패키지들로 구성되었다. 이를 통해 개발자들은 필요한 기능만 선택적으로 사용할 수 있게 되었고, 다른 Qt 기반 애플리케이션에서도 KDE 기술을 더 쉽게 활용할 수 있게 되었으며, 프로그램 간의 의존성 문제도 크게 줄일 수 있었다.
기술적으로 KDE 4는 Qt 4 버전을 기반으로 했지만, KDE 프레임워크 5는 Qt 5 버전을 기반으로 개발되었다.
2.2. KDE 프레임워크 5로의 전환 (2013년 ~ 2024년)
KDE 플랫폼에서 KDE 프레임워크로의 전환은 2013년 8월에 시작되었으며, KDE의 주요 기술 기여자들이 이 과정을 이끌었다. KDE 프레임워크의 소스 코드는 KDElibs 1부터 존재해 왔으며, 코드 기반이 KDE 플랫폼 4 (KDE 플랫폼의 유일한 주요 버전)였기 때문에 KDE 프레임워크로의 첫 번째 릴리스는 버전 5로 명명되었다.
KDE 프레임워크 5의 주요 개선점은 모듈화 강화이다. 이전 KDE SC 4 시절의 KDE 플랫폼 4는 KDE 플라즈마와 애플리케이션에 필요한 모든 라이브러리와 서비스(KDElibs)를 단일 대형 패키지로 묶었지만, Qt 5부터 이 플랫폼은 현재 KDE 프레임워크라고 불리는 일련의 작은 모듈로 분할되었다. 여기에는 솔리드, 네포묵, 포논 등이 포함되며, LGPL, BSD 라이선스, MIT 라이선스 또는 X11 라이선스 하에 라이선스가 부여된다. 이러한 모듈화를 통해 다른 Qt 기반 소프트웨어에서 KDE 라이브러리를 더 쉽게 사용하고 종속성을 최소화할 수 있게 되었다.
KDE 4가 Qt 4 버전을 기반으로 하는 반면, 프레임워크 5는 Qt 5 버전을 기반으로 한다. Qt 5를 기반으로 함으로써, 자바스크립트 기반의 선언형 프로그래밍 프로그래밍 언어인 QML을 사용자 인터페이스 설계에 더 광범위하게 사용할 수 있게 되었다. QML이 사용하는 그래픽 렌더링 엔진은 다양한 장치에서 더 유연한 사용자 인터페이스를 가능하게 한다.
KDE 소프트웨어 컴필레이션이 KDE 프레임워크 5, KDE 플라즈마 5, KDE 응용 프로그램으로 분할된 이후, 각 하위 프로젝트는 자체 개발 속도를 선택할 수 있게 되었다. KDE 프레임워크는 버전 관리 시스템으로 Git을 사용하며, 매달 새로운 버전을 릴리스한다. KDE 플랫폼 4 런타임과 KDE 프레임워크 5 런타임을 함께 설치하여 애플리케이션에서 필요에 따라 둘 중 하나를 사용할 수 있도록 지원한다.
KDE 프레임워크 5.0은 기술 미리 보기, 두 번의 알파 릴리스, 세 번의 베타 릴리스를 거쳐 2014년 7월 7일에 정식 출시되었다. 초기 릴리스 이후, 개발자들은 KDE 프레임워크 5의 구성 요소에 새로운 기능을 추가하는 데 집중했으며, 그 예로 파이어폭스와 KDE의 통합성을 향상시키는 작업이 있었다.
다음은 KDE 프레임워크 5의 주요 릴리스 기록이다.
| 릴리스 기록 | ||
|---|---|---|
| 버전 | 날짜 | 비고 |
| 5.0 | 2014년 7월 7일 | 초기 릴리스, Qt 5.2 필요 |
| 5.1 | 2014년 8월 7일 | |
| 5.2 | 2014년 9월 12일 | |
| 5.3 | 2014년 10월 7일 | |
| 5.4 | 2014년 11월 6일 | |
| 5.5 | 2014년 12월 11일 | |
| 5.6 | 2015년 1월 8일 | 새로운 프레임워크: KPackage, NetworkManagerQt |
| 5.7 | 2015년 2월 14일 | |
| 5.8 | 2015년 3월 13일 | 새로운 프레임워크: KPeople, KXmlRpcClient |
| 5.9 | 2015년 4월 10일 | 새로운 프레임워크: ModemManagerQt |
| 5.10 | 2015년 5월 8일 | |
| 5.11 | 2015년 6월 12일 | 새로운 프레임워크: BlueZ-Qt (BlueZ 참조) |
| 5.12 | 2015년 7월 10일 | |
| 5.13 | 2015년 8월 12일 | 새로운 프레임워크: Baloo (NEPOMUK 대체), KFileMetaData. Qt 5.3 필요 |
| 5.14 | 2015년 9월 11일 | |
| 5.15 | 2015년 10월 10일 | |
| 5.16 | 2015년 11월 13일 | |
| 5.17 | 2015년 12월 12일 | |
| 5.18 | 2016년 1월 9일 | |
| 5.19 | 2016년 2월 13일 | |
| 5.20 | 2016년 3월 13일 | |
| 5.21 | 2016년 4월 9일 | 새로운 프레임워크: KActivities-stats. Qt 5.4 필요 |
| 5.22 | 2016년 5월 15일 | 새로운 프레임워크: KWayland |
| 5.23 | 2016년 6월 13일 | |
| 5.24 | 2016년 7월 9일 | |
| 5.25 | 2016년 8월 13일 | Qt 5.5 이상 필요 |
| 5.26 | 2016년 9월 10일 | |
| 5.27 | 2016년 10월 8일 | |
| 5.28 | 2016년 11월 15일 | 새로운 프레임워크: KSyntaxHighlighting |
| 5.29 | 2016년 12월 12일 | 새로운 프레임워크: Prison (QR 코드 생성 지원) |
| 5.30 | 2017년 1월 14일 | KPackage에 KNewStuff 지원 추가 |
| 5.31 | 2017년 2월 11일 | 다수 모듈에 Python 바인딩 추가. Qt 5.6 이상 필요 |
| 5.32 | 2017년 3월 11일 | |
| 5.33 | 2017년 4월 8일 | |
| 5.34 | 2017년 5월 13일 | |
| 5.35 | 2017년 6월 1일 | |
| 5.36 | 2017년 7월 8일 | |
| 5.37 | 2017년 8월 13일 | 새로운 프레임워크: Kirigami. Qt 5.7 이상 필요 |
| 5.38 | 2017년 9월 9일 | |
| 5.39 | 2017년 10월 14일 | |
| 5.40 | 2017년 11월 11일 | |
| 5.41 | 2017년 12월 10일 | |
| 5.42 | 2018년 1월 13일 | |
| 5.43 | 2018년 2월 12일 | 새로운 프레임워크: KHolidays |
| 5.44 | 2018년 3월 10일 | |
| 5.45 | 2018년 4월 14일 | |
| 5.46 | 2018년 5월 12일 | |
| 5.47 | 2018년 6월 9일 | |
| 5.48 | 2018년 7월 14일 | |
| 5.49 | 2018년 8월 11일 | |
| 5.50 | 2018년 9월 8일 | |
| 5.51 | 2018년 10월 15일 | |
| 5.52 | 2018년 11월 10일 | |
| 5.53 | 2018년 12월 9일 | |
| 5.54 | 2019년 1월 12일 | |
| 5.55 | 2019년 2월 9일 | |
| 5.56 | 2019년 3월 9일 | |
| 5.57 | 2019년 4월 13일 | |
| 5.58 | 2019년 5월 13일 | |
| 5.59 | 2019년 6월 8일 | |
| 5.60 | 2019년 7월 13일 | |
| 5.61 | 2019년 8월 10일 | |
| 5.62 | 2019년 9월 14일 | |
| 5.63 | 2019년 10월 12일 | |
| 5.64 | 2019년 11월 10일 | |
| 5.65 | 2019년 12월 14일 | |
| 5.66 | 2020년 1월 11일 | |
| 5.67 | 2020년 2월 9일 | |
| 5.68 | 2020년 3월 15일 | |
| 5.69 | 2020년 4월 11일 | |
| 5.70 | 2020년 5월 9일 | |
| 5.71 | 2020년 6월 13일 | |
| 5.72 | 2020년 7월 11일 | |
| 5.73 | 2020년 8월 8일 | |
| 5.74 | 2020년 9월 12일 | |
| 5.75 | 2020년 10월 10일 | |
| 5.76 | 2020년 11월 7일 | |
| 5.77 | 2020년 12월 12일 | |
| 5.78 | 2021년 1월 9일 | |
| 5.79 | 2021년 2월 13일 | |
| 5.80 | 2021년 3월 13일 | |
| 5.81 | 2021년 4월 10일 | |
| ... | ... | (이후 버전 생략) |
KDE 프로젝트의 '메가릴리스 6'의 일환으로, 2024년 2월 28일에 KDE 프레임워크 6가 출시되었으며, 이는 Qt 6 기반으로 업그레이드되었다. 이로써 KDE 프레임워크 5 시대는 마무리되었다.
2.3. KDE 프레임워크 6 출시 (2024년 ~ 현재)
메가릴리스 6의 일환으로, 2024년 2월 28일에 KDE 프레임워크 6가 출시되었으며, Qt 6 기반으로 업그레이드되었다.
3. 소프트웨어 아키텍처
KDE 프레임워크는 Qt를 기반으로 하며, 사용자 인터페이스 설계를 위해 자바스크립트 기반의 선언적 프로그래밍 언어인 QML을 폭넓게 사용한다. QML이 사용하는 그래픽 렌더링 엔진은 다양한 장치에서 유연한 사용자 인터페이스를 가능하게 한다.
KDE 소프트웨어 컴필레이션이 KDE 프레임워크 5, KDE 플라즈마 5, KDE 응용 프로그램으로 분할된 이후, 각 하위 프로젝트는 자체적인 개발 속도를 가질 수 있게 되었다. KDE 프레임워크는 매달 새로운 버전이 릴리스되며, 버전 관리 시스템으로는 Git을 사용한다.
KDE 프레임워크는 명확한 의존성 구조를 가지고 있으며, 이는 실행 시 의존 관계를 나타내는 "범주(Categories)"와 컴파일 시 다른 프레임워크에 대한 의존 관계를 나타내는 "계층(Tiers)"으로 나뉜다. 이러한 구조는 프레임워크의 모듈성과 재사용성을 높이는 데 기여한다.
또한, KDE 프레임워크 5는 기존 KDE 플랫폼 4 런타임과 함께 설치될 수 있어, 애플리케이션 개발자가 필요에 따라 두 환경 중 하나를 선택하여 사용할 수 있는 유연성을 제공한다.
3.1. 구조
KDE 프레임워크는 명확한 의존성 구조를 가지고 있으며, 이는 "범주(Categories)"와 "계층(Tiers)"으로 나뉜다. "범주"는 실행 시(런타임)의 의존 관계를 나타낸다.
* 기능 요소(Functional Elements): 실행 시 의존 관계가 없다.
* 통합(Integration): OS나 플랫폼에서 제공하는 기능에 따라 통합을 위해 실행 시 의존 관계가 필요할 수 있는 코드를 지정한다.
* 솔루션(Solutions): 필수적인 실행 시 의존 관계를 가진다.
"계층"은 컴파일 시 다른 프레임워크에 대한 의존 관계를 나타낸다.
* 제1 계층(Tier 1): 프레임워크 내부에 다른 프레임워크에 대한 의존 관계가 없으며, Qt나 다른 관련 라이브러리만 필요하다.
* 제2 계층(Tier 2): 제1 계층 프레임워크에만 의존할 수 있다.
* 제3 계층(Tier 3): 제1 계층이나 제2 계층 프레임워크, 그리고 다른 제3 계층 프레임워크에 의존할 수 있다.
기존 KDE 플랫폼 4 런타임과 KDE 프레임워크 5 런타임을 모두 설치하여 애플리케이션이 둘 중 하나를 선택하여 사용할 수 있다.
3.2. 구성 요소
KDE 프레임워크는 Qt를 기반으로 하며, 이는 사용자 인터페이스 설계를 위해 더 간단한 자바스크립트 기반의 선언적 프로그래밍 언어인 QML의 더 광범위한 사용을 가능하게 한다. QML이 사용하는 그래픽 렌더링 엔진은 다양한 장치에서 더 유연한 사용자 인터페이스를 가능하게 한다.
KDE 소프트웨어 컴필레이션이 KDE 프레임워크 5, KDE 플라즈마 5 및 KDE 응용 프로그램으로 분할된 이후, 각 하위 프로젝트는 자체 개발 속도를 선택할 수 있다. KDE 프레임워크는 매달 릴리스되며 Git을 사용한다.
KDE 프레임워크는 KDE 플랫폼 4와 함께 설치하여 앱에서 둘 중 하나를 사용할 수 있도록 해야 한다.
KDE 프레임워크 번들은 70개 이상의 패키지로 구성되어 있다. 이들은 KDE SC 4에서 `kdelibs`라는 단일 대형 패키지로 존재했다. Kdelibs는 여러 개별 프레임워크로 분할되었으며, 그 중 일부는 더 이상 KDE의 일부가 아니지만 Qt 5.2에 통합되었다.
KDE 프레임워크는 다른 라이브러리에 대한 종속성에 따라 네 가지 계층으로 그룹화된다.
* 프레임워크 계층:
계층 1 – 주로 Qt에만 의존하며, 이식성이 뛰어나다.
계층 2 – 계층 1에 의존하지만, 종속성을 여전히 관리할 수 있다.
계층 3 – 계층 1–2 등을 포함한 복잡한 종속성.
계층 4 – 플랫폼 지원과 같은 추가 기능을 제공하는 대부분의 플러그인은 무시할 수 있다.
{| class="wikitable sortable" style="width:100%; margin-top:0; text-align:left;"
|+ 프레임워크 전체 목록
|-
! 이름
! 계층
! Git 저장소
! 설명
|-
| Frameworkintegration
| 4
| frameworkintegration.git
| Framework Integration은 KDE Plasma 작업 공간에서 실행할 때 Qt 애플리케이션의 더 나은 통합을 담당하는 플러그인 세트이다. 애플리케이션은 이 플러그인에 직접 연결할 필요가 없다. KF5Style 라이브러리는 Qt 스타일에 대한 KDE Plasma 작업 공간 설정과의 통합을 제공한다. KDE Plasma 작업 공간에서 다양한 설정을 자동으로 상속하여 일관된 사용자 경험을 제공하려면 KStyle에서 Qt 스타일을 파생시킨다. 예를 들어, 이는 일관된 단일 클릭 또는 이중 클릭 활성화 설정을 보장하고 표준 테마 아이콘을 사용한다.
|-
| KActivities
| 3
| kactivities.git
| KDE Activities의 활동 관리자에 대한 핵심 구성 요소.
|-
| KApiDox
| 4
| kapidox.git
| 표준 형식 및 스타일로 API 문서를 구축하기 위한 스크립트 및 데이터. 이 프레임워크에는 표준 형식 및 스타일로 API 문서(dox)를 구축하기 위한 스크립트와 데이터가 포함되어 있다. Doxygen 도구는 실제 문서 추출 및 서식을 수행하는 데 사용되지만, 이 프레임워크는 (대상 프레임워크 또는 다른 모듈의 설정을 읽는 것을 포함하여) 문서를 생성하는 것을 더 편리하게 해주는 래퍼 스크립트와 생성된 문서에 대한 표준 템플릿을 제공한다.
|-
| KArchive
| 1
| karchive.git
| zip 및 tar를 포함한 "아카이브" 형식의 간편한 읽기, 생성 및 조작을 위한 클래스.
|-
| KAuth
| 2
| kauth.git
| 권한 있는 사용자로 수행해야 하는 작업을 작은 헬퍼 유틸리티로 오프로드하는 편리하고 시스템 통합된 방법을 제공한다.
|-
| KBookmarks
| 3
| kbookmarks.git
| KBookmarks를 사용하면 "XBEL 형식"을 사용하여 저장된 책갈피에 액세스하고 조작할 수 있다. 책갈피의 가장 일반적인 용도는 웹 브라우저이지만, 로컬 파일 또는 URL을 책갈피로 저장할 수 있는 모든 애플리케이션에서도 유용할 수 있다.
|-
| KCMUtils
| 3
| kcmutils.git
| KDE 시스템 설정 모듈을 위한 유틸리티, i.a. KSettings. KCMUtils는 KCModule과 함께 작동하는 다양한 클래스를 제공한다. KCModule은 KConfigWidgets 프레임워크로 만들 수 있다.
|-
| KCodecs
| 1
| kcodecs.git
| KCodecs는 문자열 인코딩 라이브러리이며, 다양한 인코딩을 사용하여 문자열을 조작하는 메서드 모음을 제공한다. 문자열의 문자 집합을 자동으로 결정하고, XML 엔터티를 변환하고, 이메일 주소를 검증하고, QTextCodec보다 관대한 방식으로 이름으로 인코딩을 찾을 수 있다(예: 인터넷에서 오는 데이터에 유용함).
|-
| KCompletion
| 2
| kcompletion.git
| 문자열 자동 완성 프레임워크로, 자동 완성을 지원하는 lineedit와 combobox를 포함한다. 사용자가 완전히 독창적인 내용을 입력하는 대신 기존 데이터(이전에 입력한 내용 포함)에서 선택하려는 경우가 많은 파일 이름, 이메일 주소 및 기타 텍스트를 입력할 때, 사용자는 처음 몇 글자만 입력하고 애플리케이션이 선택 항목 집합을 제공하거나 입력하는 내용을 완성하려고 시도하면 유용하다고 생각하는 경우가 많다. 이메일 클라이언트, 셸 및 "파일 열기" 대화 상자는 종종 이 기능을 제공한다. 이 프레임워크는 Qt 기반 애플리케이션에서 이를 구현하는 데 도움이 된다. 이 프레임워크에서 제공하는 자동 완성 지원 위젯 중 하나를 사용하거나, 애플리케이션의 다른 위젯에 직접 통합할 수 있다.
시작하는 가장 쉬운 방법은 KComboBox, KHistoryComboBox 또는 KLineEdit를 사용하는 것이다. 자동 완성을 사용자 인터페이스의 다른 부분에 통합하려면 KCompletion을 사용하여 가능한 자동 완성을 관리하고 선택할 수 있다.
|-
| KConfig
| 1
| kconfig.git
| 플랫폼 독립적인 애플리케이션 설정의 영구 저장으로, KConfigCore와 KConfigGui의 두 부분으로 구성된다.
KConfigCore는 구성 파일 자체에 대한 액세스를 제공하며, 이는 또한 XML로 구성을 생성한다는 의미이다.
KConfigGui는 그래픽 제어 요소(위젯)를 구성에 연결하여 구성에서 자동으로 초기화하고 변경 사항을 해당 구성 파일에 자동으로 전파하는 방법을 제공한다.
|-
| KConfigWidgets
| 3
| kconfigwidgets.git
| 구성 대화 상자를 위한 그래픽 제어 요소 (위젯). 구성 대화 상자를 위한 위젯. KConfigWidgets는 구성 대화 상자를 만들기 위한 사용하기 쉬운 클래스와, 설정을 저장하기 위해 KConfig를 사용하는 위젯 세트를 제공한다.
|-
| KCoreAddons
| 1
| kcoreaddons.git
| 핵심 애플리케이션 기능 및 OS 액세스를 위한 유틸리티. Qt 애드온 라이브러리로, 비-GUI 유틸리티 모음이다. KCoreAddons는 mime 유형 조작, 파일 자동 저장, 백업 파일 생성, 임의 시퀀스 생성, 매크로 대체와 같은 텍스트 조작 수행, 사용자 정보 액세스 등과 같은 다양한 작업을 수행하기 위해 QtCore 위에 구축된 클래스를 제공한다.
|-
| KCrash
| 2
| kcrash.git
| 애플리케이션 충돌을 가로채고 처리하기 위한 지원을 제공한다.
|-
| KDBusAddons
| 1
| kdbusaddons.git
| KDBusAddons는 QtDBus 위에 편리한 DBus 클래스와 KDED 모듈을 생성하는 API를 제공한다.
|-
| KDeclarative
| 3
| kdeclarative.git
| Qt 선언적 확장
|-
| KDED
| 3
| kded.git
| KDED는 KDE 작업 공간의 중앙 데몬인 KDE 데몬을 의미한다. KDED는 백그라운드에서 실행되며 소규모 작업을 수행한다. 이러한 작업 중 일부는 내장되어 있으며, 다른 작업은 필요에 따라 시작된다.
|-
| KDesignerPlugin
| 3
| kdesignerplugin.git
| 이 프레임워크는 다양한 KDE 프레임워크에서 제공하는 위젯을 표시할 수 있도록 Qt Designer용 플러그인과, ini 스타일 설명 파일에서 다른 플러그인을 생성하는 데 사용할 수 있는 유틸리티(kgendesignerplugin)를 제공한다.
|-
| KDESu
| 3
| kdesu.git
| KDESU (KDE 슈퍼 유저)는 루트 권한으로 셸 명령을 실행하기 위한 사용자 인터페이스를 제공한다. (암호 묻는) 콘솔 모드 프로그램에 대한 GUI 프런트 엔드를 구축하기 위한 기능을 제공한다. 예를 들어, kdesu 및 kdessh는 각각 su 및 ssh와 인터페이스하기 위해 사용한다.
|-
| KDEWebkit
| 3
| kdewebkit.git
| HTML 렌더링 엔진인 WebKit의 통합. KDEWebkit 라이브러리는 QtWebKit 라이브러리의 KDE 통합을 제공한다. KDE 애플리케이션에서 QtWebKit을 사용하는 경우, QtWebKit 클래스를 직접 사용하는 대신 이 계층을 사용하는 것이 좋다. 특히, QWebView 대신 KWebView를 사용하고, QGraphicsWebView 대신 KGraphicsWebView를 사용하며, QWebPage 대신 KWebPage를 사용해야 한다.
|-
| KDNSSDFramework
| 2
| kdnssd.git
| KDNSSD는 프린터와 같은 네트워크 서비스를 사용자 개입이나 중앙 집중식 인프라 없이 검색할 수 있도록 하는 Zeroconf 계층인 DNS 기반 서비스 검색 프로토콜(DNS-SD)을 처리하기 위한 라이브러리이다.
|-
| KDocTools
| 2
| kdoctools.git
| DocBook 파일에서 다양한 형식의 문서를 생성하는 도구를 제공한다.
|-
| KEmoticons
| 3
| kemoticons.git
| 텍스트 이모티콘을 그래픽 이모티콘으로 자동 변환하는 데 사용되는 헬퍼 클래스뿐만 아니라 이모티콘 테마를 제공한다.
|-
| KGlobalAccel
| 1
| kglobalaccel.git
| KGlobalAccel을 사용하면 포커스가 있는 창과 독립적인 전역 바로 가기(액셀러레이터)를 사용할 수 있다. 일반 바로 가기와 달리, 애플리케이션 창은 바로 가기를 활성화하기 위해 포커스가 필요하지 않다.
|-
| KGuiAddons
| 1
| kguiaddons.git
| KDE GUI 애드온; 그래픽 사용자 인터페이스를 위한 유틸리티; KDE GUI 애드온은 색상, 글꼴, 텍스트, 이미지, 키보드 입력 분야에서 그래픽 사용자 인터페이스를 위한 유틸리티를 제공한다.
|-
| KHTML
| 4
| khtml.git
| KHTML은 WebKit이 파생된 HTML 렌더링 엔진이다. KParts 기술을 기반으로 하며 JavaScript 지원을 위해 KJS를 사용한다.
|-
| Ki18n
| 1
| ki18n.git
| KDE gettext 기반 UI 텍스트 국제화. KI18n은 GNU Gettext 번역 시스템을 기반으로 애플리케이션에서 사용자 인터페이스 텍스트를 국제화하기 위한 기능을 제공한다. 표준 Gettext 기능을 래핑하므로 프로그래머와 번역가가 익숙한 Gettext 도구와 워크플로우를 사용할 수 있다. KI18n은 프로그래머와 번역가 모두에게 소스 및 번역된 텍스트의 전반적인 품질을 높이는 데 도움이 될 수 있는 추가 기능도 제공한다. 여기에는 인수 캡처, 사용자 정의 가능한 마크업 및 번역 스크립팅이 포함된다.
|-
| KIconThemes
| 3
| kiconthemes.git
| 이 라이브러리에는 KDE 프레임워크를 사용하는 애플리케이션에서 아이콘을 더 잘 처리하기 위한 클래스가 포함되어 있다.
|-
| KIdleTime
| 1
| kidletime.git
| 유휴 시간 감지를 위한 통합 모듈.
|-
| KImageFormats
| 1
| kimageformats.git
| QImage가 추가 파일 형식을 지원하도록 하는 플러그인. 이 프레임워크는 QtGui에 추가 이미지 형식 플러그인을 제공한다. 따라서 다른 소프트웨어의 컴파일에는 필요하지 않지만 특정 이미지 형식을 지원하기 위해 Qt 기반 소프트웨어의 런타임 요구 사항일 수 있다.
다음 이미지 형식은 읽기 전용 지원을 제공한다.
* GIMP (xcf)
* OpenEXR (exr)
* Adobe Photoshop 문서(psd)
* Sun Raster (ras)
다음 이미지 형식은 읽기 및 쓰기 지원을 제공한다.
* Encapsulated PostScript (eps)
* Personal Computer Exchange (pcx)
* SGI 이미지(rgb, rgba, sgi, bw)
* Autodesk Softimage (pic)
* Targa (tga): Qt 버전보다 더 많은 형식을 지원한다.
* XView (xv)
|-
| KInit
| 3
| kinit.git
| kdeinit는 프로세스 실행기이며, 'kdemain(...)' 함수를 포함해야 하는 동적 라이브러리를 포크하고 로드하여 프로세스를 시작한다. kdeinit는 KDE 작업 공간에서 애플리케이션 시작 속도를 높인다. kdeinit는 표준 KDE 애플리케이션에 필요한 모든 라이브러리에 연결된다. 이 기술을 사용하면 이제 애플리케이션 자체만 연결하면 되지만, 그렇지 않으면 애플리케이션과 사용되는 모든 라이브러리를 모두 연결해야 하므로 애플리케이션 시작 속도가 훨씬 빨라진다.
|-
| KIO
| 3
| kio.git
| 파일 및 데이터에 대한 네트워크 투명 액세스. 이 프레임워크는 필요한 거의 모든 파일 관리 기능을 구현한다. Dolphin 및 KDE 파일 대화 상자도 이를 사용하여 네트워크 사용 파일 관리를 제공한다.
|-
| Kirigami
| 1
| kirigami.git
| KDE UX 지침을 기반으로 사용자 인터페이스를 구축하기 위한 QtQuick 플러그인 세트
|-
| KItemModels
| 1
| kitemmodels.git
| Qt 모델-뷰 프레임워크를 확장하는 항목 모델 세트. KItemModels는 다음 모델을 제공한다.
* KBreadcrumbSelectionModel - 선택한 항목의 부모를 선택하여 계층 구조 탐색 표시줄을 만든다.
* KCheckableProxyModel - 소스 모델에 확인 가능한 기능을 추가한다.
* KConcatenateRowsProxyModel - 여러 소스 모델의 행을 연결한다.
* KDescendantsProxyModel - 트리를 목록으로 재구성하기 위한 프록시 모델
* KExtraColumnsProxyModel - 기존 열 뒤에 열을 추가한다.
* KLinkItemSelectionModel - 동일한 소스 모델을 갖지 않는 여러 보기에 있는 선택 항목을 공유한다.
* KModelIndexProxyMapper - 프록시 모델을 통한 인덱스 및 선택 항목 매핑
* KRearrangeColumnsProxyModel - 소스 모델에서 열을 다시 정렬하고 숨길 수 있다.
* KRecursiveFilterProxyModel - 모델의 재귀적 필터링
* KSelectionProxyModel - 소스 모델의 하위 집합을 관찰자에게 제공하는 프록시 모델
|-
| KItemViews
| 1
| kitemviews.git
| Qt 모델-뷰 프레임워크를 확장하는 항목 보기 세트. KItemViews에는 항목 모델과 함께 사용할 수 있는 보기 세트가 포함되어 있다. 목록을 분류하고 플랫 및 계층적 목록에 검색 필터를 추가하기 위한 보기가 포함되어 있다.
|-
| KJobWidgets
| 2
| kjobwidgets.git
| KJobWIdgets는 비동기 작업의 진행 상황을 표시하기 위한 위젯을 제공한다.
|-
| KJS
| 1
| kjs.git
| KJS는 ECMAScript 호환 인터프리터를 제공한다. ECMA 표준은 Netscape의 JavaScript 및 Microsoft의 JScript와 같은 잘 알려진 스크립트 언어를 기반으로 한다.
|-
| KJSEmbed
| 3
| kjsembed.git
| KSJEmbed는 JavaScript 개체를 QObject에 바인딩하는 방법을 제공하므로 애플리케이션을 스크립팅할 수 있다.
|-
| KMediaPlayer
| 3
| kmediaplayer.git
| 더 이상 사용되지 않음: 미디어 플레이어 KParts용 인터페이스. KMediaPlayer는 미디어 파일을 재생할 수 있는 KParts에 공통 인터페이스를 제공하기 위해 KParts 프레임워크를 기반으로 한다. 이 프레임워크는 포팅 지원이다. 새 프로젝트에는 권장되지 않으며, 이를 사용하는 기존 프로젝트는 이를 포트하여 일반 KParts를 사용하는 것이 좋다.
|-
| KNewStuff
| 3
| knewstuff.git
| 추가 애플리케이션 데이터를 다운로드하고 공유하기 위한 프레임워크. KNewStuff 라이브러리는 애플리케이션을 위한 공동 데이터 공유를 구현한다. libattica를 사용하여 Open Collaboration Services 사양을 지원한다.
Attica는 Open Collaboration Services API 버전 1.6을 구현하는 Qt 라이브러리이다. 사람 및 콘텐츠에 대한 정보 쿼리와 같은 서비스에 쉽게 액세스할 수 있다.
|-
| KNotifications
| 3
| knotifications.git
| 시스템 알림을 위한 추상화를 사용한 솔루션.
|-
| KNotifyConfig
| 3
| knotifyconfig.git
| KNotify 구성을 위한 모듈.
|-
| KParts
| 3
| kparts.git
| KParts 라이브러리는 KDE 파트용 프레임워크를 구현한다. 개별 사용자 인터페이스 구성 요소는 KPart라고 하며 작업(메뉴 항목, 도구 모음 아이콘) 측면에서 정의된 사용자 인터페이스가 있는 정교한 위젯이다. KParts는 GNOME의 Bonobo 구성 요소 및 Microsoft의 Component Object Model의 ActiveX 컨트롤과 유사하다. Konsole은 KPart로 사용할 수 있으며 Konqueror 및 Kate와 같은 애플리케이션에서 사용된다. KParts 사용 예:
* Konqueror는 Okular 파트를 사용하여 문서를 표시한다.
* Konqueror는 Dragon Player 파트를 사용하여 멀티미디어를 재생한다.
* Kontact는 kdepim 애플리케이션을 포함한다.
* Kate 및 기타 편집기는 katepart 편집기 구성 요소를 사용한다.
* 여러 애플리케이션은 Konsole KPart를 사용하여 터미널을 포함한다.
추가 문서:
* 구성 요소 만들기 및 사용 (KParts) (KDE에서)
* KDE 애플리케이션용 플러그인 작성 (KDE에서)
|-
| KPlotting
| 1
| kplotting.git
| KPlotWidget은 데이터를 쉽게 플로팅하기 위한 가상 기본 클래스를 제공하는 QWidget 파생 클래스이다. KPlotWidget의 아이디어는 "데이터 단위"로 정보를 지정하기만 하면 된다는 것이다. 즉, 플로팅되는 데이터의 자연 단위이다. KPlotWidget은 모든 것을 화면 픽셀 단위로 자동 변환한다. KPlotWidget은 눈금 표시와 눈금 레이블이 있는 X 및 Y 축을 그린다. 플롯에 대해 지정된 데이터 제한을 기반으로 사용할 눈금 표시 수와 해당 위치를 자동으로 결정한다. 제한을 변경하려면 `setLimits(double x1, double x2, double y1, double y2)`를 호출한다. 플로팅할 데이터는 KPlotObject 클래스를 사용하여 저장된다. KPlotObject는 각 데이터 포인트의 X, Y 좌표를 지정하는 QPointF의 QList로 구성된다. KPlotObject는 또한 플로팅할 데이터의 "유형"(POINTS 또는 CURVE 또는 POLYGON 또는 LABEL)을 지정한다.
|-
| KPty
| 2
| kpty.git
| 가상 터미널 장치와의 인터페이스. 이 라이브러리는 가상 터미널 장치와 인터페이스하기 위한 기본 요소와, pty를 사용하여 자식 프로세스를 실행하고 자식 프로세스와 통신하기 위한 KProcess 파생 클래스를 제공한다.
|-
| Kross
| 3
| kross.git
| 애플리케이션에 스크립팅을 포함한다. Kross는 애플리케이션에 스크립팅 기능을 포함하기 위한 스크립팅 브리지이다. QtScript를 스크립팅 인터프리터 백엔드로 지원한다.
Kross의 핵심은 인터프리터 백엔드를 투명하게 처리하고 스크립트를 처리하기 위한 추상 기능을 제공하는 프레임워크를 제공한다.
|-
| KRunner
| 3
| krunner.git
| 문자열 쿼리가 주어졌을 때 다양한 작업을 제공하기 위한 프레임워크. Plasma 러너를 위한 프레임워크. Plasma 작업 공간은 텍스트 영역에 입력할 수 있는 KRunner라는 애플리케이션을 제공하며, 텍스트가 입력됨에 따라 텍스트와 일치하는 다양한 작업과 정보가 표시된다. 이에 대한 한 가지 애플리케이션은 ALT+F2로 시작할 수 있는 유니버설 러너이다.
|-
| KService
| 3
| kservice.git
| KService는 데스크톱 서비스를 처리하기 위한 플러그인 프레임워크를 제공한다. 서비스는 애플리케이션 또는 라이브러리일 수 있으며 MIME 형식에 바인딩되거나 애플리케이션별 코드로 처리될 수 있다.
|-
| KSyntaxHighlighting
| 1
| syntax-highlighting.git
| 이것은 Kate 구문 강조 엔진의 독립 실행형 구현이다. 사용자 지정 편집기와의 통합뿐만 아니라 바로 사용할 수 있는 QSyntaxHighlighter 하위 클래스를 모두 지원하여 텍스트 편집기뿐만 아니라 단순 강조 텍스트 렌더링(예: HTML)을 위한 빌딩 블록으로 사용된다.
|-
| KTextEditor
| 3
| ktexteditor.git
| KTextEditor는 애플리케이션에 KPart로 또는 KF5::TextEditor 라이브러리를 사용하여(더 많은 제어가 필요한 경우) 포함할 수 있는 강력한 텍스트 편집기 구성 요소를 제공한다. 텍스트 편집기 구성 요소에는 구문 강조 및 자동 들여쓰기에서 고급 스크립팅 지원에 이르기까지 다양한 유용한 기능이 포함되어 있어 간단한 포함 텍스트 파일 편집기에서 고급 IDE에 이르기까지 모든 용도에 적합하다.
|-
| KTextWidgets
| 3
| ktextwidgets.git
| KTextWidgets는 텍스트를 표시하고 편집하기 위한 위젯을 제공한다. 서식 있는 텍스트와 일반 텍스트를 모두 지원한다.
|-
| KUnitConversion
| 2
| kunitconversion.git
| KUnitConversion은 서로 다른 물리적 단위로 값을 변환하는 기능을 제공한다. 서로 다른 접두사(예: 킬로, 메가, 기가)의 변환과 서로 다른 단위 시스템(예: 리터, 갤런) 간의 변환을 지원한다. 다음 영역이 지원된다.
* 가속도
* 각도
* 면적
* 통화
* 밀도
* 전류
* 전기 저항
* 에너지
* 힘
* 주파수
* 연료 효율
* 길이
* 질량
* 동력
* 압력
* 온도
* 열 전도율
* 열 플럭스
* 열 발생
* 시간
* 속도
* 부피
* 전압
|-
| KWalletFramework
| 3
| kwallet.git
| 암호에 대한 안전한 데스크톱 전체 저장소. 이 프레임워크에는 두 가지 주요 구성 요소가 포함되어 있다.
* KDE 작업 공간에서 암호
4. API 및 ABI 안정성
플랫폼 릴리스는 시리즈를 시작하는 버전(버전 번호 X.0)을 의미한다. 이러한 주요 릴리스만이 이전 버전과의 이진 호환성을 깨는 변경을 할 수 있다. 반면, 마이너 릴리스(X.1, X.2, ...)에서는 API 및 ABI의 이진 호환성이 보장된다.
이는 예를 들어 K Desktop Environment 3(KDE 3)용으로 개발된 소프트웨어는 모든 KDE 3 버전에서 문제없이 작동한다는 것을 뜻한다. 하지만 K Desktop Environment 2(KDE 2)용으로 개발된 애플리케이션이 KDE 3 라이브러리를 사용할 수 있다는 보장은 없다.
KDE의 주 버전 번호는 주로 Qt 라이브러리의 릴리스 주기를 따른다. 예를 들어, KDE Software Compilation 4(KDE SC 4)는 Qt 4를 기반으로 개발되었고, KDE 3는 Qt 3을 기반으로 개발되었다.
5. 지원 운영 체제
각 프레임워크의 저장소에는 metainfo.yaml이라는 이름의 파일이 포함되어야 하는데, 이 파일에는 프레임워크의 관리자, 종류, 지원되는 운영 체제 등의 정보가 기록된다. 현재 지원되는 플랫폼은 리눅스, 마이크로소프트 윈도우, macOS, 안드로이드이다.
6. 프로그래밍 언어 바인딩
KDE 프레임워크는 주로 C++로 작성되었지만, 다른 프로그래밍 언어를 위한 다양한 바인딩(binding)을 제공한다. 주요 바인딩 대상 언어는 다음과 같다.
* 파이썬
* 루비 (코룬덤, QtRuby 기반)
* 펄
* C# (단, C# 및 다른 .NET 언어용 현재 바인딩 프레임워크는 더 이상 사용되지 않으며, 대체 프레임워크는 윈도우에서만 컴파일된다).
이러한 바인딩들은 다음과 같은 기술을 활용하여 구현되었다.
* 스모크: 루비, C#, PHP용 바인딩 생성에 사용된다.
* SIP: 파이썬용 바인딩 생성에 사용된다.
* 크로스: C++ 애플리케이션에 내장 스크립팅 기능을 제공하며, 루비, 파이썬, 자바스크립트, QtScript, 팰컨, 자바를 지원한다.
많은 바인딩은 Qt 5 및 KF5(KDE 프레임워크 5) 버전으로의 업데이트가 이루어지지 않았거나, 릴리스 주기 후반에 업데이트되는 경우가 많았다.
7. 활용 사례
KDE 프레임워크는 KDE 플라즈마 5와 KDE 응용 프로그램 외에도 다양한 소프트웨어 프로젝트에서 기반 기술로 활용된다. 대표적인 예로 리눅스 데스크톱 환경인 LXQt와 MoonLightDE, Hawaii 등이 KDE 프레임워크를 채택하고 있다.
Calligra Suite의 래스터 그래픽스 편집기인 Krita는 2016년 5월 31일에 출시된 버전 3.0부터 KDE 프레임워크 5와 Qt 5를 기반으로 개발되고 있다.
Kirigami는 KDE 프레임워크의 일부로 제공되는 QML 기반 사용자 인터페이스 프레임워크이다. 마르코 마틴(Marco Martin)이 개발했으며, 개발자들이 코드를 크게 수정하지 않고도 안드로이드, iOS, 윈도우, Plasma Mobile 및 다양한 리눅스 데스크톱 환경에서 자연스럽게 작동하는 애플리케이션을 만들 수 있도록 돕는다.
Kirigami는 여러 애플리케이션에서 사용되고 있는데, 리누스 토르발스와 디르크 호헨델(Dirk Hohndel)의 스쿠버 다이빙 기록 관리 프로그램인 Subsurface, 메신저 클라이언트 Banji와 Kaidan, 음악 플레이어 Vvave, KDE 소프트웨어 센터인 Discover 등이 대표적이다. 또한 Amarok, Avogadro, Trojitá 같은 애플리케이션에서도 Kirigami의 활용이 늘어나고 있다.