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

This commit is contained in:
2026-08-19 17:31:36 +02:00
parent 4e533ecfc9
commit d2892003d3
4 changed files with 34 additions and 24 deletions
+6
View File
@@ -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
+12 -24
View File
@@ -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");