Make desktop files for Plasma integration from template

* Avoid redundant meta-data
* Take target suffix into account
This commit is contained in:
Martchus 2020-02-14 23:04:10 +01:00
parent 153fc24492
commit c103174609
10 changed files with 107 additions and 55 deletions

View File

@ -4,6 +4,7 @@ cmake_minimum_required(VERSION 3.1.0 FATAL_ERROR)
set(META_PROJECT_NAME syncthingtray)
set(META_PROJECT_TYPE application)
set(META_APP_AUTHOR "Martchus")
set(META_APP_AUTHOR_MAIL "martchus@gmx.net")
set(META_APP_URL "https://github.com/${META_APP_AUTHOR}/${META_PROJECT_NAME}")
set(META_APP_DESCRIPTION "Tray application for Syncthing")
set(META_APP_CATEGORIES "Network;FileTransfer")

View File

@ -41,7 +41,9 @@ include(WindowsResources)
include(LibraryTarget)
include(ConfigHeader)
install(
FILES ${META_PROJECT_NAME}.desktop
DESTINATION "share/kservices5"
COMPONENT desktop)
# configure and install desktop file
include(TemplateFinder)
find_template_file("${META_PROJECT_NAME}.desktop" "${META_PROJECT_NAME}" DESKTOP_TEMPLATE_FILE)
set(DESKTOP_TARGET_FILE "${CMAKE_CURRENT_BINARY_DIR}/${META_TARGET_NAME}.desktop")
configure_file("${DESKTOP_TEMPLATE_FILE}" "${DESKTOP_TARGET_FILE}")
install(FILES "${DESKTOP_TARGET_FILE}" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/kservices5" COMPONENT desktop)

View File

@ -0,0 +1,15 @@
[Desktop Entry]
Type=Service
Name=Trigger Syncthing scan
Name[de]="Syncthing-Rescan" im Servicemenü
X-KDE-PluginInfo-Author=@META_APP_AUTHOR@
X-KDE-PluginInfo-Email=@META_APP_AUTHOR_MAIL@
X-KDE-PluginInfo-License=@META_PROJECT_LICENSE@
X-KDE-PluginInfo-Name=@META_ID@
X-KDE-PluginInfo-Version=@META_VERSION_MAJOR@.@META_VERSION_MINOR@.@META_VERSION_PATCH@
X-KDE-Library=@META_TARGET_NAME@
X-KDE-Submenu=Syncthing
Icon=syncthingtray
ServiceTypes=KFileItemAction/Plugin
MimeType=application/octet-stream;inode/directory

View File

@ -1,10 +0,0 @@
[Desktop Entry]
Type=Service
Name=Trigger Syncthing scan
Name[de]="Syncthing-Rescan" im Servicemenü
X-KDE-Library=syncthingfileitemaction
X-KDE-Submenu=Syncthing
Icon=syncthingtray
ServiceTypes=KFileItemAction/Plugin
MimeType=application/octet-stream;inode/directory

View File

@ -3,27 +3,71 @@ cmake_minimum_required(VERSION 2.8.12)
# meta data
set(META_PROJECT_NAME syncthingplasmoid)
set(META_APP_NAME "Syncthing Plasmoid")
set(META_APP_AUTHOR "Martchus")
set(META_APP_DESCRIPTION "Plasmoid to interact with Syncthing")
set(META_PROJECT_TYPE qtplugin)
set(META_PLUGIN_CATEGORY plasma/applets)
set(META_ID "martchus.${META_PROJECT_NAME}")
set(META_QT5_VERSION 5.8)
# source files
set(PLASMOID_FILES
package/contents/ui/CompactRepresentation.qml
package/contents/ui/FullRepresentation.qml
package/contents/ui/DirectoriesPage.qml
package/contents/ui/DevicesPage.qml
package/contents/ui/DownloadsPage.qml
package/contents/ui/RecentChangesPage.qml
package/contents/ui/TopLevelView.qml
package/contents/ui/TopLevelItem.qml
package/contents/ui/DetailView.qml
package/contents/ui/DetailItem.qml
package/contents/ui/ToolTipTrigger.qml
package/contents/ui/ToolTipView.qml
package/contents/ui/TinyButton.qml
package/contents/ui/TinyButtonStyle.qml
package/contents/ui/ButtonShadow.qml
package/contents/ui/IconLabel.qml
package/contents/ui/StatisticsView.qml
package/contents/ui/main.qml)
# find ECM (required by KF5Plasma)
find_package(ECM REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR} ${CMAKE_MODULE_PATH})
# find KF5Plasma
find_package(KF5Plasma REQUIRED)
# add subdirs
# find c++utilities
find_package(c++utilities${CONFIGURATION_PACKAGE_SUFFIX} 5.0.0 REQUIRED)
list(APPEND CMAKE_MODULE_PATH ${CPP_UTILITIES_MODULE_DIRS})
# prepare plasmoid package/configuration
set(PLASMOID_PACKAGE_DIR "${CMAKE_CURRENT_BINARY_DIR}/package")
file(MAKE_DIRECTORY "${PLASMOID_PACKAGE_DIR}")
set(PLASMOID_CONFIG_TARGET_FILE "${PLASMOID_PACKAGE_DIR}/metadata.desktop")
# make plugin library
add_subdirectory(lib)
plasma_install_package(package ${META_ID})
# make plasmoid configuration
include(TemplateFinder)
find_template_file("metadata.desktop" "${META_PROJECT_NAME}" PLASMOID_CONFIG_TEMPLATE_FILE)
get_filename_component(PLASMOID_CONFIG_TARGET_FILE_ABSOLUTE_PATH "${PLASMOID_CONFIG_TARGET_FILE}" REALPATH BASE_DIR "${CMAKE_BINARY_DIR}")
configure_file("${PLASMOID_CONFIG_TEMPLATE_FILE}" "${PLASMOID_CONFIG_TARGET_FILE}")
# make plasmoid package folder
foreach (PLASMOID_FILE ${PLASMOID_FILES})
get_filename_component(PLASMOID_FILE_DIR "${PLASMOID_FILE}" DIRECTORY)
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/${PLASMOID_FILE_DIR}")
file(COPY "${PLASMOID_FILE}" DESTINATION "${CMAKE_CURRENT_BINARY_DIR}/${PLASMOID_FILE_DIR}")
endforeach ()
# install plasmoid files
plasma_install_package("${PLASMOID_PACKAGE_DIR}" "${META_ID}")
# add target to ease testing the plasmoid (see testing.md)
set(PLASMOID_TESTDIR "${CMAKE_CURRENT_BINARY_DIR}/testdir" CACHE STRING "specifies the Plasmoid test directory")
file(MAKE_DIRECTORY "${PLASMOID_TESTDIR}")
add_custom_target(init_plasmoid_testing
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/scripts/inittesting.sh"
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/scripts/inittesting.sh" "${PLASMOID_CONFIG_TARGET_FILE_ABSOLUTE_PATH}"
WORKING_DIRECTORY "${PLASMOID_TESTDIR}"
)

