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
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
+34 -14
View File
@@ -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/<utente>
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);