From: PCMan <pcm...@gm...> - 2013-08-07 06:00:21
|
On Wed, Aug 7, 2013 at 1:29 PM, Kuzma Shapran <lea...@gm...> wrote: > @PCMan: I looked at lxqt-settings - it's good start. I'm currently improving > it in my fork (https://github.com/kuzmas/lxqt-settings) - some style > formatting, C++ vs. C ways of doing things, and the main: hiding > implementation into a private class to have more or less stable ABI. > > @Christian: Also I looked at dconf docs - there is a way to monitor > modifications, so adding signals for this is in my todo list as well. > > Cheers, > Kuzma Thank you for taking this over. I'm sure you'll make it better. While doing dconf thing, I encountered some problems, though. 1. The config is stored using a binary format. What will happen if it's corrupted? There is no easy way to fix a broken configuration without using either a GUI editor "dconf-editor" or a command-line tool. Fixing a wrong plain text config file with an editor is much easier. When something goes wrong and you cannot login your desktop session, it's hard to fix the config with command line tools. If we can have a set of "default values" and can let the user restore the default easily, this solves the problem partially. 2. While the glib implementation GSettings supports schemes, default values, and type checking, my implementation just does raw read and write for the values. No type checking or default values are handled. It might be better to use glib GSettings? Otherwise, default values need to be hard-coded in applications themselves. 3. Should we use dconf-qt, which is done by Canonical instead, or using our own simple class mimicking QSettings? Personally I prefer our own solution and this can be included in liblxqt. 4. Currently, I store everything as strings, mimicking what QSettings does. Dconf, however, is aware of different data types. So integers and some other types can actually be stored in their binary forms directly rather than all converted to strings. As a proof of concept, I did not do it and just convert everything to strings for ease of implementation. Please feel free to fix this part. Thanks |