From 18bef9a5735d3f17177a0811dd99fa4e05f2ba81 Mon Sep 17 00:00:00 2001 From: Marco Allegretti Date: Sun, 17 May 2026 15:44:56 +0200 Subject: [PATCH] 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. --- CMakeLists.txt | 3 +- bin/plasma-mobile-dev.desktop.cmake | 84 +------------ bin/plasma-mobile.desktop.cmake | 90 +------------ initialstart/main.cpp | 6 +- .../modules/prepare/colorssettings.kcfg | 2 +- initialstart/modules/prepare/prepareutil.cpp | 6 +- initialstart/qml/LandingComponent.qml | 8 +- org.kde.plasma.mobileshell.metainfo.xml | 99 --------------- org.shift.mobile.metainfo.xml | 33 +++++ plasma-mobile.service | 4 +- shell/metadata.json | 119 ++---------------- tests/CMakeLists.txt | 5 + tests/check-shift-product-metadata.sh | 94 ++++++++++++++ 13 files changed, 158 insertions(+), 395 deletions(-) delete mode 100644 org.kde.plasma.mobileshell.metainfo.xml create mode 100644 org.shift.mobile.metainfo.xml create mode 100644 tests/check-shift-product-metadata.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 8a1bdc7a..718f2bfb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -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 diff --git a/bin/plasma-mobile-dev.desktop.cmake b/bin/plasma-mobile-dev.desktop.cmake index d545ec76..6b7c53b8 100644 --- a/bin/plasma-mobile-dev.desktop.cmake +++ b/bin/plasma-mobile-dev.desktop.cmake @@ -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} diff --git a/bin/plasma-mobile.desktop.cmake b/bin/plasma-mobile.desktop.cmake index 6a0f8017..6672d425 100644 --- a/bin/plasma-mobile.desktop.cmake +++ b/bin/plasma-mobile.desktop.cmake @@ -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} diff --git a/initialstart/main.cpp b/initialstart/main.cpp index 1f66f844..cd6e09cf 100644 --- a/initialstart/main.cpp +++ b/initialstart/main.cpp @@ -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 diff --git a/initialstart/modules/prepare/colorssettings.kcfg b/initialstart/modules/prepare/colorssettings.kcfg index b7c7b8ec..7431088c 100644 --- a/initialstart/modules/prepare/colorssettings.kcfg +++ b/initialstart/modules/prepare/colorssettings.kcfg @@ -11,7 +11,7 @@ - BreezeLight + ShiftLight diff --git a/initialstart/modules/prepare/prepareutil.cpp b/initialstart/modules/prepare/prepareutil.cpp index 9747b519..e79e0dfa 100644 --- a/initialstart/modules/prepare/prepareutil.cpp +++ b/initialstart/modules/prepare/prepareutil.cpp @@ -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 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; diff --git a/initialstart/qml/LandingComponent.qml b/initialstart/qml/LandingComponent.qml index 39ca3988..4fe73937 100644 --- a/initialstart/qml/LandingComponent.qml +++ b/initialstart/qml/LandingComponent.qml @@ -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, diff --git a/org.kde.plasma.mobileshell.metainfo.xml b/org.kde.plasma.mobileshell.metainfo.xml deleted file mode 100644 index f67dc336..00000000 --- a/org.kde.plasma.mobileshell.metainfo.xml +++ /dev/null @@ -1,99 +0,0 @@ - - - - org.kde.plasma.mobileshell - - KDE - - CC0-1.0 - GPL-2.0+ - KDE Plasma Mobile Shell - صدفة بلازما الجوال من كيدي - Espai de treball del Plasma Mobile de KDE - Espai de treball Plasma Mobile de KDE - Rozhraní KDE Plasma Mobile - Entorno KDE Plasma Móvil - KDE Plasma Mugikor Oskola - KDE Plasma Mobile -käyttöliittymä - Shell pour KDE Plasma Mobile - מעטפת לניידים של פלזמה מבית KDE - KDE Plasma Mobile Shell (Shell de Plasma KDE Mobile) - KDE Plasma snjalltækjaskel - Shell Plasma Mobile di KDE - KDE Plasma Mobile-ის გარსი - KDE Plasma 모바일 셸 - KDE „Plasma Mobile“ čaula - KDE Plasma Mobiel-shell - Shell do KDE Plasma Mobile - KDE Plasma Mobile Shell - KDE Plasma mobilskal - KDE Plasma Cep Kabuğu - Оболонка Мобільної Плазми KDE - KDE Plasma Mobile Shell - KDE Plasma 行動殼層 - KDE's Plasma shell for mobile form-factor devices - صدفة بلازما كيدي للأجهزة المحمولة - Espai de treball del Plasma de KDE per a dispositius de factor de forma mòbil - Espai de treball Plasma de KDE per a dispositius de factor de forma mòbil - Entorno de Plasma de KDE para dispositivos con factor de forma móvil - Mugikor forma faktorea duten gailuetarako KDEren Plasma Oskola - KDE Plasman käyttöliittymä mobiililaitteille - Shell pour KDE Plasma pour les périphériques de format mobile - מעטפת פלזמה מבית KDE למכשירים בתצורת ניוד - Shell de Plasma per dispositivos de factor de forma mobile - Plasma-skel frá KDE fyrir farsíma og snjalltæki - Shell Plasma di KDE per dispositivi mobili - KDE's Plasma-ის გარსი მობილური ფორმფაქტორის მქონე მოწყობილობებისთვის - KDE의 모바일 장치를 위한 Plasma 셸 - KDE „Plasma“ čaula ierīcēm ar maziem ekrāniem - Plasma-shell van KDE voor apparaten met mobiele vormfactor - Shell do Plasma do KDE para dispositivos móveis - KDE's Plasma shell za mobilne naprave - KDE:s Plasma skal för mobilapparater - Taşınabilir biçimdeki aygıtlar için KDE’nin Plasma kabuğu - Оболонка Плазми KDE для пристроїв мобільного форм-фактора - KDE Plasma 的手机形态设备外壳程序 - 行動裝置用的 KDE Plasma 殼層 - https://plasma-mobile.org/ - https://bugs.kde.org/enter_bug.cgi?format=guided&product=plasma-mobile - https://invent.kde.org/plasma/plasma-mobile - KDE - - plasma.mobileshell - - - - Plasma Mobile shell being used on mobile form-factor screen - تُستخدم صدفة بلازما الجوال على شاشة الجوال - Espai de treball del Plasma Mobile que es fa servir en una pantalla de factor de forma mòbil - Espai de treball Plasma Mobile que s'utilitza en una pantalla de factor de forma mòbil - El entorno Plasma Mobile en uso en una pantalla con factor de forma móvil - Mugikor forma faktoreko pantaila batean Plasma Mugikor oskola erabiltzen - Plasma Mobilen käyttöliittymä käytössä mobiilinäytöllä - Shell pour Plasma Mobile utilisée sur un écran de périphérique de format mobile - המעטפת של פלזמה לניידים מיועדת למסכים של מכשירים שמיועדים לניוד - KDE Plasma Mobile Shell e usate sur schermo de factor de forma mobile - Plasma Mobile skel notuð á skjái farsíma og snjalltækja - Shell di Plasma Mobile utilizzata su schermi per dispositivi mobili - Plasma Mobile-ის გარსი გამოიყენება მობილური ფორმფაქტორის მქონე ეკრანზე - 모바일 화면에서 사용 중인 Plasma 모바일 셸 - „Plasma Mobile“ čaula tiek izmantota viedtālruņa lieluma ekrānam - Plasma Mobiel-shell wordt gebruikt op schermen met een mobiele vormfactor - O shell do Plasma Mobile está sendo usado em telas de fator de formato móvel - Plasma Mobile shell uporabljen za zaslon oblikovan za mobilno napravo - Plasma mobilskal använt på mobilskärm - Plasma Cep kabuğu, taşınabilir biçimli bir aygıtta kullanılırken - Оболонка Мобільної Плазми, яку використовують для екранів мобільного форм-фактора - Plasma Mobile 的手机形态设备外壳程序 - Plasma 行動殼層在行動螢幕上使用 - https://plasma-mobile.org/img/plasmaphone.png - - - KDE - - - - diff --git a/org.shift.mobile.metainfo.xml b/org.shift.mobile.metainfo.xml new file mode 100644 index 00000000..0417ad5c --- /dev/null +++ b/org.shift.mobile.metainfo.xml @@ -0,0 +1,33 @@ + + + + org.shift.mobile + + SHIFT Contributors + + CC0-1.0 + GPL-2.0-or-later + SHIFT + Convergent shell for mobile, desktop, and hybrid devices + +

