Advance Wayland and KDE package bring-up

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
2026-04-14 10:51:06 +01:00
parent 51f3c21121
commit cf12defd28
15214 changed files with 20594243 additions and 269 deletions
@@ -0,0 +1,3 @@
set(BUILD_SHARED_LIBS 0)
add_subdirectory(kirigami)
@@ -0,0 +1,6 @@
Add here, with either a script that does a git checkout
or as git submodules the two projects:
git://anongit.kde.org/kirigami.git
git://anongit.kde.org/breeze-icons.git
@@ -0,0 +1,19 @@
project(minimal)
find_package(ECM REQUIRED CONFIG)
set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake/ ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
set(BREEZEICONS_DIR ${CMAKE_SOURCE_DIR}/3rdparty/breeze-icons/)
find_package(Qt6 REQUIRED Core Quick Multimedia Test Widgets QuickControls2)
include(KDEInstallDirs)
include(KDECompilerSettings)
include(KDECMakeSettings)
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_EXTENSIONS OFF)
add_subdirectory(3rdparty)
add_subdirectory(src)
@@ -0,0 +1,27 @@
include_directories(${CMAKE_SOURCE_DIR}/3rdparty/kirigami/src)
include(${CMAKE_SOURCE_DIR}/3rdparty/kirigami/KF6Kirigami2Macros.cmake)
set(minimal_SRCS
main.cpp
)
qt_add_resources(RESOURCES kirigami-icons.qrc resources.qrc)
if (ANDROID)
set(minimal_EXTRA_LIBS
#FIXME: we shouldn't have to link to it but otherwise the lib won't be packaged on Android
Qt6::QuickControls2)
else ()
#qstyle-based qqc2 style needs a QApplication
set(minimal_EXTRA_LIBS Qt6::Widgets)
endif()
add_executable(minimal ${minimal_SRCS} ${RESOURCES})
#kirigamiplugin is the static library built by us
target_link_libraries(minimal kirigamiplugin Qt6::Core Qt6::Qml Qt6::Quick Qt6::QuickControls2 ${minimal_EXTRA_LIBS})
#install(TARGETS minimal ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
kirigami_package_breeze_icons(ICONS open-menu-symbolic document-decrypt folder-sync go-next go-previous go-up handle-left handle-right view-list-icons applications-graphics media-record-symbolic)
@@ -0,0 +1,13 @@
/*
* SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org>
*
* SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick
Page1Form {
button1.onClicked: {
console.log("Button Pressed. Entered text: " + textField1.text);
}
}
@@ -0,0 +1,41 @@
/*
* SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org>
*
* SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import org.kde.kirigami as Kirigami
Kirigami.Page {
title: qsTr("Page 1")
property alias textField1: textField1
property alias button1: button1
actions: [
Kirigami.Action {
text: "Sync"
icon.name: "folder-sync"
onTriggered: showPassiveNotification("Action clicked")
}
]
RowLayout {
anchors.horizontalCenter: parent.horizontalCenter
anchors.topMargin: 20
anchors.top: parent.top
TextField {
id: textField1
placeholderText: qsTr("Text Field")
}
Button {
id: button1
text: qsTr("Press Me")
}
}
}
@@ -0,0 +1,15 @@
<RCC>
<qresource prefix="/org/kde/kirigami/">
<file alias="icons/open-menu-symbolic.svg">../3rdparty/breeze-icons/icons/actions/24/open-menu-symbolic.svg</file>
<file alias="icons/document-decrypt.svg">../3rdparty/breeze-icons/icons/actions/32/document-decrypt.svg</file>
<file alias="icons/folder-sync.svg">../3rdparty/breeze-icons/icons/actions/32/folder-sync.svg</file>
<file alias="icons/go-next.svg">../3rdparty/breeze-icons/icons/actions/22/go-next.svg</file>
<file alias="icons/go-previous.svg">../3rdparty/breeze-icons/icons/actions/22/go-previous.svg</file>
<file alias="icons/go-up.svg">../3rdparty/breeze-icons/icons/actions/22/go-up.svg</file>
<file alias="icons/handle-left.svg">../3rdparty/breeze-icons/icons/actions/22/handle-left.svg</file>
<file alias="icons/handle-right.svg">../3rdparty/breeze-icons/icons/actions/22/handle-right.svg</file>
<file alias="icons/view-list-icons.svg">../3rdparty/breeze-icons/icons/actions/32/view-list-icons.svg</file>
<file alias="icons/applications-graphics.svg">../3rdparty/breeze-icons/icons/categories/32/applications-graphics.svg</file>
<file alias="icons/media-record-symbolic.svg">../3rdparty/breeze-icons/icons/actions/symbolic/media-record-symbolic.svg</file>
</qresource>
</RCC>
@@ -0,0 +1,61 @@
/*
* SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org>
*
* SPDX-License-Identifier: LGPL-2.0-or-later
*/
#ifdef Q_OS_ANDROID
#include <QGuiApplication>
#else
#include <QApplication>
#endif
#include <QColor>
#include <QQmlApplicationEngine>
#include <QUrl>
#ifdef Q_OS_ANDROID
#include <QtAndroid>
// WindowManager.LayoutParams
#define FLAG_TRANSLUCENT_STATUS 0x04000000
#define FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 0x80000000
// View
#define SYSTEM_UI_FLAG_LIGHT_STATUS_BAR 0x00002000
#endif
Q_IMPORT_PLUGIN(KirigamiPlugin)
Q_DECL_EXPORT int main(int argc, char *argv[])
{
// The desktop QQC2 style needs it to be a QApplication
#ifdef Q_OS_ANDROID
QGuiApplication app(argc, argv);
#else
QApplication app(argc, argv);
#endif
// qputenv("QML_IMPORT_TRACE", "1");
QQmlApplicationEngine engine;
engine.load(QUrl(QStringLiteral("qrc:///main.qml")));
if (engine.rootObjects().isEmpty()) {
return -1;
}
// HACK to color the system bar on Android, use qtandroidextras and call the appropriate Java methods
#ifdef Q_OS_ANDROID
QtAndroid::runOnAndroidThread([=]() {
QAndroidJniObject window = QtAndroid::androidActivity().callObjectMethod("getWindow", "()Landroid/view/Window;");
window.callMethod<void>("addFlags", "(I)V", FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.callMethod<void>("clearFlags", "(I)V", FLAG_TRANSLUCENT_STATUS);
window.callMethod<void>("setStatusBarColor", "(I)V", QColor("#2196f3").rgba());
window.callMethod<void>("setNavigationBarColor", "(I)V", QColor("#2196f3").rgba());
});
#endif
return app.exec();
}
@@ -0,0 +1,40 @@
/*
* SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org>
*
* SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick
import QtQuick.Layouts
import org.kde.kirigami as Kirigami
Kirigami.ApplicationWindow {
visible: true
title: qsTr("Hello World")
pageStack.initialPage: Page1 {}
globalDrawer: Kirigami.GlobalDrawer {
actions: [
Kirigami.Action {
text: "View"
icon.name: "view-list-icons"
Kirigami.Action {
text: "action 1"
}
Kirigami.Action {
text: "action 2"
}
Kirigami.Action {
text: "action 3"
}
},
Kirigami.Action {
text: "action 3"
},
Kirigami.Action {
text: "action 4"
}
]
}
}
@@ -0,0 +1,15 @@
; This file can be edited to change the style of the application
; See Styling Qt Quick Controls 2 in the documentation for details:
; http://doc.qt.io/qt-5/qtquickcontrols2-styles.html
[Controls]
Style=Material
[Universal]
Theme=Light
;Accent=Steel
[Material]
Theme=Light
Accent=BlueGrey
Primary=BlueGray
@@ -0,0 +1,8 @@
<RCC>
<qresource prefix="/">
<file>main.qml</file>
<file>Page1.qml</file>
<file>Page1Form.ui.qml</file>
<file>qtquickcontrols2.conf</file>
</qresource>
</RCC>