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

This commit is contained in:
2026-08-19 16:46:41 +02:00
parent c5822778bd
commit 4e533ecfc9
2 changed files with 38 additions and 14 deletions
+4
View File
@@ -40,6 +40,10 @@ in locale.
(/home/nemo/.config/harbour/calibreweb.conf) indipendente dall'utente (/home/nemo/.config/harbour/calibreweb.conf) indipendente dall'utente
che avvia l'app (launcher nemo / debug SSH defaultuser), con migrazione che avvia l'app (launcher nemo / debug SSH defaultuser), con migrazione
automatica dei valori gia' salvati 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 - Lettore EPUB nativo (WebView): capitoli, reflow A-/A+, margini
configurabili, posizione salvata in locale (QSettings) e ripristinata configurabili, posizione salvata in locale (QSettings) e ripristinata
all'apertura all'apertura
+34 -14
View File
@@ -8,9 +8,27 @@
QString Settings::configPath() QString Settings::configPath()
{ {
const QString dir = QStringLiteral("/home/nemo/.config/harbour"); // Home candidate dell'utente grafico: Jolla Phone 2026 / Sailfish 5.1 usa
QDir().mkpath(dir); // /home/rootitanium, il Sailfish classico /home/nemo. La config DEVE essere
return dir + QStringLiteral("/calibreweb.conf"); // 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) Settings::Settings(QObject *parent)
@@ -36,6 +54,7 @@ void Settings::migrateIfNeeded()
// utenti (launcher=nemo, debug SSH=defaultuser). La prima con valori vince. // utenti (launcher=nemo, debug SSH=defaultuser). La prima con valori vince.
const QStringList candidates = QStringList() const QStringList candidates = QStringList()
<< QSettings(QStringLiteral("harbour"), QStringLiteral("calibreweb")).fileName() << QSettings(QStringLiteral("harbour"), QStringLiteral("calibreweb")).fileName()
<< QStringLiteral("/home/rootitanium/.config/harbour/calibreweb.conf")
<< QStringLiteral("/home/nemo/.config/harbour/calibreweb.conf") << QStringLiteral("/home/nemo/.config/harbour/calibreweb.conf")
<< QStringLiteral("/home/defaultuser/.config/harbour/calibreweb.conf"); << QStringLiteral("/home/defaultuser/.config/harbour/calibreweb.conf");
for (const QString &cand : candidates) { for (const QString &cand : candidates) {
@@ -73,26 +92,27 @@ void Settings::migrateIfNeeded()
void Settings::openPermissions() void Settings::openPermissions()
{ {
// Apre la catena di directory e il file di configurazione: la home di // Apre la catena di directory e il file di configurazione della home scelta
// nemo e' 700 di default e defaultuser (debug SSH) non puo' entrarci. // (utente grafico, home spesso 700): il debug SSH (defaultuser) deve poter
// Al primo avvio dal launcher (nemo) questi permessi restano aperti, e // leggere/scrivere lo stesso file. Funziona quando l'app gira come owner
// da quel momento entrambi gli utenti condividono lo stesso file. // della home (dal launcher); da SSH i permessi restano quelli gia' aperti.
QDir home(QStringLiteral("/home/nemo")); const QString file = m_settings.fileName(); // .../calibreweb.conf
QFile::setPermissions(home.absolutePath(), const QString dir = QFileInfo(file).absolutePath(); // .../.config/harbour
const QString configDir = QFileInfo(dir).absolutePath(); // .../.config
const QString home = QFileInfo(configDir).absolutePath(); // /home/<utente>
QFile::setPermissions(home,
QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner
| QFile::ReadGroup | QFile::ExeGroup | QFile::ReadGroup | QFile::ExeGroup
| QFile::ReadOther | QFile::ExeOther); | QFile::ReadOther | QFile::ExeOther);
QDir config(QStringLiteral("/home/nemo/.config")); QFile::setPermissions(configDir,
QFile::setPermissions(config.absolutePath(),
QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner
| QFile::ReadGroup | QFile::ExeGroup | QFile::ReadGroup | QFile::ExeGroup
| QFile::ReadOther | QFile::ExeOther); | QFile::ReadOther | QFile::ExeOther);
QDir dir(QFileInfo(m_settings.fileName()).absolutePath()); QFile::setPermissions(dir,
QFile::setPermissions(dir.absolutePath(),
QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner QFile::ReadOwner | QFile::WriteOwner | QFile::ExeOwner
| QFile::ReadGroup | QFile::WriteGroup | QFile::ExeGroup | QFile::ReadGroup | QFile::WriteGroup | QFile::ExeGroup
| QFile::ReadOther | QFile::WriteOther | QFile::ExeOther); | QFile::ReadOther | QFile::WriteOther | QFile::ExeOther);
QFile::setPermissions(m_settings.fileName(), QFile::setPermissions(file,
QFile::ReadOwner | QFile::WriteOwner QFile::ReadOwner | QFile::WriteOwner
| QFile::ReadGroup | QFile::WriteGroup | QFile::ReadGroup | QFile::WriteGroup
| QFile::ReadOther | QFile::WriteOther); | QFile::ReadOther | QFile::WriteOther);