+ 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. +

+

+ SHIFT is not affiliated with or endorsed by KDE or the KDE community. +

+
+ https://invent.kde.org/marcoa/shift-shell + https://invent.kde.org/marcoa/shift-shell/-/issues + https://invent.kde.org/marcoa/shift-shell + + startplasmamobile + + KDE + + + +
diff --git a/plasma-mobile.service b/plasma-mobile.service index 92945d00..9eec87e9 100644 --- a/plasma-mobile.service +++ b/plasma-mobile.service @@ -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 diff --git a/shell/metadata.json b/shell/metadata.json index 4522d70d..03e4ba20 100644 --- a/shell/metadata.json +++ b/shell/metadata.json @@ -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" diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index d3c29068..d264fbff 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -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() diff --git a/tests/check-shift-product-metadata.sh b/tests/check-shift-product-metadata.sh new file mode 100644 index 00000000..0020277f --- /dev/null +++ b/tests/check-shift-product-metadata.sh @@ -0,0 +1,94 @@ +#!/usr/bin/env bash +# SPDX-FileCopyrightText: 2026 Marco Allegretti +# 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 'org\.shift\.mobile' \ + "AppStream id must be Shift-owned" +require_line org.shift.mobile.metainfo.xml 'SHIFT' \ + "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 'startplasmamobile' \ + "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|KDE' \ + "AppStream metadata must not point at upstream Plasma Mobile project resources" +reject_line org.shift.mobile.metainfo.xml 'plasma\.mobileshell' \ + "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'