Supercell Wx Documentation
repository·develop·Indexed 18 days ago
https://github.com/dpaulat/supercell-wxAn open-source weather visualization tool for monitoring live and archived NEXRAD Level 2 and Level 3 data and severe weather alerts on a responsive map. It supports Windows, Linux, and macOS, integrating with services like NEXRAD on AWS, Mapbox, and MapTiler to provide real-time reflectivity and velocity updates.
What's inside Supercell Wx
- Supercell Wx is an open-source application designed to visualize live and archived NEXRAD Level 2 and Level 3 weather data, alongside severe weather alerts. It features a responsive map that continuously updates with weather products such as reflectivity and velocity, allowing users to monitor weather events in real-time.
Flaticon Asset Acknowledgements
developSupercell Wx utilizes specific icon assets from Flaticon. The following creators are acknowledged for their contributions:
- Compass icons by Dimitry Miroliubov
- Compass icons by Slidicon
Linux System Dependencies
developTo run Supercell Wx on Linux, ensure your system meets the following requirements:
- Compiler/Library: Support for GCC 13.
- Graphics: OpenGL 3.3 and OpenGL ES 3.0 support.
- X11 Users: If using an X11 windowing system, you must have the XCB libraries installed, specifically including
xcb-cursor.
Supported Platforms for Supercell Wx
developSupercell Wx is compatible with the following 64-bit operating systems:
Windows
- Windows 10 (version 1809 or later)
- Windows 11
Linux
- Arch Linux (including EndeavourOS, SteamOS/Steam Deck, and other derivatives)
- Fedora Linux 39+
- openSUSE Tumbleweed
- Ubuntu 24.04+
- NixOS 25.05+
- Most distributions supporting GCC Standard C++ Library 13+
macOS
- macOS 15.0+ for Intel-based Macs
- macOS 14.0+ for Apple silicon-based Macs
Configure OpenGL surface format
developSupercell Wx requires a specific OpenGL configuration to support its shaders. It uses a Core Profile. On macOS, it explicitly requests OpenGL version 4.1 Core to ensure shader compatibility.
// The application internally calls InitializeOpenGL() which sets: // - Qt::AA_ShareOpenGLContexts // - QSurfaceFormat::CoreProfile // - QSurfaceFormat::OpenGL renderable type // - Version 4.1 on macOSConfigure Supercell Wx for testing mode
developTo enable test mode in Supercell Wx, set the
SCWX_TESTenvironment variable. This triggersQStandardPaths::setTestModeEnabled(true), which directs the application to use test-specific paths for data and configuration.export SCWX_TEST=1 ./supercell_wx_binaryInitialize and launch Supercell Wx GUI
developThe Supercell Wx application entrypoint initializes the Qt application, AWS SDK, and various internal managers (Log, Settings, Resource, Task, and Thread managers). It handles command-line argument parsing, theme configuration, privilege checking, and internationalization. If a setup is required, it launches the
SetupWizard; otherwise, it launches theMainWindow.// The application is typically launched via the compiled binary. // Internally, the main loop follows this lifecycle: // 1. Parse arguments via scwx::qt::main::ProgramOptions::ParseArguments // 2. Initialize managers (LogManager, ApplicationPaths, etc.) // 3. Initialize AWS SDK // 4. Run SetupWizard if scwx::qt::ui::setup::SetupWizard::IsSetupRequired() is true // 5. Launch MainWindow // 6. Shutdown managers and AWS SDKApply Grid Width/Height settings
developWhen changing grid width or height settings, the changes will not take effect immediately after clicking 'apply'. You must restart Supercell Wx to apply these specific configuration changes.Configure Map API Keys to fix black map issue
developIf the map appears black when loading for the first time, it indicates that a map provider API key has not been configured. You must obtain an API key from one of the following providers:
- MapTiler: Does not currently require a credit/debit card.
- Mapbox: Requires a credit/debit card, but offers 200,000 free requests per month.
Review Supercell Wx dependencies and licenses
developSupercell Wx relies on a wide range of third-party libraries for its functionality, including graphics (Qt, Mesa 3D, Vulkan SDK), networking (libcurl, AWS SDK for C++), and geospatial processing (MapLibre Native, GEOS, GeographicLib). Developers should review the following dependency list to understand the project's technical stack and licensing requirements.
| Dependency | License | Notes | | ---------- | ------- | ----- | | [{fmt}](https://fmt.dev/) | [MIT License](https://spdx.org/licenses/MIT.html) | | [AWS SDK for C++](https://aws.amazon.com/sdk-for-cpp/) | [Apache License 2.0](https://spdx.org/licenses/Apache-2.0.html) | | [Boost](https://www.boost.org/) | [Boost Software License 1.0](https://spdx.org/licenses/BSL-1.0.html) | | [brotli](https://github.com/google/brotli) | [MIT License](https://spdx.org/licenses/MIT.html) | | [bzip2](https://sourceware.org/bzip2/) | [bzip2 and libbzip2 License v1.0.6](https://spdx.org/licenses/bzip2-1.0.6.html) | | [cmake-conan](https://github.com/conan-io/cmake-conan) | [MIT License](https://spdx.org/licenses/MIT.html) | | [cpr](https://github.com/libcpr/cpr) | [MIT License](https://spdx.org/licenses/MIT.html) | | [CSS Color Parser](https://github.com/deanm/css-color-parser-js) | [MIT License](https://spdx.org/licenses/MIT.html) | Ported to C++ for MapLibre Native | | [Date](https://github.com/HowardHinnant/date) | [MIT License](https://spdx.org/licenses/MIT.html) | | [Dear ImGui](https://github.com/ocornut/imgui) | [MIT License](https://spdx.org/licenses/MIT.html) | | [fontconfig](http://fontconfig.org/) | [MIT License](https://spdx.org/licenses/MIT.html) | | [FreeType](https://freetype.org/) | [Freetype Project License](https://spdx.org/licenses/FTL.html) | | [FreeType GL](https://github.com/rougier/freetype-gl) | [BSD 2-Clause with views sentence](https://spdx.org/licenses/BSD-2-Clause-Views.html) | | [GeographicLib](https://geographiclib.sourceforge.io/) | [MIT License](https://spdx.org/licenses/MIT.html) | | [geos](https://libgeos.org/) | [GNU Lesser General Public License v2.1 or later](https://spdx.org/licenses/LGPL-2.1-or-later.html) | | [GLAD](https://github.com/Dav1dde/glad) | [MIT License](https://spdx.org/licenses/MIT.html) | | [GLM](https://github.com/g-truc/glm) | [MIT License](https://spdx.org/licenses/MIT.html) | | [GoogleTest](https://google.github.io/googletest/) | [BSD 3-Clause "New" or "Revised" License](https://spdx.org/licenses/BSD-3-Clause.html) | | [HSLuv](https://www.hsluv.org/) | [MIT License](https://spdx.org/licenses/MIT.html) | | [libcurl](https://curl.se/libcurl/) | [curl License](https://spdx.org/licenses/curl.html) | | [libiconv](https://www.gnu.org/software/libiconv/) | [GNU Lesser General Public License v2.1 or later](https://spdx.org/licenses/LGPL-2.1-or-later.html) | | [libjpeg](http://libjpeg.sourceforge.net/) | [Independent JPEG Group License](https://spdx.org/licenses/IJG.html) | | [libpng](http://libpng.org/pub/png/libpng.html) | [PNG Reference Library version 2](https://spdx.org/licenses/libpng-2.0.html) | | [libtiff](http://libtiff.org/) | [libtiff License](https://spdx.org/licenses/libtiff.html) | | [libxml2](http://xmlsoft.org/) | [MIT License](https://spdx.org/licenses/MIT.html) | | [libzip](https://libzip.org/) | [BSD 3-Clause "New" or "Revised" License](https://spdx.org/licenses/BSD-3-Clause.html) | | [MapLibre Native](https://maplibre.org/projects/maplibre-native/) | [BSD 2-Clause "Simplified" License](https://spdx.org/licenses/BSD-2-Clause.html) | | [Mesa 3D](https://mesa3d.org/) | [MIT License](https://spdx.org/licenses/MIT.html) | | [nunicode](https://bitbucket.org/alekseyt/nunicode/src/master/) | [MIT License](https://spdx.org/licenses/MIT.html) | Modified for MapLibre Native | | [OpenSSL](https://www.openssl.org/) | [OpenSSL License](https://spdx.org/licenses/OpenSSL.html) | | [Qt](https://www.qt.io/) | [GNU Lesser General Public License v3.0 only](https://spdx.org/licenses/LGPL-3.0-only.html) | Qt Core, Qt GUI, Qt Multimedia, Qt Network, Qt OpenGL, Qt Positioning, Qt Serial Port, Qt SQL, Qt SVG, Qt Widgets<br/>Additional Licenses: https://doc.qt.io/qt-6/licenses-used-in-qt.html | | [qt6ct](https://github.com/trialuser02/qt6ct) | [BSD 2-Clause "Simplified" License](https://spdx.org/licenses/BSD-2-Clause.html) | | [range-v3](https://github.com/ericniebler/range-v3) | [Boost Software License 1.0](https://spdx.org/licenses/BSL-1.0.html)<br/>[MIT License](https://spdx.org/licenses/MIT.html)<br>[Stepanov and McJones, "Elements of Programming" license](https://github.com/ericniebler/range-v3/tree/0.12.0?tab=License-1-ov-file)<br>[SGI C++ Standard Template Library license](https://github.com/ericniebler/range-v3/tree/0.12.0?tab=License-1-ov-file) | | [re2](https://github.com/google/re2) | [BSD 3-Clause "New" or "Revised" License](https://spdx.org/licenses/BSD-3-Clause.html) | | [spdlog](https://github.com/gabime/spdlog) | [MIT License](https://spdx.org/licenses/MIT.html) | | [SQLite](https://www.sqlite.org/) | Public Domain | | [stb](https://github.com/nothings/stb) | Public Domain | | [TextFlowCpp](https://github.com/catchorg/textflowcpp) | [Boost Software License 1.0](https://spdx.org/licenses/BSL-1.0.html) | | [Units](https://github.com/nholthaus/units) | [MIT License](https://spdx.org/licenses/MIT.html) | | [Vulkan SDK](https://www.vulkan.org/) | [Apache License 2.0](https://spdx.org/licenses/Apache-2.0.html) | | [zlib](https://zlib.net/) | [zlib License](https://spdx.org/licenses/Zlib.html) |Identify Supercell Wx external services
developSupercell Wx integrates with several external services for weather data, mapping, and updates. Key services include:
- Weather Warnings: College of DuPage, Iowa Environmental Mesonet, and Weather Pulse LLC.
- Map Tiles: Mapbox, MapTiler, and OpenFreeMap.
- Radar Data: NEXRAD on AWS (real-time and archival).
- Updates: GitHub.
| Service | Notes | | ------- | ----- | | [College of DuPage](https://weather.cod.edu/) | Severe weather warnings | | [GitHub](https://github.com/) | Supercell Wx updates | | [Iowa Environmental Mesonet](https://mesonet.agron.iastate.edu/) | Archived severe weather warnings | | [Mapbox](https://www.mapbox.com/) | Vector map tiles | | [MapTiler](https://www.maptiler.com/) | Vector map tiles | | [OpenFreeMap](https://openfreemap.org/) | Vector map tiles | | [NEXRAD on AWS](https://registry.opendata.aws/noaa-nexrad/) | Real-time and archival data from the Next Generation Weather Radar (NEXRAD) network. | | [Weather Pulse LLC](https://www.weatherpulse.com/) | Severe weather warnings |Parse and handle command-line arguments
developSupercell Wx uses
scwx::qt::main::ProgramOptionsto process command-line arguments. This includes parsing the arguments and checking for flags that might trigger an immediate exit.// Parsing arguments scwx::qt::main::ProgramOptions::ParseArguments({argv, static_cast<std::size_t>(argc)}); // Handling arguments (e.g., --help or --version flags) bool exit = false; scwx::qt::main::ProgramOptions::HandleArguments(exit); if (exit) return 0;