View File

@ -5,12 +5,12 @@ Icon=syncthingtray
Type=Service
Keywords=syncthing;sync;
X-KDE-ParentApp=
X-KDE-PluginInfo-Author=Martchus
X-KDE-PluginInfo-Email=martchus@gmx.net
X-KDE-PluginInfo-License=GPLv2
X-KDE-PluginInfo-Name=martchus.syncthingplasmoid
X-KDE-PluginInfo-Version=0.1
X-KDE-PluginInfo-Website=https://github.com/martchus/syncthingtray
X-KDE-PluginInfo-Author=@META_APP_AUTHOR@
X-KDE-PluginInfo-Email=@META_APP_AUTHOR_MAIL@
X-KDE-PluginInfo-License=@META_PROJECT_LICENSE@
X-KDE-PluginInfo-Name=@META_ID@
X-KDE-PluginInfo-Version=@META_VERSION_MAJOR@.@META_VERSION_MINOR@.@META_VERSION_PATCH@
X-KDE-PluginInfo-Website=@META_APP_URL@
X-KDE-ServiceTypes=Plasma/Applet
X-Plasma-NotificationArea=true
X-Plasma-API=declarativeappletscript
@ -18,4 +18,4 @@ X-Plasma-MainScript=ui/main.qml
X-Plasma-RemoteLocation=
X-KDE-PluginInfo-EnabledByDefault=true
X-KDE-PluginInfo-Category=System Information
X-KDE-Library=syncthingplasmoid
X-KDE-Library=@META_TARGET_NAME@

