Darktable è troppo grande

Data: 03 gennaio 2016 Categoria: linux

Il noto programma di foto-ritocco Darktable ha il fastidioso difetto di non adattarsi agli schermi con risoluzione ridotta. È un difetto insito nell'interfaccia ma si può risolvere facilmente cambiando due stringhe di testo.

Innanzi tutto devo dire che uso un monitor LCD da 17" con risoluzione 1280x1024 (ebbene sì, sono povero). Questo non mi aveva procurato problemi con Darktable fino alla versione 1.6 ma recentemente ho aggiornato alla versione 2.0 e sono cominciati i guai. La finestra del programma, se massimizzata, non riesce ad essere contenuta nella larghezza di 1280 pixel, facendo finire parte della colonna destra fuori dallo schermo. De-massimizzando il programma e provando a ridimensionare la finestra è comunque impossibile scendere al di sotto di una certa larghezza, sempre maggiore della larghezza del mio monitor.

Darktable massimizzato

Darktable massimizzato, la parte destra è fuori schermo.

Data la diffusione di monitor di grandi dimensioni, questo comportamento di Darktable è stato riscontrato solo da una minoranza di utenti e quindi è passato un po' in sordina. Però è un grave impedimento che rende di fatto non utilizzabile il programma su schermi come il mio. L'unica soluzione sembra un downgrade alla versione precedente e non aggiornare più il programma. Ma guardando la parte superiore del programma si notano scritte che non hanno più spazio tra di loro: è come se dicessero "più strette di così non ci stiamo". Vuoi vedere che è un semplice problema di stringhe di testo? In particolare si nota una stringa inutilmente prolissa (non me ne voglia il traduttore):

La stringa assassina

La stringa incriminata.

Dato che la scritta è in italiano se ne deduce che è inserita dentro ad un file di lingua. In effetti Darktable può avere l'interfaccia tradotta in molte lingue grazie a gettext e usando file con le traduzioni. Controllando rapidamente i file installati dal programma con il comando

dpkg -L darktable

conferma che sono stati installati diversi file di lingua nelle sotto-directory di /usr/share/locale/ tra cui quello che ci interessa /usr/share/locale/it/LC_MESSAGES/darktable.mo. Fatto! Non proprio...

I file *.mo sono file di lingua compilati e per modificare le stringhe bisogna riportarli al loro stato sorgente. Fortunatamente è possibile convertire un file compilato *.mo nel suo sorgente *.po usando il programma msgunfmt. Sulla mia distribuzione tale programma si ottiene installando il pacchetto gettext. Per comodità conviene copiarsi il file darktable.mo in una directory di lavoro e decompilarlo con il comando:

msgunfmt --output-file=darktable.po darktable.mo 

Il file ottenuto darktable.po è un semplice file di testo che può essere modificato con un qualsiasi editor. Nel file della mia installazione le stringhe da cambiare si trovano alle righe 144 e 145

msgstr[0] "%d immagine di %d è stata selezionate nella raccolta"
msgstr[1] "%d immagini di %d sono state selezionate nella raccolta"

che ho sostituito con le più brevi

msgstr[0] "%d immagine selezionata"
msgstr[1] "%d immagini selezionate"

Una volta salvato il file si ricompila con il comando:

msgfmt darktable.po -o darktable.mo

Il un nuovo file darktable.mo dovrà essere sostituito all'originale.

Per sicurezza il file originale è stato rinominato e non sovrascritto. Il file modificato è stato poi copiato nella stessa directory. Queste operazioni vanno fatte da root quindi a questo punto o si diventa root o si usa sudo:

sudo mv /usr/share/locale/it/LC_MESSAGES/{darktable.mo,darktable.mo-orig}
sudo cp darktable.mo /usr/share/locale/it/LC_MESSAGES/darktable.mo

Riavviando Darktable la finestra del programma riesce finalmente a stare dentro lo schermo da 1280 pixel di larghezza e diventa nuovamente usabile.

Darktable ridimensionato

Darktable è rientrato nei ranghi.

Sembra incredibile che basti cambiare due stringhe di testo per rendere di nuovo usabile un programma. Non credo comunque che valga la pena segnalarlo come bug, innanzitutto perché non è un bug e poi perché fare fotoritocco, seppur amatoriale, su uno schermo così piccolo non è negli scopi di tali programmi. Lascio comunque qui la soluzione per tutti quelli che, come me, non possono giustificare la spesa per un buon monitor da almeno 24" e devono adattarsi a risoluzioni inferiori.