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.
42 lines
1001 B
CMake
42 lines
1001 B
CMake
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}
|
|
)
|