View File

@ -2,34 +2,11 @@
set(HEADER_FILES syncthingapplet.h settingsdialog.h)
set(SRC_FILES syncthingapplet.cpp settingsdialog.cpp)
set(WIDGETS_UI_FILES appearanceoptionpage.ui)
set(PLASMOID_FILES
../package/metadata.desktop
../package/contents/ui/CompactRepresentation.qml
../package/contents/ui/FullRepresentation.qml
../package/contents/ui/DirectoriesPage.qml
../package/contents/ui/DevicesPage.qml
../package/contents/ui/DownloadsPage.qml
../package/contents/ui/RecentChangesPage.qml
../package/contents/ui/TopLevelView.qml
../package/contents/ui/TopLevelItem.qml
../package/contents/ui/DetailView.qml
../package/contents/ui/DetailItem.qml
../package/contents/ui/ToolTipTrigger.qml
../package/contents/ui/ToolTipView.qml
../package/contents/ui/TinyButton.qml
../package/contents/ui/TinyButtonStyle.qml
../package/contents/ui/ButtonShadow.qml
../package/contents/ui/IconLabel.qml
../package/contents/ui/StatisticsView.qml
../package/contents/ui/main.qml)
list(APPEND QML_SRC_FILES ${PLASMOID_FILES})
foreach (PLASMOID_FILE ${PLASMOID_FILES})
list(APPEND QML_SRC_FILES "../${PLASMOID_FILE}")
endforeach ()
set(TS_FILES ../translations/${META_PROJECT_NAME}_de_DE.ts ../translations/${META_PROJECT_NAME}_en_US.ts)
# find c++utilities
find_package(c++utilities${CONFIGURATION_PACKAGE_SUFFIX} 5.0.0 REQUIRED)
list(APPEND CMAKE_MODULE_PATH ${CPP_UTILITIES_MODULE_DIRS})
# find qtutilities
find_package(qtutilities${CONFIGURATION_PACKAGE_SUFFIX} 6.0.0 REQUIRED)
use_qt_utilities()
@ -62,5 +39,10 @@ include(WindowsResources)
include(LibraryTarget)
include(ConfigHeader)
# export some variable for further use in the overall plasmoid build script
set(META_TARGET_NAME "${META_TARGET_NAME}" PARENT_SCOPE)
set(META_ID "martchus.${META_TARGET_NAME}" PARENT_SCOPE)
set(META_PROJECT_LICENSE "${META_PROJECT_LICENSE}" PARENT_SCOPE)
# what ever this does, it is done
kcoreaddons_desktop_to_json("${META_PROJECT_NAME}" ../package/metadata.desktop)
kcoreaddons_desktop_to_json("${META_TARGET_NAME}" "${PLASMOID_CONFIG_TARGET_FILE}" DESKTOP_TO_JSON_OUTPUT_DIR "${PLASMOID_PACKAGE_DIR}")

2
plasmoid/package/.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
# the generated desktop file is required by inittesting.sh
metadata.desktop

View File

@ -1,4 +1,17 @@
#!/bin/sh
#!/bin/bash
set -e
# use the package dir within the source-tree so one does not need to run CMake again for updating
# build-tree copy all the time
package_dir=$(dirname $0)/../package
# copy the generated desktop file back into the source-tree package dir so it can actually be used
meta_data_file=$1
cp --target-directory="$package_dir" "$meta_data_file"
# install or update the package into the working directory
export HOME="$PWD"
plasmapkg2 --install $(dirname $0)/../package || plasmapkg2 --upgrade $(dirname $0)/../package
if ! plasmapkg2 --install "$package_dir"; then
plasmapkg2 --upgrade "$package_dir"
fi
exit $?

View File

@ -20,6 +20,9 @@ set(TEST_SRC_FILES tests/manualtesting.cpp)
set(TS_FILES)
# don't allow adding a target suffix to the test library
set(SYNCTHINGTESTHELPER_CONFIGURATION_TARGET_SUFFIX none)
# find c++utilities
find_package(c++utilities${CONFIGURATION_PACKAGE_SUFFIX} 5.0.0 REQUIRED)
use_cpp_utilities()