Status Desktop client made in Nim & QML
https://status.app
1e8c851283
Considerations - Use versioned files. Versioned Qt CMake APIs are disabled to force explicit calls and say that we don't support older `QT`s - Don't use blobbing. Use `target_sources` and `qt_target_qml_sources` - Distribute `CMake` definitions closer to the context: main folders with their own `CMakeLists.txt` - Everything in libraries under `Status` namespace for cleaner code. - Includes are exposed with Module folder externally and without prefix internally - File/Folders name matches definitions they contain for uniformity that leads to cleaner code - All source files (cpp, qml, js ...) have to be added to one of the CMakeLists.txt files to be tracked by CMake build system. - Use BUILD_DEBUG, BUILD_RELEASE and BUILD_DEVELOPMENT variables from Helpers library - Avoid Include directories. Not needed anymore CMake `target_*` APIs handles this through `INTERFACE`, `PUBLIC` and `PRIVATE` scope identifiers - `StatusQ` is meant to be compiled as an external library, therefore StatusQ tests are kept inside its own directory - Forced CMake version to `3.21` for the latest features and fixes. It is desired to be kept as recent as possible due to its backward compatibility. Following Qt's shipped version might be an option - Depends on status-go changes to allow forcing of arm for apple silicon Found limitations to CMake Qt API with Qt 6.3 - Having `0` as major version when using `qt_add_qml_module` doesn't work. Qml engine reports loading the `qmldir` but won't load the plugin library and no error is reported outside that exposed types are not found. - `qt_target_qml_sources` doesn't work now, it generate a double copy error when deploying qml files in bin-directory. For now we stick with adding files using `qt_add_qml_module` central place - Need to add `OUTPUT_DIRECTORY` to `qt_add_qml_module` to use the workaround - If `MACOSX_BUNDLE` target property is set breaks importing of QML files. Disabled until fixed or workaround found - For an unknown reason application executable tries to include the `QML_ELEMENT` include files, therefore for now I include all the C++ qml elements in INTERFACE |
||
---|---|---|
.github | ||
app | ||
build | ||
ci | ||
cmake | ||
libs | ||
resources | ||
scripts | ||
spellchecking@f1a88d1147 | ||
src | ||
src-cpp | ||
test | ||
test-scripts | ||
ui | ||
vendor | ||
.clang-format | ||
.clang-tidy | ||
.gitignore | ||
.gitmodules | ||
.npmrc | ||
.yarnrc | ||
AppRun | ||
CMakeLists.txt | ||
Info.dev.plist | ||
Info.plist | ||
LICENSE.md | ||
Makefile | ||
QtWebEngineProcess.plist | ||
README.md | ||
VERSION | ||
build-linux.sh | ||
cacert.pem | ||
conanfile.py | ||
config.nims | ||
docker-linux-app-image.sh | ||
env.sh | ||
fleets.json | ||
nim-status.desktop | ||
nim.cfg | ||
nim_status_client.nimble | ||
package-lock.json | ||
package.json | ||
screenshot.png | ||
status-dev.icns | ||
status-dev.svg | ||
status-macos-dev.svg | ||
status-macos.ico | ||
status-macos.svg | ||
status.icns | ||
status.ico | ||
status.iss | ||
status.svg | ||
windows-install.txt |
README.md
Status-desktop
Desktop client for the Status Network built with Nim and Qt
Dev Docs: https://hackmd.io/@status-desktop/B1naRjxh_/https%3A%2F%2Fhackmd.io%2F%40status-desktop%2FB1eOaf-nd