Skip to content

Commit c7aaddf

Browse files
committed
Resources: translations, appstream metainfo, desktop file update
1 parent 9e06835 commit c7aaddf

15 files changed

+657
-14
lines changed

BSD-3-Clause

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
License: BSD-3-Clause
2+
Redistribution and use in source and binary forms, with or without
3+
modification, are permitted provided that the following conditions
4+
are met:
5+
1. Redistributions of source code must retain the above copyright
6+
notice, this list of conditions and the following disclaimer.
7+
2. Redistributions in binary form must reproduce the above copyright
8+
notice, this list of conditions and the following disclaimer in the
9+
documentation and/or other materials provided with the distribution.
10+
3. Neither the name of the University nor the names of its contributors
11+
may be used to endorse or promote products derived from this software
12+
without specific prior written permission.
13+
.
14+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
15+
``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
16+
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
17+
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE HOLDERS OR
18+
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19+
EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20+
PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21+
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
22+
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
23+
NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24+
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25+

CMakeLists.txt

Lines changed: 87 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,22 @@ set(CMAKE_CXX_STANDARD 17)
1212
set(CMAKE_CXX_STANDARD_REQUIRED ON)
1313
set(CMAKE_INCLUDE_CURRENT_DIR ON)
1414

15+
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
16+
17+
include(Config.cmake)
18+
19+
# QtCreator doesn't use the system locale and I see no way to prefix with LANG=XYZ.UTF-8 the command,
20+
# so enabling these 2 settings we can test any language, see initLocale() in main.cpp.
21+
set(PROJECT_TRANSLATION_TEST_ENABLED 0 CACHE STRING "Whether to enable translation testing [default: 0]")
22+
set(PROJECT_TRANSLATION_TEST_LANGUAGE "en" CACHE STRING "Country code of language to test in IDE [default: en]")
1523
set(PROJECT_QT_VERSION 6 CACHE STRING "Qt version to use [Default: 6]")
24+
option(PROJECT_TRANSLATIONS_UPDATE "Update source translations [default: OFF]" OFF)
1625

1726
#set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fsanitize=undefined")
1827
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fsanitize=undefined")
1928

