Некоторое время я терпеливо ждал выхода следующей версии f-spot. Но, f-spot 0.8.2 вышел, а проблема осталась. Пришла пора действовать. Итак, для восстановления работоспособности f-spot была применена стратегия, состоящая из двух основных пунктов:
- Сделать так, чтобы путь к файлам с фотографиями не содержал нелатинских символов
- Сделать так, чтобы f-spot узнал об изменениях в пункте 1
ln -s Снимки PicturesТеперь к фотографиям можно обращаться через путь Pictures/ вместо Снимки/.
Чтобы реализовать второй пункт, нужно знать как f-spot хранит информацию о фотографиях. А делает он это с помощью базы данных photos.db, которая обычно находится в директории ~/.config/f-spot/. Редактировать эту БД можно с помощью утилиты sqlite3. Естественно, перед тем как изменять БД, неплохо создать ее резервную копию, просто скопировав файл photos.db. Итак, открываем БД для внесения нужных изменений:
sqlite3 photos.dbЭта команда загружает интерактивную среду sqlite. Для просмотра перечня таблиц вводим
sqlite> .tables exports meta photo_versions rolls jobs photo_tags photos tagsПоля отдельной таблицы можно увидеть с помощью команды .schema:
sqlite> .schema photos CREATE TABLE photos ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, time INTEGER NOT NULL, base_uri STRING NOT NULL, filename STRING NOT NULL, description TEXT NOT NULL, roll_id INTEGER NOT NULL, default_version_id INTEGER NOT NULL, rating INTEGER NULL );Увидеть, где находятся данные, содержащие пути с директорией Снимки/ было просто: достаточно выполнить select * from для всех (или только подозрительных) таблиц. Оказалось, что данные о путях содержатся в полях base_uri таблиц photos и photo_versions.
Теперь нужно выполнить замену Снимки на Pictures во всех данных для этих полей:
sqlite> update photos set base_uri=replace(base_uri,"Снимки","Pictures") ...> where base_uri like "%Снимки%"; sqlite> update photo_versions set base_uri=replace(base_uri,"Снимки","Pictures") ...> where base_uri like "%Снимки%";Всё. Выходим из среды sqlite:
sqlite> .quitТеперь запускаем f-spot: тамбнейлы должны появиться, при клике на них фотографии должны показываться без проблем. Осталось изменить имя директории, в которую будут импортироваться фото в дальнейшем c Снимки на Pictures: это можно сделать прямо в f-spot из меню Правка -> Параметры.
P.S. Похоже, что этот баг не связан напрямую с f-spot, возможно он присутствует на уровне mono или Gnome.
P.P.S. Я пробовал использовать shotwell, но f-spot мне по-прежнему кажется симпатичней, несмотря на свою глючность. Возможно, в дальнейшем я перейду на shotwell, когда его допилят.