Де зберігати налаштування користувача для програми?


12

Якщо я хочу, щоб у моїй програмі було збережено декілька налаштувань, які зберігаються, коли програма закривається, то де я можу їх зберігати?

Я не кажу нічого складного: два булевих і рядкових (хоча в майбутньому я, можливо, захочу зберегти більш складні налаштування)

Я чув усі згадані gconf, dconf, gsettings тощо. Що таке "кращий" метод? Переважно той, який приємний і простий в Python.


Відповіді:


9

gconfзастаріла, тому для нового проекту я б його не використовував. dconf- це резервний пристрій для зберігання налаштувань, тому що розробнику додатків зазвичай не потрібно це турбувати.

Що вам здається потрібно gsettings, це API високого рівня ( документація API на C ) для зберігання / отримання налаштувань, не турбуючи, як / де вони фактично зберігаються. gsettingsє частиною gio, яка є одним з основних пакетів gnome (як glibі gobject). Ця публікація в блозі дає короткий вступ про те, як її використовувати з Python.

Якщо ви не хочете ніяких залежностей від gio(наприклад, ви не розробляєте додаток GNOME) і хочете зберігати прості файли конфігурацій, я б запропонував використовувати $HOME/.configкаталог (або будь-який інший каталог, визначений $XDG_CONFIG_DIRS) замість цього $HOME/.your_appname, відповідно до специфікації freedesktop .


Здається, ваше посилання на допис у блозі мертве. Чи є у вас інший шанс?
Сет

@Seth, на жаль, повідомлення про блог, до якого я посилався, більше не здається доступним. Я замінив посилання на посилання на іншу публікацію в блозі, яка також повинна стати хорошою відправною точкою.
Марсель Стімберг

10

Додаток працює за всіма системами

відповідним місцем для зберігання налаштувань буде:

/etc/[application]/

де підкаталог необов'язковий.


Додаток запускається в кожному користувач режимі

Параметри повинні зберігатися в HOME користувача, бажано в прихованому каталозі:

/home/<user>/<.application>/

Дивіться також Debian FHS .


Програми, що працюють у X-Desktop

Програми для X-Desktop (наприклад, GNOME, KDE, Unity, Xfce) повинні посилатися на специфікацію базового каталогу XDG, де такі локальні файли визначені в локальних змінних:

  • $XDG_DATA_HOMEвизначає базовий каталог відносно того, у якому файлах даних, що належать користувачеві, слід зберігати. Якщо $ XDG_DATA_HOME або не встановлено, або порожньо, слід використовувати за замовчуванням $ HOME / .local / share.

  • $XDG_CONFIG_HOMEвизначає базовий каталог відносно того, в якому файлах конфігурації повинні зберігатися конкретні користувачу файли. Якщо $ XDG_CONFIG_HOME не встановлено або порожньо, слід використовувати за замовчуванням $ HOME / .config.

  • $XDG_DATA_DIRSвизначає наборі упорядкованих наборів базових каталогів для пошуку файлів даних на додаток до базового каталогу $ XDG_DATA_HOME. Каталоги в $ XDG_DATA_DIRS повинні бути відокремлені двокрапкою ':'.

  • If $XDG_DATA_DIRS або не встановлено, або порожньо, слід використовувати значення, рівне / usr / local / share /: / usr / share /.

  • $XDG_CONFIG_DIRSвизначає наборі упорядкованих наборів базових каталогів для пошуку файлів конфігурації на додаток до базового каталогу $ XDG_CONFIG_HOME. Каталоги в $ XDG_CONFIG_DIRS повинні бути відокремлені двокрапкою ':'. Якщо $ XDG_CONFIG_DIRS або не встановлено, або порожньо, слід використовувати значення, рівне / etc / xdg.


Ні, вони повинні бути в /home/<user>/.config/application/
Анонімний

@Anonymous: Було б здорово мати посилання на це. Нинішня політика Debian вимагає FHS 2.3 за винятком того, що програмам рекомендується зберігати налаштування користувача у крапковому файлі (або в каталозі) в ГОЛОВНОМ користувача.
Таккат

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.