desktop: the window installs itself (launcher entry, icon, default.nix)
app/linux/cst-agent-app.{desktop,svg} plus one CMake component ("app") in
app/CMakeLists.txt: `cmake --install --component app` puts the binary in bin/,
the entry in share/applications/ and the icon in hicolor/scalable/apps/. The
entry's file name stays the app_id Qt sets (QGuiApplication::applicationName),
or the launcher draws a generic icon; only the front end installs, the CLI
keeps coming from scripts/bootstrap_linux.sh.
default.nix is that install for nix users: nixpkgs' Qt 6 (qtwayland for a
Wayland session, qtsvg for Breeze's SVG icons), wrapQtAppsHook so the plugins
and QML modules resolve outside a nix-shell and survive nix-collect-garbage,
a filtered src (third_party/ and the build directories are gigabytes this
build never reads), and the version read from include/cst_version.h. doCheck
runs ctest minus test_sandbox, whose Landlock assertion cannot hold inside the
nix build sandbox (the other 40 pass there; make check runs all 41).
Verified: nix-build, nix profile add --file ., then --selftest and --uitest in
a clean environment (no nix-shell, no XDG_* from the session).
This commit is contained in:
@@ -14,6 +14,10 @@ project(cst-agent-app LANGUAGES C CXX VERSION 0.1.0)
|
||||
# Inside the repo build (the parent defines the cstcore target, shared with the CLI):
|
||||
# cmake -B build -DCST_BUILD_APP=ON && cmake --build build --target cst-agent-app
|
||||
#
|
||||
# Desktop install (the window, its launcher entry and the icon; the CLI has
|
||||
# its own installer) -- default.nix installs exactly this component:
|
||||
# cmake --install build --component app --prefix ~/.local
|
||||
#
|
||||
# Extra QML import paths, e.g. a Kirigami installed away from the Qt prefix:
|
||||
# -DCST_APP_QML_IMPORT=... (added to QML2_IMPORT_PATH / the app's runtime)
|
||||
|
||||
@@ -119,6 +123,23 @@ if(CST_APP_GUI)
|
||||
set_target_properties(cst-agent-app PROPERTIES WIN32_EXECUTABLE TRUE)
|
||||
endif()
|
||||
|
||||
# A desktop install. The icon goes where the theme layout says, so the
|
||||
# entry's Icon= name finds it, and the entry's file name is the app_id Qt
|
||||
# sets (QGuiApplication::applicationName) -- rename one and the launcher
|
||||
# loses the icon. All of it in the "app" component: the CLI keeps coming
|
||||
# from scripts/bootstrap_linux.sh, and two `cst-agent` in PATH is how a
|
||||
# version nobody meant to run gets run.
|
||||
if(NOT ANDROID)
|
||||
include(GNUInstallDirs)
|
||||
install(TARGETS cst-agent-app
|
||||
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} COMPONENT app)
|
||||
install(FILES linux/cst-agent-app.desktop
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/applications COMPONENT app)
|
||||
install(FILES linux/cst-agent-app.svg
|
||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps
|
||||
COMPONENT app)
|
||||
endif()
|
||||
|
||||
# --- Android (APK) -----------------------------------------------------
|
||||
# The engine is compiled in (top-level CMakeLists: -DCST_BUILD_TUI=OFF,
|
||||
# -DCST_BUILD_WEBUI=OFF, so src/webui_stub.c stands in for the server and
|
||||
|
||||
Reference in New Issue
Block a user