2029
find_package(QT NAMES Qt${PROJECT_QT_VERSION})
21-
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
30+
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets LinguistTools)
2231
find_package(PkgConfig REQUIRED)
2332
pkg_search_module(GLIB REQUIRED glib-2.0)
2433
find_package(LibXml2 REQUIRED)
@@ -37,10 +46,55 @@ set(PROJECT_SOURCES
3746
keyboard-layouts.c
3847
keyboard-layouts.h
3948
)
40-
source_group("" FILES ${PROJECT_SOURCES})
41-
49+
set(PROJECT_OTHER_FILES
50+
.github/workflows/build.yml
51+
README.md
52+
)
53+
file(GLOB PROJECT_TRANSLATION_SOURCES "${PROJECT_TRANSLATIONS_DIR}/*")
54+
source_group("" FILES
55+
${PROJECT_SOURCES}
56+
${PROJECT_TRANSLATION_SOURCES}
57+
)
58+
#===================================================================================================
59+
# Translations
60+
#===================================================================================================
61+
include(LXQtTranslate)
62+
lxqt_translate_ts(PROJECT_QM_FILES
63+
SOURCES ${PROJECT_SOURCES}
64+
TEMPLATE ${PROJECT_ID}
65+
TRANSLATION_DIR "${PROJECT_TRANSLATIONS_DIR}"
66+
UPDATE_TRANSLATIONS ${PROJECT_TRANSLATIONS_UPDATE}
67+
INSTALL_DIR "${CMAKE_INSTALL_DATADIR}/${PROJECT_ID}/translations"
68+
)
69+
lxqt_translate_desktop(PROJECT_DESKTOP_FILES
70+
SOURCES "${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.desktop.in"
71+
TRANSLATION_DIR "${PROJECT_TRANSLATIONS_DIR}"
72+
USE_YAML
73+
)
74+
#===================================================================================================
75+
# Application
76+
#===================================================================================================
4277
qt_add_executable(${PROJECT_NAME} MANUAL_FINALIZATION
4378
${PROJECT_SOURCES}
79+
${PROJECT_DESKTOP_FILES}
80+
${PROJECT_OTHER_FILES}
81+
${PROJECT_QM_FILES}
82+
${PROJECT_TRANSLATION_SOURCES}
83+
)
84+
include(GNUInstallDirs)
85+
set(PROJECT_ICON_SYSTEM_PATH "${CMAKE_INSTALL_FULL_DATADIR}/icons/hicolor/scalable/apps")
86+
file(COPY_FILE "${CMAKE_SOURCE_DIR}/data/${PROJECT_APPSTREAM_ID}.svg"
87+
"${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.svg"
88+
)
89+
target_compile_definitions(${PROJECT_NAME} PRIVATE
90+
APPLICATION_NAME="${PROJECT_NAME}"
91+
APPLICATION_VERSION="${PROJECT_VERSION}"
92+
PROJECT_ID="${PROJECT_ID}"
93+
PROJECT_APPSTREAM_ID="${PROJECT_APPSTREAM_ID}"
94+
PROJECT_DATA_DIR="${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}"
95+
PROJECT_ICON_SYSTEM_PATH="${PROJECT_ICON_SYSTEM_PATH}"
96+
PROJECT_TRANSLATION_TEST_ENABLED=${PROJECT_TRANSLATION_TEST_ENABLED}
97+
PROJECT_TRANSLATION_TEST_LANGUAGE="${PROJECT_TRANSLATION_TEST_LANGUAGE}"
4498
)
4599
target_include_directories(${PROJECT_NAME} PRIVATE ${GLIB_INCLUDE_DIRS})
46100
target_include_directories(${PROJECT_NAME} PRIVATE ${LIBXML2_INCLUDE_DIR})
@@ -51,11 +105,39 @@ target_link_libraries(${PROJECT_NAME} PRIVATE
51105
${LIBXML2_LIBRARIES}
52106
)
53107
#target_link_options(${PROJECT_NAME} BEFORE PUBLIC -fsanitize=undefined PUBLIC -fsanitize=address)
54-
55-
include(GNUInstallDirs)
108+
#===================================================================================================
109+
# Installation
110+
#===================================================================================================
111+
configure_file("${CMAKE_SOURCE_DIR}/data/${PROJECT_APPSTREAM_ID}.desktop.in"
112+
"${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.desktop.in" @ONLY
113+
)
114+
configure_file("${CMAKE_SOURCE_DIR}/data/${PROJECT_APPSTREAM_ID}.appdata.xml.in"
115+
"${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.appdata.xml" @ONLY
116+
)
56117
install(TARGETS ${PROJECT_NAME}
57118
BUNDLE DESTINATION .
58119
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
59120
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
60121
)
122+
install(FILES "${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.appdata.xml"
123+
DESTINATION "${CMAKE_INSTALL_DATADIR}/metainfo"
124+
)
125+
install(FILES "${PROJECT_DESKTOP_FILES}"
126+
DESTINATION "${CMAKE_INSTALL_DATADIR}/applications"
127+
)
128+
install(FILES "${CMAKE_BINARY_DIR}/${PROJECT_APPSTREAM_ID}.svg"
129+
# Don't use PROJECT_ICON_SYSTEM_PATH here which is absolute and doesn't take prefixes into account
130+
DESTINATION "${CMAKE_INSTALL_DATADIR}/icons/hicolor/scalable/apps"
131+
)
61132
qt_finalize_executable(${PROJECT_NAME})
133+
#===================================================================================================
134+
# Configuration report
135+
#===================================================================================================
136+
message(STATUS "
137+
Project name: ${PROJECT_NAME}
138+
Version: ${PROJECT_VERSION}
139+
Qt version: ${QT_VERSION}
140+
Build type: ${CMAKE_BUILD_TYPE}
141+
Install prefix: ${CMAKE_INSTALL_PREFIX}
142+
Update translations before build: ${PROJECT_TRANSLATIONS_UPDATE}
143+
")

Config.cmake

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
#===============================================================================
2+
# Editable project configuration
3+
#
4+
# Essential, non translatable application information (except DESCRIPTION).
5+
# Translatable strings are passed via code.
6+
#===============================================================================
7+
set(PROJECT_ID "labwc-tweaks")
8+
list(APPEND PROJECT_CATEGORIES "Settings;System") # Freedesktop menu categories
9+
list(APPEND PROJECT_KEYWORDS "labwc;wayland;compositor")
10+
set(PROJECT_AUTHOR_NAME "Labwc Team")
11+
set(PROJECT_COPYRIGHT_YEAR "2024") # TODO: from git
12+
set(PROJECT_DESCRIPTION "Labwc Wayland compositor settings")
13+
set(PROJECT_ORGANIZATION_NAME "labwc")
14+
set(PROJECT_ORGANIZATION_URL "${PROJECT_ORGANIZATION_NAME}.github.io")
15+
set(PROJECT_ORGANIZATION_ID "io.github.${PROJECT_ORGANIZATION_NAME}")
16+
set(PROJECT_REPOSITORY_URL "https://github.com/${PROJECT_ORGANIZATION_NAME}/${PROJECT_ID}")
17+
set(PROJECT_REPOSITORY_BRANCH "master")
18+
set(PROJECT_HOMEPAGE_URL ${PROJECT_REPOSITORY_URL}) # TODO: "https://${PROJECT_ORGANIZATION_URL}/${PROJECT_ID}"
19+
set(PROJECT_SPDX_ID "GPL-2.0-only")
20+
set(PROJECT_TRANSLATIONS_DIR "${CMAKE_SOURCE_DIR}/data/translations")
21+
set(PROJECT_SCREENSHOT_URL "https://github-production-user-asset-6210df.s3.amazonaws.com/1019119/294060534-84ef3747-f336-444e-9e2c-9a417ebe67e5.png")
22+
#===============================================================================
23+
# Appstream
24+
#===============================================================================
25+
set(PROJECT_APPSTREAM_SPDX_ID "CC0-1.0")
26+
set(PROJECT_APPSTREAM_ID "labwc_tweaks")
27+
#===============================================================================
28+
# Adapt to CMake variables
29+
#===============================================================================
30+
set(${PROJECT_NAME}_DESCRIPTION "${PROJECT_DESCRIPTION}")
31+
set(${PROJECT_NAME}_HOMEPAGE_URL "${PROJECT_HOMEPAGE_URL}")

bin/lxqt-transupdate

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
#!/bin/sh
2+
3+
#=============================================================================
4+
# Copyright 2018 Alf Gaida <agaida@siduction.org>
5+
#
6+
# Redistribution and use in source and binary forms, with or without
7+
# modification, are permitted provided that the following conditions
8+
# are met:
9+
#
10+
# 1. Redistributions of source code must retain the copyright
11+
# notice, this list of conditions and the following disclaimer.
12+
# 2. Redistributions in binary form must reproduce the copyright
13+
# notice, this list of conditions and the following disclaimer in the
14+
# documentation and/or other materials provided with the distribution.
15+
# 3. The name of the author may not be used to endorse or promote products
16+
# derived from this software without specific prior written permission.
17+
#
18+
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
19+
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20+
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21+
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22+
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23+
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24+
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25+
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26+
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27+
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28+
#=============================================================================
29+
30+
# lxqt-transupdate
31+
# Update LXQt translation files.
32+
33+
# just to be sure - for distributions that user qtchooser
34+
# Debian and derivatives, Fedora, FreeBSD, Mageia, OpenMandriva, PCLinuxOS
35+
export QT_SELECT=6
36+
37+
TEMPLATES=$(find . -name \*.ts | grep -v '_')
38+
for i in $TEMPLATES; do
39+
echo "\n\n==== $i ====\n"
40+
TRANSDIR=$(dirname $i)
41+
SOURCEDIR=$(dirname $TRANSDIR)
42+
# template-update
43+
echo "== Template Update =="
44+
echo "lupdate $SOURCEDIR -ts $i -locations absolute -no-obsolete\n"
45+
lupdate $SOURCEDIR -ts $i -locations absolute -no-obsolete
46+
echo
47+
echo "== Language updates =="
48+
echo "lupdate $SOURCEDIR -ts $TRANSDIR/*_*.ts -locations absolute -no-obsolete\n"
49+
lupdate $SOURCEDIR -ts $TRANSDIR/*_*.ts -locations absolute -no-obsolete
50+
done

0 commit comments

Comments
 (0)