From 4e533ecfc9f4066dd10fb0be518a0ab5f96ebde0 Mon Sep 17 00:00:00 2001 From: Carlo Baratto Date: Wed, 19 Aug 2026 16:46:41 +0200 Subject: [PATCH] Config auto-adattiva: home grafica Jolla Phone 2026 = /home/rootitanium (nemo non esiste su Sailfish 5.1). Candidate rootitanium->nemo->utente corrente, file esistente prima, permessi aperti sulla home scelta --- rpm/harbour-calibreweb.spec | 4 ++++ src/settings.cpp | 48 ++++++++++++++++++++++++++----------- 2 files changed, 38 insertions(+), 14 deletions(-) diff --git a/rpm/harbour-calibreweb.spec b/rpm/harbour-calibreweb.spec index d22ae37..7f9e51b 100644 --- a/rpm/harbour-calibreweb.spec +++ b/rpm/harbour-calibreweb.spec @@ -40,6 +40,10 @@ in locale. (/home/nemo/.config/harbour/calibreweb.conf) indipendente dall'utente che avvia l'app (launcher nemo / debug SSH defaultuser), con migrazione automatica dei valori gia' salvati +- Config auto-adattiva: la home grafica su Jolla Phone 2026 (Sailfish 5.1) + e' /home/rootitanium (non nemo): candidate rootitanium -> nemo -> home + dell'utente corrente, file esistente prima, poi prima home scrivibile; + permessi aperti sulla home scelta a ogni scrittura - Lettore EPUB nativo (WebView): capitoli, reflow A-/A+, margini configurabili, posizione salvata in locale (QSettings) e ripristinata all'apertura diff --git a/src/settings.cpp b/src/settings.cpp index eb1fd40..38fe08b 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -8,9 +8,27 @@ QString Settings::configPath() { - const QString dir = QStringLiteral("/home/nemo/.config/harbour"); - QDir().mkpath(dir); - return dir + QStringLiteral("/calibreweb.conf"); + // 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; } Settings::Settings(QObject *parent) @@ -36,6 +54,7 @@ void Settings::migrateIfNeeded() // utenti (launcher=nemo, debug SSH=defaultuser). La prima con valori vince. const QStringList candidates = QStringList() << QSettings(QStringLiteral("harbour"), QStringLiteral("calibreweb")).fileName() + << QStringLiteral("/home/rootitanium/.config/harbour/calibreweb.conf") << QStringLiteral("/home/nemo/.config/harbour/calibreweb.conf") << QStringLiteral("/home/defaultuser/.config/harbour/calibreweb.conf"); for (const QString &cand : candidates) { @@ -73,26 +92,27 @@ void Settings::migrateIfNeeded() void Settings::openPermissions() { - // Apre la catena di directory e il file di configurazione: la home di - // nemo e' 700 di default e defaultuser (debug SSH) non puo' entrarci. - // Al primo avvio dal launcher (nemo) questi permessi restano aperti, e - // da quel momento entrambi gli utenti condividono lo stesso file. - QDir home(QStringLiteral("/home/nemo")); - QFile::setPermissions(home.absolutePath(), + // Apre la catena di directory e il file di configurazione della home scelta + // (utente grafico, home spesso 700): il debug SSH (defaultuser) deve poter + // leggere/scrivere lo stesso file. Funziona quando l'app gira come owner + // della home (dal launcher); da SSH i permessi restano quelli gia' aperti. + const QString file = m_settings.fileName(); // .../calibreweb.conf + const QString dir = QFileInfo(file).absolutePath(); // .../.config/harbour + const QString configDir = QFileInfo(dir).absolutePath(); // .../.config + const QString home = QFileInfo(configDir).absolutePath(); // /home/ + QFile::setPermissions(home, QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner | QFile::ReadGroup | QFile::ExeGroup | QFile::ReadOther | QFile::ExeOther); - QDir config(QStringLiteral("/home/nemo/.config")); - QFile::setPermissions(config.absolutePath(), + QFile::setPermissions(configDir, QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner | QFile::ReadGroup | QFile::ExeGroup | QFile::ReadOther | QFile::ExeOther); - QDir dir(QFileInfo(m_settings.fileName()).absolutePath()); - QFile::setPermissions(dir.absolutePath(), + QFile::setPermissions(dir, QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner | QFile::ReadGroup | QFile::WriteGroup | QFile::ExeGroup | QFile::ReadOther | QFile::WriteOther | QFile::ExeOther); - QFile::setPermissions(m_settings.fileName(), + QFile::setPermissions(file, QFile::ReadOwner | QFile::WriteOwner | QFile::ReadGroup | QFile::WriteGroup | QFile::ReadOther | QFile::WriteOther);