Brand product metadata as SHIFT

Update session, AppStream, service, shell metadata, and initial setup about/defaults to use SHIFT-facing product metadata while keeping runtime package IDs and executable names stable. Install Shift AppStream metadata and remove stale upstream metainfo from existing prefixes. Add a guard for product metadata branding.
This commit is contained in:
Marco Allegretti 2026-05-17 15:44:56 +02:00
parent a3173160e2
commit 18bef9a573
13 changed files with 158 additions and 395 deletions

View file

@ -166,7 +166,8 @@ if(BUILD_TESTING)
add_subdirectory(tests)
endif()
install(FILES org.kde.plasma.mobileshell.metainfo.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
install(CODE "file(REMOVE \"\$ENV{DESTDIR}${KDE_INSTALL_FULL_METAINFODIR}/org.kde.plasma.mobileshell.metainfo.xml\")")
install(FILES org.shift.mobile.metainfo.xml DESTINATION ${KDE_INSTALL_METAINFODIR})
find_program(PlasmaOpenSettings plasma-open-settings)
set_package_properties(PlasmaOpenSettings PROPERTIES

View file

@ -5,86 +5,6 @@
Exec=@CMAKE_INSTALL_FULL_LIBEXECDIR@/plasma-dbus-run-session-if-needed @CMAKE_INSTALL_FULL_LIBEXECDIR@/startplasmamobile-dev.sh
Type=Application
DesktopNames=KDE
Name=Plasma Mobile (Development)
Name[ar]=بلازما الجوال (التطوير)
Name[az]=Plasma Mobil (Tərtibat)
Name[ca]=Plasma Mobile (Desenvolupament)
Name[ca@valencia]=Plasma Mobile (desenvolupament)
Name[cs]=Plasma Mobile (Vývojová)
Name[de]=Plasma Mobile (Entwicklung)
Name[en_GB]=Plasma Mobile (Development)
Name[eo]=Plasma Poŝtelefono (Evoluo)
Name[es]=Plasma Mobile (desarrollo)
Name[eu]=Plasma Mugikorra (Garapena)
Name[fi]=Plasma Mobile (kehitys)
Name[fr]=Plasma Mobile (Développement)
Name[gl]=Plasma Mobile (desenvolvemento)
Name[he]=פלזמה לניידים (פיתוח)
Name[hu]=Plasma Mobile (fejlesztői)
Name[ia]=Plasma Mobile (Disveloppamento)
Name[is]=Plasma Mobile (þróunarútgáfa)
Name[it]=Plasma Mobile (sviluppo)
Name[ka]=Plasma Mobile (ბეტა)
Name[ko]=Plasma 모바일(개발)
Name[lv]=Plasma Mobile (izstrādē)
Name[nl]=Plasma Mobile (ontwikkeling)
Name[nn]=Plasma Mobile (utvikling)
Name[pa]= ਈਲ (ਵਿਕਾਸ)
Name[pl]=Przenośna Plazma (Rozwój)
Name[pt]=Plasma Mobile (Desenvolvimento)
Name[pt_BR]=Plasma Mobile (desenvolvimento)
Name[ru]=Plasma Mobile (разработка)
Name[sa]= ईल (विकास)
Name[sk]=Plasma Mobile (Vývoj)
Name[sl]=Plasma Mobile (Razvoj)
Name[sv]=Plasma mobil (utvecklingsversion)
Name[ta]=ி ி (ி)
Name[tr]=Plasma Cep (Geliştirme)
Name[uk]=Мобільна Плазма (версія у розробці)
Name[zh_CN]=Plasma Mobile (开发)
Name[zh_TW]=Plasma
Comment=Plasma Mobile by KDE
Comment[ar]=بلازما الجوال من كيدي
Comment[az]=KDE Plasma Mobil
Comment[ca]=Plasma Mobile, creat per la comunitat KDE
Comment[ca@valencia]=Plasma Mobile, creat per la comunitat KDE
Comment[cs]=Plasma Mobile od KDE
Comment[da]=Plasma Mobile fra KDE
Comment[de]=Plasma Mobile von KDE
Comment[en_GB]=Plasma Mobile by KDE
Comment[eo]=Plasma Mobile de KDE
Comment[es]=Plasma Mobile creado por KDE
Comment[et]=KDE Plasma Mobile
Comment[eu]=Plasma Mugikorra KDEk egina
Comment[fi]=KDE:n Plasma Mobile
Comment[fr]=Plasma Mobile par KDE
Comment[gl]=Plasma Mobile de KDE.
Comment[he]=פלזמה לניידים מבית KDE
Comment[hi]=
Comment[hu]=Plasma Mobile a KDE-től
Comment[ia]=Plasma Mobile per KDE
Comment[id]=Plasma Mobile oleh KDE
Comment[is]=Plasma Mobile frá KDE
Comment[it]=Plasma Mobile creato da KDE
Comment[ka]= Plasma, KDE-
Comment[ko]=KDE Plasma
Comment[lt]=Plasma mobilioji sąsaja pagal KDE
Comment[lv]=KDE Plasma Mobile
Comment[nl]=Plasma Mobile door KDE
Comment[nn]=Plasma Mobile frå KDE
Comment[pa]=KDE
Comment[pl]=Plazma Mobile stworzona przez KDE
Comment[pt]=Plasma Mobile do KDE
Comment[pt_BR]=Plasma Mobile do KDE
Comment[ro]=Plasma Mobile, de către KDE
Comment[ru]=KDE Plasma Mobile
Comment[sa]=
Comment[sk]=Plasma Mobile od KDE
Comment[sl]=Plasma Mobile od KDE
Comment[sv]=Plasma mobil av KDE
Comment[ta]=... ி ி
Comment[tr]=KDE tarafından yapılan Plasma Cep
Comment[uk]=Мобільна Плазма від KDE
Comment[zh_CN]=KDE Plasma Mobile
Comment[zh_TW]= KDE Plasma
Name=SHIFT (Development)
Comment=Convergent SHIFT shell session with development DBus setup
X-KDE-PluginInfo-Version=${PROJECT_VERSION}

View file

@ -6,92 +6,6 @@ Exec=@CMAKE_INSTALL_FULL_LIBEXECDIR@/plasma-dbus-run-session-if-needed ${CMAKE_I
TryExec=${CMAKE_INSTALL_FULL_BINDIR}/startplasmamobile
Type=Application
DesktopNames=KDE
Name=Plasma Mobile
Name[ar]=بلازما الجوال
Name[az]=Plasma Mobil
Name[ca]=Plasma Mobile
Name[ca@valencia]=Plasma Mobile
Name[cs]=Plasma Mobile
Name[da]=Plasma Mobile
Name[de]=Plasma Mobile
Name[en_GB]=Plasma Mobile
Name[eo]=Plasma Poŝtelefono
Name[es]=Plasma Mobile
Name[et]=Plasma Mobile
Name[eu]=Plasma Mugikorra
Name[fi]=Plasma Mobile
Name[fr]=Plasma Mobile
Name[gl]=Plasma Mobile
Name[he]=פלזמה לניידים
Name[hi]=
Name[hu]=Plasma Mobile
Name[ia]=Plasma Mobile
Name[id]=Plasma Mobile
Name[is]=Plasma Mobile
Name[it]=Plasma Mobile
Name[ka]=Plasma Mobile
Name[ko]=Plasma
Name[lt]=Plasma mobilioji sąsaja
Name[lv]=Plasma Mobile
Name[nl]=Plasma Mobile
Name[nn]=Plasma Mobile
Name[pa]=
Name[pl]=Przenośna Plazma
Name[pt]=Plasma Mobile
Name[pt_BR]=Plasma Mobile
Name[ro]=Plasma Mobile
Name[ru]=Plasma Mobile
Name[sa]=
Name[sk]=Plasma Mobile
Name[sl]=Plasma Mobile
Name[sv]=Plasma mobil
Name[ta]=ி ி
Name[tr]=Plasma Cep
Name[uk]=Мобільна Плазма
Name[zh_CN]=Plasma Mobile
Name[zh_TW]=Plasma
Comment=Plasma Mobile by KDE
Comment[ar]=بلازما الجوال من كيدي
Comment[az]=KDE Plasma Mobil
Comment[ca]=Plasma Mobile, creat per la comunitat KDE
Comment[ca@valencia]=Plasma Mobile, creat per la comunitat KDE
Comment[cs]=Plasma Mobile od KDE
Comment[da]=Plasma Mobile fra KDE
Comment[de]=Plasma Mobile von KDE
Comment[en_GB]=Plasma Mobile by KDE
Comment[eo]=Plasma Mobile de KDE
Comment[es]=Plasma Mobile creado por KDE
Comment[et]=KDE Plasma Mobile
Comment[eu]=Plasma Mugikorra KDEk egina
Comment[fi]=KDE:n Plasma Mobile
Comment[fr]=Plasma Mobile par KDE
Comment[gl]=Plasma Mobile de KDE.
Comment[he]=פלזמה לניידים מבית KDE
Comment[hi]=
Comment[hu]=Plasma Mobile a KDE-től
Comment[ia]=Plasma Mobile per KDE
Comment[id]=Plasma Mobile oleh KDE
Comment[is]=Plasma Mobile frá KDE
Comment[it]=Plasma Mobile creato da KDE
Comment[ka]= Plasma, KDE-
Comment[ko]=KDE Plasma
Comment[lt]=Plasma mobilioji sąsaja pagal KDE
Comment[lv]=KDE Plasma Mobile
Comment[nl]=Plasma Mobile door KDE
Comment[nn]=Plasma Mobile frå KDE
Comment[pa]=KDE
Comment[pl]=Plazma Mobile stworzona przez KDE
Comment[pt]=Plasma Mobile do KDE
Comment[pt_BR]=Plasma Mobile do KDE
Comment[ro]=Plasma Mobile, de către KDE
Comment[ru]=KDE Plasma Mobile
Comment[sa]=
Comment[sk]=Plasma Mobile od KDE
Comment[sl]=Plasma Mobile od KDE
Comment[sv]=Plasma mobil av KDE
Comment[ta]=... ி ி
Comment[tr]=KDE tarafından yapılan Plasma Cep
Comment[uk]=Мобільна Плазма від KDE
Comment[zh_CN]=KDE Plasma Mobile
Comment[zh_TW]= KDE Plasma
Name=SHIFT
Comment=Convergent SHIFT shell session
X-KDE-PluginInfo-Version=${PROJECT_VERSION}

View file

@ -36,12 +36,14 @@ int main(int argc, char *argv[])
// start wizard
KLocalizedString::setApplicationDomain("plasma_org.kde.plasma.mobileinitialstart");
KAboutData aboutData(QStringLiteral("plasma-mobile-initial-start"),
QStringLiteral("Initial Start"),
QStringLiteral("SHIFT Initial Setup"),
QStringLiteral(PLASMA_MOBILE_VERSION_STRING),
QStringLiteral(""),
KAboutLicense::GPL,
i18n("© 2026 KDE Community"));
i18n("© 2023-2026 Plasma Mobile and SHIFT contributors"));
aboutData.addAuthor(i18n("Devin Lin"), QString(), QStringLiteral("devin@kde.org"));
aboutData.addAuthor(i18n("SHIFT Contributors"));
aboutData.setBugAddress("https://invent.kde.org/marcoa/shift-shell/-/issues");
KAboutData::setApplicationData(aboutData);
// parse command

View file

@ -11,7 +11,7 @@
<group name="General">
<entry name="colorScheme" key="ColorScheme" type="String">
<label>Color scheme name</label>
<default>BreezeLight</default>
<default>ShiftLight</default>
</entry>
<entry name="accentColor" key="AccentColor" type="Color">
<label>Accent color</label>

View file

@ -19,7 +19,7 @@ PrepareUtil::PrepareUtil(QObject *parent)
initKScreen([]() { });
// set property initially
m_usingDarkTheme = m_colorsSettings->colorScheme() == "BreezeDark";
m_usingDarkTheme = m_colorsSettings->colorScheme() == "ShiftDark";
}
void PrepareUtil::initKScreen(std::function<void()> callback)
@ -109,9 +109,9 @@ void PrepareUtil::setUsingDarkTheme(bool usingDarkTheme)
{
// use plasma-apply-colorscheme since it has logic for notifying the shell of changes
if (usingDarkTheme) {
QProcess::execute("plasma-apply-colorscheme", {QStringLiteral("BreezeDark")});
QProcess::execute("plasma-apply-colorscheme", {QStringLiteral("ShiftDark")});
} else {
QProcess::execute("plasma-apply-colorscheme", {QStringLiteral("BreezeLight")});
QProcess::execute("plasma-apply-colorscheme", {QStringLiteral("ShiftLight")});
}
m_usingDarkTheme = usingDarkTheme;

View file

@ -44,11 +44,9 @@ Item {
readonly property bool isLandscape: width >= height
source: {
// Default wallpaper background
// Needs to be in-sync with breeze/wallpapers/Next/contents/images
const imgFile = isLandscape ? '5120x2880.png' : '1440x2960.png';
const lightWallpaperFolder = 'wallpapers/Next/contents/images/';
const darkWallpaperFolder = 'wallpapers/Next/contents/images_dark/';
const imgFile = '5120x2880.png';
const lightWallpaperFolder = 'wallpapers/SHIFT/contents/images/';
const darkWallpaperFolder = 'wallpapers/SHIFT/contents/images_dark/';
const wallpaperUrl = StandardPaths.locate(
StandardPaths.GenericDataLocation,

View file

@ -1,99 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- SPDX-FileCopyrightText: 2025 Marco Mattiolo <marco.mattiolo@hotmail.it>
- SPDX-License-Identifier: GPL-2.0-or-later
-->
<component>
<id>org.kde.plasma.mobileshell</id>
<developer id="org.kde">
<name translate="no">KDE</name>
</developer>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0+</project_license>
<name>KDE Plasma Mobile Shell</name>
<name xml:lang="ar">صدفة بلازما الجوال من كيدي</name>
<name xml:lang="ca">Espai de treball del Plasma Mobile de KDE</name>
<name xml:lang="ca-valencia">Espai de treball Plasma Mobile de KDE</name>
<name xml:lang="cs">Rozhraní KDE Plasma Mobile</name>
<name xml:lang="es">Entorno KDE Plasma Móvil</name>
<name xml:lang="eu">KDE Plasma Mugikor Oskola</name>
<name xml:lang="fi">KDE Plasma Mobile -käyttöliittymä</name>
<name xml:lang="fr">Shell pour KDE Plasma Mobile</name>
<name xml:lang="he">מעטפת לניידים של פלזמה מבית KDE</name>
<name xml:lang="ia">KDE Plasma Mobile Shell (Shell de Plasma KDE Mobile)</name>
<name xml:lang="is">KDE Plasma snjalltækjaskel</name>
<name xml:lang="it">Shell Plasma Mobile di KDE</name>
<name xml:lang="ka">KDE Plasma Mobile-ის გარსი</name>
<name xml:lang="ko">KDE Plasma 모바일 셸</name>
<name xml:lang="lv">KDE „Plasma Mobile“ čaula</name>
<name xml:lang="nl">KDE Plasma Mobiel-shell</name>
<name xml:lang="pt-BR">Shell do KDE Plasma Mobile</name>
<name xml:lang="sl">KDE Plasma Mobile Shell</name>
<name xml:lang="sv">KDE Plasma mobilskal</name>
<name xml:lang="tr">KDE Plasma Cep Kabuğu</name>
<name xml:lang="uk">Оболонка Мобільної Плазми KDE</name>
<name xml:lang="zh-CN">KDE Plasma Mobile Shell</name>
<name xml:lang="zh-TW">KDE Plasma 行動殼層</name>
<summary>KDE's Plasma shell for mobile form-factor devices</summary>
<summary xml:lang="ar">صدفة بلازما كيدي للأجهزة المحمولة</summary>
<summary xml:lang="ca">Espai de treball del Plasma de KDE per a dispositius de factor de forma mòbil</summary>
<summary xml:lang="ca-valencia">Espai de treball Plasma de KDE per a dispositius de factor de forma mòbil</summary>
<summary xml:lang="es">Entorno de Plasma de KDE para dispositivos con factor de forma móvil</summary>
<summary xml:lang="eu">Mugikor forma faktorea duten gailuetarako KDEren Plasma Oskola</summary>
<summary xml:lang="fi">KDE Plasman käyttöliittymä mobiililaitteille</summary>
<summary xml:lang="fr">Shell pour KDE Plasma pour les périphériques de format mobile</summary>
<summary xml:lang="he">מעטפת פלזמה מבית KDE למכשירים בתצורת ניוד</summary>
<summary xml:lang="ia">Shell de Plasma per dispositivos de factor de forma mobile</summary>
<summary xml:lang="is">Plasma-skel frá KDE fyrir farsíma og snjalltæki</summary>
<summary xml:lang="it">Shell Plasma di KDE per dispositivi mobili</summary>
<summary xml:lang="ka">KDE's Plasma-ის გარსი მობილური ფორმფაქტორის მქონე მოწყობილობებისთვის</summary>
<summary xml:lang="ko">KDE의 모바일 장치를 위한 Plasma 셸</summary>
<summary xml:lang="lv">KDE „Plasma“ čaula ierīcēm ar maziem ekrāniem</summary>
<summary xml:lang="nl">Plasma-shell van KDE voor apparaten met mobiele vormfactor</summary>
<summary xml:lang="pt-BR">Shell do Plasma do KDE para dispositivos móveis</summary>
<summary xml:lang="sl">KDE's Plasma shell za mobilne naprave</summary>
<summary xml:lang="sv">KDE:s Plasma skal för mobilapparater</summary>
<summary xml:lang="tr">Taşınabilir biçimdeki aygıtlar için KDEnin Plasma kabuğu</summary>
<summary xml:lang="uk">Оболонка Плазми KDE для пристроїв мобільного форм-фактора</summary>
<summary xml:lang="zh-CN">KDE Plasma 的手机形态设备外壳程序</summary>
<summary xml:lang="zh-TW">行動裝置用的 KDE Plasma 殼層</summary>
<url type="homepage">https://plasma-mobile.org/</url>
<url type="bugtracker">https://bugs.kde.org/enter_bug.cgi?format=guided&amp;product=plasma-mobile</url>
<url type="vcs-browser">https://invent.kde.org/plasma/plasma-mobile</url>
<project_group>KDE</project_group>
<provides>
<binary>plasma.mobileshell</binary>
</provides>
<screenshots>
<screenshot type="default">
<caption>Plasma Mobile shell being used on mobile form-factor screen</caption>
<caption xml:lang="ar">تُستخدم صدفة بلازما الجوال على شاشة الجوال</caption>
<caption xml:lang="ca">Espai de treball del Plasma Mobile que es fa servir en una pantalla de factor de forma mòbil</caption>
<caption xml:lang="ca-valencia">Espai de treball Plasma Mobile que s'utilitza en una pantalla de factor de forma mòbil</caption>
<caption xml:lang="es">El entorno Plasma Mobile en uso en una pantalla con factor de forma móvil</caption>
<caption xml:lang="eu">Mugikor forma faktoreko pantaila batean Plasma Mugikor oskola erabiltzen</caption>
<caption xml:lang="fi">Plasma Mobilen käyttöliittymä käytössä mobiilinäytöllä</caption>
<caption xml:lang="fr">Shell pour Plasma Mobile utilisée sur un écran de périphérique de format mobile</caption>
<caption xml:lang="he">המעטפת של פלזמה לניידים מיועדת למסכים של מכשירים שמיועדים לניוד</caption>
<caption xml:lang="ia">KDE Plasma Mobile Shell e usate sur schermo de factor de forma mobile</caption>
<caption xml:lang="is">Plasma Mobile skel notuð á skjái farsíma og snjalltækja</caption>
<caption xml:lang="it">Shell di Plasma Mobile utilizzata su schermi per dispositivi mobili</caption>
<caption xml:lang="ka">Plasma Mobile-ის გარსი გამოიყენება მობილური ფორმფაქტორის მქონე ეკრანზე</caption>
<caption xml:lang="ko">모바일 화면에서 사용 중인 Plasma 모바일 셸</caption>
<caption xml:lang="lv">„Plasma Mobile“ čaula tiek izmantota viedtālruņa lieluma ekrānam</caption>
<caption xml:lang="nl">Plasma Mobiel-shell wordt gebruikt op schermen met een mobiele vormfactor</caption>
<caption xml:lang="pt-BR">O shell do Plasma Mobile está sendo usado em telas de fator de formato móvel</caption>
<caption xml:lang="sl">Plasma Mobile shell uporabljen za zaslon oblikovan za mobilno napravo</caption>
<caption xml:lang="sv">Plasma mobilskal använt på mobilskärm</caption>
<caption xml:lang="tr">Plasma Cep kabuğu, taşınabilir biçimli bir aygıtta kullanılırken</caption>
<caption xml:lang="uk">Оболонка Мобільної Плазми, яку використовують для екранів мобільного форм-фактора</caption>
<caption xml:lang="zh-CN">Plasma Mobile 的手机形态设备外壳程序</caption>
<caption xml:lang="zh-TW">Plasma 行動殼層在行動螢幕上使用</caption>
<image type="source">https://plasma-mobile.org/img/plasmaphone.png</image>
</screenshot>
</screenshots>
<compulsory_for_desktop>KDE</compulsory_for_desktop>
<releases>
<release version="6.4.5" date="2025-09-09"/>
</releases>
</component>

View file

@ -0,0 +1,33 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
- SPDX-FileCopyrightText: 2025 Marco Mattiolo <marco.mattiolo@hotmail.it>
- SPDX-License-Identifier: CC0-1.0
-->
<component>
<id>org.shift.mobile</id>
<developer id="org.shift">
<name translate="no">SHIFT Contributors</name>
</developer>
<metadata_license>CC0-1.0</metadata_license>
<project_license>GPL-2.0-or-later</project_license>
<name>SHIFT</name>
<summary>Convergent shell for mobile, desktop, and hybrid devices</summary>
<description>
<p>
SHIFT is an independent shell built on KDE Plasma Mobile. It includes convergence mode, a unified dock, window management controls, SHIFT visual defaults, and setup profiles for mobile, desktop, gaming, and hybrid devices.
</p>
<p>
SHIFT is not affiliated with or endorsed by KDE or the KDE community.
</p>
</description>
<url type="homepage">https://invent.kde.org/marcoa/shift-shell</url>
<url type="bugtracker">https://invent.kde.org/marcoa/shift-shell/-/issues</url>
<url type="vcs-browser">https://invent.kde.org/marcoa/shift-shell</url>
<provides>
<binary>startplasmamobile</binary>
</provides>
<compulsory_for_desktop>KDE</compulsory_for_desktop>
<releases>
<release version="6.6.80" date="2026-05-17"/>
</releases>
</component>

View file

@ -1,6 +1,6 @@
[Unit]
Description=Open-source user interface for phones, based on Plasma technologies
Documentation=https://invent.kde.org/plasma-mobile
Description=SHIFT shell session for tty1
Documentation=https://invent.kde.org/marcoa/shift-shell
# replaces the getty
Conflicts=getty@tty1.service

View file

@ -4,123 +4,18 @@
"Authors": [
{
"Email": "devin@kde.org",
"Name": "Devin Lin",
"Name[ar]": "ديفين لين",
"Name[az]": "Devin Lin",
"Name[ca@valencia]": "Devin Lin",
"Name[ca]": "Devin Lin",
"Name[cs]": "Devin Lin",
"Name[de]": "Devin Lin",
"Name[en_GB]": "Devin Lin",
"Name[eo]": "Devin Lin",
"Name[es]": "Devin Lin",
"Name[eu]": "Devin Lin",
"Name[fi]": "Devin Lin",
"Name[fr]": "Devin Lin",
"Name[gl]": "Devin Lin",
"Name[he]": "דווין לין",
"Name[hu]": "Devin Lin",
"Name[ia]": "Devin Lin",
"Name[is]": "Devin Lin",
"Name[it]": "Devin Lin",
"Name[ka]": "Devin Lin",
"Name[ko]": "Devin Lin",
"Name[lv]": "Devin Lin",
"Name[nl]": "Devin Lin",
"Name[nn]": "Devin Lin",
"Name[pa]": "ਡੇਵਿਨ ਲਿਨ",
"Name[pl]": "Devin Lin",
"Name[pt]": "Devin Lin",
"Name[pt_BR]": "Devin Lin",
"Name[ru]": "Devin Lin",
"Name[sa]": "डेविन् लिन्",
"Name[sk]": "Devin Lin",
"Name[sl]": "Devin Lin",
"Name[sv]": "Devin Lin",
"Name[tr]": "Devin Lin",
"Name[uk]": "Devin Lin",
"Name[zh_CN]": "Devin Lin",
"Name[zh_TW]": "Devin Lin"
"Name": "Devin Lin"
},
{
"Name": "SHIFT Contributors"
}
],
"Category": "",
"Description": "Plasma shell for mobile devices",
"Description[ar]": "صدفة بلازما للأجهزة الجوالة",
"Description[ca@valencia]": "Espai de treball Plasma per a dispositius mòbils",
"Description[ca]": "Espai de treball Plasma per a dispositius mòbils",
"Description[cs]": "Plasma shell pro mobilní zařízení",
"Description[de]": "Plasma-Shell für Mobilgeräte",
"Description[en_GB]": "Plasma shell for mobile devices",
"Description[eo]": "Plasma ŝelo por porteblaj aparatoj",
"Description[es]": "Intérprete de órdenes de Plasma para dispositivos móviles",
"Description[eu]": "Plasma oskola gailu mugikorretarako",
"Description[fi]": "Mobiililaitteiden Plasma-käyttöliittymä",
"Description[fr]": "Plasmashell pour périphériques mobiles",
"Description[gl]": "Intérprete de ordes de Plasma para dispositivos móbiles.",
"Description[he]": "מעטפת פלזמה למכשירים ניידים",
"Description[hu]": "Plasma felület mobileszközökhöz",
"Description[ia]": "Shell de Plasma per dispositivos mobile",
"Description[is]": "Plasma-skel fyrir síma",
"Description[it]": "Shell di Plasma per dispositivi mobili",
"Description[ka]": "Plasma გარსი ტელეფონისთვიის პარამეტრი Plasma Mobile-სთვის",
"Description[ko]": "모바일 장치용 Plasma 셸",
"Description[lv]": "„Plasma“ čaula mobilajām ierīcēm",
"Description[nl]": "Plasma-shell voor telefoons voor Plasma Mobile",
"Description[nn]": "Plasma-skal for telefonar og nettbrett",
"Description[pa]": "ਮੋਬਾਈਲ ਡਿਵਾਈਸ ਲਈ ਪਲਾਜ਼ਮਾ ਸ਼ੈਲ",
"Description[pl]": "Powłoka Plazmy dla urządzeń przenośnych",
"Description[pt]": "Consola do Plasma para telemóveis",
"Description[pt_BR]": "Plasma Shell para dispositivos móveis",
"Description[ru]": "Оболочка Plasma для смартфонов для Plasma Mobile",
"Description[sa]": "चलयन्त्राणां कृते प्लाज्मा-शैलम्",
"Description[sk]": "Plasma shell pre mobilné zariadenia",
"Description[sl]": "Plasma shell za mobilne naprave",
"Description[sv]": "Plasma skal för mobilapparater",
"Description[tr]": "Taşınabilir aygıtlar için Plasma kabuğu",
"Description[uk]": "Оболонка Плазми для мобільних пристроїв",
"Description[zh_CN]": "针对手机设备设计的 Plasma 外壳程序",
"Description[zh_TW]": "適用於行動裝置的 Plasma 殼層",
"Description": "SHIFT shell for mobile and convergent devices",
"Id": "org.kde.plasma.mobileshell",
"License": "GPLv2+",
"Name": "Plasma Mobile",
"Name[ar]": "بلازما الجوال",
"Name[ast]": "Plasma Mobile",
"Name[ca@valencia]": "Plasma Mobile",
"Name[ca]": "Plasma Mobile",
"Name[cs]": "Plasma Mobile",
"Name[de]": "Plasma Mobile",
"Name[en_GB]": "Plasma Mobile",
"Name[eo]": "Plasma Poŝtelefono",
"Name[es]": "Plasma Mobile",
"Name[eu]": "Plasma Mugikorra",
"Name[fi]": "Plasma Mobile",
"Name[fr]": "Plasma Mobile",
"Name[gl]": "Plasma Mobile",
"Name[he]": "פלזמה לניידים",
"Name[hu]": "Plasma Mobile",
"Name[ia]": "Plasma Mobile",
"Name[is]": "Plasma Mobile",
"Name[it]": "Plasma Mobile",
"Name[ka]": "Plasma Mobile",
"Name[ko]": "Plasma 모바일",
"Name[lv]": "„Plasma Mobile“",
"Name[nl]": "Plasma Mobile",
"Name[nn]": "Plasma Mobile",
"Name[pa]": "ਪਲਾਜ਼ਮਾ ਮੋਬਾਈਲ",
"Name[pl]": "Przenośna Plazma",
"Name[pt]": "Plasma Mobile",
"Name[pt_BR]": "Plasma Mobile",
"Name[ru]": "Plasma Mobile",
"Name[sa]": "प्लाज्मा मोबाईल",
"Name[sk]": "Plasma Mobile",
"Name[sl]": "Plasma Mobile",
"Name[sv]": "Plasma mobil",
"Name[ta]": "பிளாஸ்மா கைபேசி",
"Name[tr]": "Plasma Cep",
"Name[uk]": "Мобільна Плазма",
"Name[zh_CN]": "Plasma Mobile",
"Name[zh_TW]": "Plasma 行動",
"Website": "https://plasma-mobile.org"
"Name": "SHIFT",
"Website": "https://invent.kde.org/marcoa/shift-shell"
},
"X-Plasma-APIVersion": "2",
"X-Plasma-FallbackPackage": "org.kde.plasma.nano"

View file

@ -14,4 +14,9 @@ if(BASH_EXECUTABLE)
NAME shift-icon-theme-coverage
COMMAND ${BASH_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/check-shift-icon-theme.sh
)
add_test(
NAME shift-product-metadata
COMMAND ${BASH_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/check-shift-product-metadata.sh
)
endif()

View file

@ -0,0 +1,94 @@
#!/usr/bin/env bash
# SPDX-FileCopyrightText: 2026 Marco Allegretti <mightymarco4@gmail.com>
# SPDX-License-Identifier: EUPL-1.2
set -euo pipefail
repo_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$repo_dir"
fail() {
printf '%s\n' "$1" >&2
exit 1
}
require_line() {
local file="$1"
local pattern="$2"
local message="$3"
grep -Eq "$pattern" "$file" || fail "$message"
}
reject_line() {
local file="$1"
local pattern="$2"
local message="$3"
! grep -Eq "$pattern" "$file" || fail "$message"
}
for session_file in bin/plasma-mobile.desktop.cmake bin/plasma-mobile-dev.desktop.cmake; do
reject_line "$session_file" '^(Name|Comment)(\[[^]]+\])?=.*Plasma Mobile' \
"$session_file must not expose Plasma Mobile branding in session chooser labels"
reject_line "$session_file" '^Comment(\[[^]]+\])?=.*by KDE' \
"$session_file must not present Shift as a KDE-branded session"
done
require_line bin/plasma-mobile.desktop.cmake '^Name=SHIFT$' \
"main session must be branded SHIFT"
require_line bin/plasma-mobile-dev.desktop.cmake '^Name=SHIFT \(Development\)$' \
"development session must be branded SHIFT"
[[ -f org.shift.mobile.metainfo.xml ]] || fail "missing Shift AppStream metadata"
[[ ! -e org.kde.plasma.mobileshell.metainfo.xml ]] || fail "upstream AppStream metadata file must not be installed from the repo root"
require_line CMakeLists.txt '^install\(FILES org\.shift\.mobile\.metainfo\.xml DESTINATION \$\{KDE_INSTALL_METAINFODIR\}\)$' \
"CMake must install Shift AppStream metadata"
require_line CMakeLists.txt 'file\(REMOVE .*org\.kde\.plasma\.mobileshell\.metainfo\.xml' \
"CMake must remove stale upstream Plasma Mobile AppStream metadata from existing prefixes"
reject_line CMakeLists.txt 'install\(FILES org\.kde\.plasma\.mobileshell\.metainfo\.xml' \
"CMake must not install upstream Plasma Mobile AppStream metadata"
require_line org.shift.mobile.metainfo.xml '<id>org\.shift\.mobile</id>' \
"AppStream id must be Shift-owned"
require_line org.shift.mobile.metainfo.xml '<name>SHIFT</name>' \
"AppStream name must be SHIFT"
require_line org.shift.mobile.metainfo.xml 'https://invent\.kde\.org/marcoa/shift-shell' \
"AppStream metadata must point at the Shift repository"
require_line org.shift.mobile.metainfo.xml '<binary>startplasmamobile</binary>' \
"AppStream metadata must provide the installed startplasmamobile binary"
reject_line org.shift.mobile.metainfo.xml 'plasma-mobile\.org|bugs\.kde\.org|invent\.kde\.org/plasma/plasma-mobile|<project_group>KDE</project_group>' \
"AppStream metadata must not point at upstream Plasma Mobile project resources"
reject_line org.shift.mobile.metainfo.xml '<binary>plasma\.mobileshell</binary>' \
"AppStream metadata must not provide an unverifiable plasma.mobileshell binary"
require_line shell/metadata.json '"Id": "org\.kde\.plasma\.mobileshell"' \
"runtime shell package id must stay stable until a namespace migration is planned"
require_line shell/metadata.json '"Name": "SHIFT"' \
"shell metadata visible name must be SHIFT"
reject_line shell/metadata.json '"Name\[[^]]+\]":|"Description\[[^]]+\]":|plasma-mobile\.org' \
"shell metadata must not retain translated upstream Plasma Mobile labels"
require_line plasma-mobile.service '^Description=SHIFT shell session for tty1$' \
"systemd service description must be branded SHIFT"
require_line plasma-mobile.service '^Documentation=https://invent\.kde\.org/marcoa/shift-shell$' \
"systemd service documentation must point at the Shift repository"
reject_line plasma-mobile.service '^Documentation=https://invent\.kde\.org/plasma-mobile$' \
"systemd service documentation must not point at the upstream Plasma Mobile repository"
require_line initialstart/main.cpp 'QStringLiteral\("SHIFT Initial Setup"\)' \
"initial setup KAbout display name must be branded SHIFT"
require_line initialstart/main.cpp 'setBugAddress\("https://invent\.kde\.org/marcoa/shift-shell/-/issues"\)' \
"initial setup KAbout bug address must point at the Shift issue tracker"
reject_line initialstart/main.cpp 'QStringLiteral\("Initial Start"\)|© 2026 KDE Community' \
"initial setup KAbout metadata must not retain the upstream-only display name or copyright string"
require_line initialstart/qml/LandingComponent.qml "wallpapers/SHIFT/contents/images/" \
"initial setup landing page must use the Shift wallpaper"
require_line initialstart/modules/prepare/prepareutil.cpp 'QStringLiteral\("ShiftDark"\)' \
"initial setup dark theme toggle must apply ShiftDark"
require_line initialstart/modules/prepare/prepareutil.cpp 'QStringLiteral\("ShiftLight"\)' \
"initial setup dark theme toggle must apply ShiftLight"
printf 'shift-product-metadata-ok\n'