🚨
Plasma AppletのHello World
結論
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