Add Qt/QML desktop shell and Nebula.UI

Introduce a new production desktop shell at `shells/desktop/shell` built with C++20, Qt Quick/QML, and LayerShellQt, including top bar, launcher, desktop surfaces, shell state, and mock app data. Add the shared `packages/nebula-ui` QML module (theme, controls, focus, icons) and wire it into the shell build.

Retire the old GTK/WebKit native host by removing `shells/desktop/native`, move the React shell UI to `shells/desktop/prototype-react` as an archived design reference, and update root/compositor/session documentation to reflect the new Linux-only production architecture and temporary Sway role.
This commit is contained in:
2026-08-26 16:34:40 +12:00
parent 5504d3cfb8
commit befed8ff96
80 changed files with 2128 additions and 609 deletions
+41
View File
@@ -0,0 +1,41 @@
cmake_minimum_required(VERSION 3.20)
if(NOT TARGET Qt6::Quick)
project(NebulaUI LANGUAGES CXX)
find_package(Qt6 6.4 REQUIRED COMPONENTS Quick)
qt_standard_project_setup(REQUIRES 6.4)
endif()
qt_add_library(NebulaUI STATIC)
set(NEBULA_UI_QML_DIR "${CMAKE_CURRENT_SOURCE_DIR}/qml/Nebula/UI")
set(NEBULA_UI_QML_FILES
Theme.qml
NebulaButton.qml
NebulaCard.qml
NebulaIconButton.qml
NebulaTextField.qml
FocusFrame.qml
NebulaIcon.qml
)
set(NEBULA_UI_QML_PATHS)
foreach(qml_file IN LISTS NEBULA_UI_QML_FILES)
set(qml_path "${NEBULA_UI_QML_DIR}/${qml_file}")
set_source_files_properties("${qml_path}" PROPERTIES
QT_RESOURCE_ALIAS "${qml_file}"
)
list(APPEND NEBULA_UI_QML_PATHS "${qml_path}")
endforeach()
set_source_files_properties("${NEBULA_UI_QML_DIR}/Theme.qml" PROPERTIES
QT_QML_SINGLETON_TYPE TRUE
)
qt_add_qml_module(NebulaUI
URI Nebula.UI
VERSION 1.0
RESOURCE_PREFIX /qt/qml
QML_FILES ${NEBULA_UI_QML_PATHS}
)