Я смотрю на создание некоторых приложений Ubuntu, но найти хорошие ресурсы сложно.
Я пользуюсь быстрым инструментарием, но мне бы хотелось немного больше узнать. Как обычно хранить настройки и настройки приложения в Linux / Ubuntu.
Это так же просто, как создать файл XML и сохранить информацию, а затем прочитать из указанного файла при загрузке приложения?
Если кто-то может указать мне направление, это было бы очень признательно.
РЕДАКТИРОВАТЬ
Это то, что я написал, ожидая ответа. Вероятно, именно то, что делает предпочтения, но просто закодировано Вы можете найти это полезным:
import ConfigParser, os # We need to be able to store and recal settings
#first try to read the config.cfg file
config = ConfigParser.RawConfigParser()
configFile = 'data/config.cfg'
# We need to set some defaults
monState = False
tueState = False
wedState = False
thurState = False
friState = False
satState = False
sunState = False
# Creating the Config file
def createConfigFile(fileName):
print "CREATING CONFIG" # not needed, but nice for debugging
config.add_section('Preferences')
config.set('Preferences', 'mon', False)
config.set('Preferences', 'tues', False)
config.set('Preferences', 'wed', False)
config.set('Preferences', 'thur', False)
config.set('Preferences', 'fri', False)
config.set('Preferences', 'sat', False)
config.set('Preferences', 'sun', False)
rewriteConfigFile(filename)
# After reading the config file, we can update configs in memory.
# But this will save it to file for when the application is started up again.
def rewriteConfigFile(filename):
with open(filename, 'wb') as configfile:
config.write(configfile)
# Reading the config file
def readConfigFile(fileName):
print "READING CONFIG" # not needed, but nice for debugging
global monState, tueState, wedState, thurState, friState, satState, sunState
monState = config.getboolean('Preferences', 'mon')
tueState = config.getboolean('Preferences', 'tues')
wedState = config.getboolean('Preferences', 'wed')
thurState = config.getboolean('Preferences', 'thur')
friState = config.getboolean('Preferences', 'fri')
satState = config.getboolean('Preferences', 'sat')
sunState = config.getboolean('Preferences', 'sun')
# If the config does not exist, create it, then read it. Otherwise simply read it
if not config.read(configFile):
createConfigFile(configFile)
readConfigFile(configFile)
else:
readConfigFile(configFile)
Быстро приложения используют схемы glib для настроек приложения. Схема по умолчанию создана в data/glib-2.0/schemas
. Это XML-файл с именем net.launchpad.XXXX.gschema.xml
, где XXXX - имя вашего приложения.
Вот пример записи:
<?xml version="1.0" encoding="UTF-8"?>
<schemalist gettext-domain="drawers">
<schema id="net.launchpad.drawers" path="/net/launchpad/drawers/">
<key name="maxicons-row" type="i">
<range min="1" max="15"/>
<default>5</default>
<summary>Maximum Icons per Row</summary>
<description>Minimum value = 1 Max=15</description>
</key>
</schema>
</schemalist>
Ключи могут быть целыми числами (type = "i"), логическими (type = "b") или плавающими (type = "d"). Используйте только строчные буквы и -
в именах ключей.
Чтобы получить доступ к настройкам и связать их с виджетами, вы можете получить их следующим образом (взято из PreferencesXXXXWindow.py, сгенерированного быстро):
def finish_initializing(self, builder):# pylint: disable=E1002
"""Set up the preferences dialog"""
super(PreferencesDrawersDialog, self).finish_initializing(builder)
# Bind each preference widget to gsettings
self.settings = Gio.Settings("net.launchpad.drawers")
widget = self.builder.get_object('maxicons_row')
self.settings.bind("maxicons-row", widget, "value", Gio.SettingsBindFlags.DEFAULT)
Чтобы прочитать значения переменных в программе, вы можете сделайте следующее:
from gi.repository import Gio
settings = Gio.Settings("net.launchpad.drawers")
integer=settings.get_int("intsetting")
float = settings.get_double("floatsetting")
bool = settings.get_boolean("booleansetting")
Надеюсь, что поможет.
Если вы храните пользовательские данные, вы обычно сохраняете их в $ HOME / .config / $ YOURAPP / (хотя пользователь может изменить это, поэтому лучше использовать xdg.BaseDirectory.xdg_config_home ).
Если вы используете Python, я рекомендую библиотеку ConfigParser , которая упрощает чтение и запись данных структурированного файла конфигурации.
У меня нет большого опыта работы с Linux. Но с аналогичной проблемой я столкнулся, работая над моим приложением.
В linux каждое приложение генерирует файл, который включает в себя все настройки. Если это собственное приложение для Linux, вы можете легко найти файл в папке "/ etc /".
, пожалуйста, предоставьте образец названия приложения для получения более подробной информации.
Надеюсь, это поможет тебе найти свой путь.