🚨

Plasma AppletのHello World

2024/08/10に公開

結論

KDevelopを使いましょう。Hello Worldのテンプレートがあります。私はC++を用いたAppletを作りたかったので、New Project->Plasma->Plasmoid->Plasma QML Applet with QML extension (Qt6)で完璧…と思いきや(私の環境では)そのままでは動きませんでした😭

ということで以下、その解決方法です。他のテンプレートでも参考になるかもしれません。

修正

これがテンプレートです(私が見ているコミットはこれです)。これ以下のように修正したところ、正常に動作しました。

/CMakeLists.txt
  cmake_minimum_required(VERSION 3.16)

  project(plasma-%{APPNAMELC})
 
  find_package(ECM 1.4.0 REQUIRED NO_MODULE)
  set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
+ set(QT_MAJOR_VERSION 6)
+ set(QT_DEFAULT_MAJOR_VERSION 6)

  include(KDEInstallDirs)
  include(KDECMakeSettings)
  include(KDECompilerSettings NO_POLICY_SCOPE)
  include(FeatureSummary)

+ find_package(Plasma REQUIRED)
  find_package(KF6 REQUIRED COMPONENTS
-     Plasma
      I18n
  )

  find_package(Qt6 CONFIG REQUIRED COMPONENTS
      Qml
      Gui
      Core
  )

  # plasmoid
  # TODO: adapt "org.kde.plasma" here & elsewhere if needed (see README)
  plasma_install_package(package org.kde.plasma.%{APPNAMELC})

  # qml extension plugin
  add_subdirectory(plugin)

  feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)

/package/metadata.json
  {
      "KPackageStructure": "Plasma/Applet",
+     "X-Plasma-API-Minimum-Version": "6.0",
      "KPlugin": {
          "Authors": [
  ...
/package/contents/ui/main.qml
  /*
      SPDX-FileCopyrightText: %{CURRENT_YEAR} %{AUTHOR} <%{EMAIL}>
      SPDX-License-Identifier: LGPL-2.1-or-later
  */
  import QtQuick
  import QtQuick.Layouts
  import org.kde.plasma.plasmoid
  import org.kde.plasma.components as PlasmaComponents
  import org.kde.plasma.private.%{APPNAMELC} 1.0
- Item {
-     Plasmoid.fullRepresentation: ColumnLayout {
+ PlasmoidItem {
+     fullRepresentation: ColumnLayout {
          anchors.fill: parent
          PlasmaComponents.Label {
              Layout.alignment: Qt.AlignCenter
              text: HelloWorld.text
          }
      }
  }

Discussion