From d2892003d310833f3bc26305700ce7ad55d27f9b Mon Sep 17 00:00:00 2001 From: Carlo Baratto Date: Wed, 19 Aug 2026 17:31:36 +0200 Subject: [PATCH] Sandbox SailJail: profilo X-Sailjail nel desktop file (Internet;Downloads, org harbour/app calibreweb) + config in AppConfigLocation (~/.config/harbour/calibreweb/, zona persistente della sandbox) + migrazione dal vecchio file. Senza profilo la sandbox nascondeva ~/.config/harbour e le impostazioni dal launcher sparivano --- rpm/harbour-calibreweb.desktop | 10 ++++++++++ rpm/harbour-calibreweb.spec | 6 ++++++ src/main.cpp | 6 ++++++ src/settings.cpp | 36 ++++++++++++---------------------- 4 files changed, 34 insertions(+), 24 deletions(-) diff --git a/rpm/harbour-calibreweb.desktop b/rpm/harbour-calibreweb.desktop index 6745f37..f506805 100644 --- a/rpm/harbour-calibreweb.desktop +++ b/rpm/harbour-calibreweb.desktop @@ -8,3 +8,13 @@ Icon=harbour-calibreweb Type=Application X-Nemo-Application-Type=silica-qt5 Categories=Office;Viewer; + +# Profilo SailJail esplicito: senza X-Sailjail la sandbox di Sailfish 5.1 usa il +# profilo default, che nasconde ~/.config/harbour (config non persistente). +# Con OrganizationName/ApplicationName la sandbox rende persistente +# ~/.config/harbour/calibreweb/ (AppConfigLocation). Internet = rete, +# Downloads = salvataggio libri. +[X-Sailjail] +Permissions=Internet;Downloads +OrganizationName=harbour +ApplicationName=calibreweb diff --git a/rpm/harbour-calibreweb.spec b/rpm/harbour-calibreweb.spec index 7f9e51b..ba22f81 100644 --- a/rpm/harbour-calibreweb.spec +++ b/rpm/harbour-calibreweb.spec @@ -25,6 +25,12 @@ in locale. %changelog * Wed Aug 19 2026 Carlo Baratto - 0.2.0-1 +- Sandbox SailJail (Sailfish 4.4+/5.x): profilo X-Sailjail esplicito nel desktop + file (Internet;Downloads, org harbour/app calibreweb) e config in + AppConfigLocation (~/.config/harbour/calibreweb/calibreweb.conf, l'unica zona + persistente della sandbox). Senza profilo la sandbox nascondeva ~/.config/harbour + e le impostazioni dal launcher sparivano (config solo funzionante da SSH). + Migrazione automatica dal vecchio file per-utente. - Fix crash 'Close book': pop(null) differito con Timer (distruggere la pagina dall'handler del suo MenuItem crashava) - Config condivisa nemo/defaultuser: permessi aperti su /home/nemo/.config/harbour diff --git a/src/main.cpp b/src/main.cpp index c97f65d..e918269 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -15,6 +15,12 @@ Q_DECL_EXPORT int main(int argc, char *argv[]) { QGuiApplication *app = SailfishApp::application(argc, argv); + // Identita' applicazione allineata al profilo X-Sailjail del desktop file: + // QStandardPaths::AppConfigLocation diventa ~/.config/harbour/calibreweb, + // l'unica zona config persistente della sandbox di Sailfish 5.1. + app->setOrganizationName(QStringLiteral("harbour")); + app->setApplicationName(QStringLiteral("calibreweb")); + Settings settings; // User-chosen language (Settings -> Language). "system" = follow the diff --git a/src/settings.cpp b/src/settings.cpp index 38fe08b..5685e79 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -8,27 +8,14 @@ QString Settings::configPath() { - // Home candidate dell'utente grafico: Jolla Phone 2026 / Sailfish 5.1 usa - // /home/rootitanium, il Sailfish classico /home/nemo. La config DEVE essere - // unica (launcher = utente grafico, debug SSH = defaultuser): si usa il - // file gia' esistente o la prima home in cui riusciamo a creare la dir. - const QString local = QStandardPaths::writableLocation(QStandardPaths::ConfigLocation) - + QStringLiteral("/harbour/calibreweb.conf"); - const QStringList homes = QStringList() - << QStringLiteral("/home/rootitanium") // Jolla Phone 2026 (Sailfish 5.1) - << QStringLiteral("/home/nemo"); // Sailfish classico - for (const QString &h : homes) { - if (QFile::exists(h + QStringLiteral("/.config/harbour/calibreweb.conf"))) - return h + QStringLiteral("/.config/harbour/calibreweb.conf"); - } - if (QFile::exists(local)) - return local; - for (const QString &h : homes) { - if (QDir().mkpath(h + QStringLiteral("/.config/harbour"))) - return h + QStringLiteral("/.config/harbour/calibreweb.conf"); - } - QDir().mkpath(QFileInfo(local).absolutePath()); - return local; + // Path canonico per la sandbox SailJail di Sailfish 4.4+/5.x: con + // org/app impostati (harbour/calibreweb, vedi main.cpp e X-Sailjail nel + // desktop file), AppConfigLocation = ~/.config/harbour/calibreweb, l'unica + // zona config che la sandbox rende PERSISTENTE tra gli avvii. Senza + // profilo esplicito la sandbox nasconde ~/.config/harbour (config persa). + const QString dir = QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation); + QDir().mkpath(dir); + return dir + QStringLiteral("/calibreweb.conf"); } Settings::Settings(QObject *parent) @@ -50,10 +37,11 @@ void Settings::migrateIfNeeded() { if (!serverUrl().isEmpty()) return; // il file condiviso ha gia' una configurazione - // Sorgenti candidate: config per-utente corrente + i path noti degli altri - // utenti (launcher=nemo, debug SSH=defaultuser). La prima con valori vince. + // Sorgenti candidate per la migrazione: il vecchio file per-utente + // (~/.config/harbour/calibreweb.conf) e i path usati dalle build precedenti. + // La prima con valori vince. const QStringList candidates = QStringList() - << QSettings(QStringLiteral("harbour"), QStringLiteral("calibreweb")).fileName() + << QDir::homePath() + QStringLiteral("/.config/harbour/calibreweb.conf") << QStringLiteral("/home/rootitanium/.config/harbour/calibreweb.conf") << QStringLiteral("/home/nemo/.config/harbour/calibreweb.conf") << QStringLiteral("/home/defaultuser/.config/harbour/calibreweb.conf");