syncthingtray/plasmoid/testing.md

2.2 KiB

Testing and debugging Plasma 5 plasmoid with Qt Creator

The following instructions allow to test the Plasmoid by installing it in a test directory rather than the regular home to separate testing from production.

  1. Build as usual, ensure NO_PLASMOID is turned off
  2. Add build step to execute custom target init_plasmoid_testing which will install the Plasmoid in a test directory which is "$BUILD_DIR/plasmoid/testdir" by default
  3. Add new config for run in Qt Creator and set plasmoidviewer (or plasmawindowed) as executable
  4. In execution environment, set
  • QT_PLUGIN_PATH to directory containing plugin \*.so-file
  • QT_DEBUG_PLUGINS to 1 for verbose plugin detection
  • HOME to the test directory from step 2 so plasmoidviewer finds the Plasmoid in the test directory
  1. Set --applet martchus.syncthingplasmoid as CLI argument
  2. Ignore warning that executable is no debug build, it is sufficiant when the plugin is a debug build (see next section for QML debugging)

Saving/restoring settings

Be aware that plasmoidviewer will revert Plasmoid-specific settings to the defaults on startup. So it is not possible to test restoring/saving settings using it. For this use case, plasmawindowed can be used instead.

Enable QML debugging

To enable QML debugging, it is required to rebuild plasmoidviewer with QML debugging enabled.

For Arch Linux, I created the package plasma-sdk-debug for that purpose. Installing this package (replacing plasma-sdk) should make enabling QML debugging in the Run section of Qt Creator work.

To create a debug build of plasmoidviewer manually:

  1. Get plasma-sdk: git clone https://anongit.kde.org/plasma-sdk.git
  2. Create a debug build of plasmoidviewer and ensure QT_QML_DEBUG is defined when compiling plasmoidviewer, eg. by applying [PATCH] Enable QML debugging.
  3. Prepend the build directory containing the plasmoidviewer binary to the path variable in the build environment of Syncthing Tray.
  4. Enable QML debugging in the Run section.