====== Simple Settings ====== ===== Introduction ===== So I'd like to do some idle talk about simplifying the configuration system of Xfce4.5. All the possibilities I heard so far do not go far enough. What I'd like to see is it to be simplified to the max by: Using one (real) file per setting (yes _setting_) in ".config/xfce4/" If the setting points to a file (for example background image), it should be a symlink to the file. Otherwise it should be a regular file containing the value as readable string. ===== Settings layout ===== .config/xfce4/settings/pyramid.ath.cx/desktop/:0.0/brightness .config/xfce4/settings/pyramid.ath.cx/desktop/:0.0/color_1 .config/xfce4/settings/pyramid.ath.cx/desktop/:0.0/color_2 .config/xfce4/settings/pyramid.ath.cx/desktop/:0.0/color_style .config/xfce4/settings/pyramid.ath.cx/desktop/:0.0/image -> /home/dannym/pic/backgrounds/image_1 .config/xfce4/settings/pyramid.ath.cx/desktop/:0.0/image_style .config/xfce4/settings/pyramid.ath.cx/desktop/:0.1/image_style .config/xfce4/settings/pyramid.ath.cx/display/:0/blue_gamma .config/xfce4/settings/pyramid.ath.cx/display/:0/green_gamma .config/xfce4/settings/pyramid.ath.cx/display/:0/red_gamma .config/xfce4/settings/pyramid.ath.cx/display/:0/size .config/xfce4/settings/pyramid.ath.cx/display/:0/rate .config/xfce4/settings/pyramid.ath.cx/gtk/:0/can_change_accelerators .config/xfce4/settings/pyramid.ath.cx/gtk/:0/cursor_theme_name .config/xfce4/settings/pyramid.ath.cx/gtk/:0/cursor_theme_size .config/xfce4/settings/pyramid.ath.cx/gtk/:0/font_name .config/xfce4/settings/pyramid.ath.cx/gtk/:0/key_theme_name .config/xfce4/settings/pyramid.ath.cx/gtk/:0/toolbar_style <-- this is stupid, should be a per-app setting. .config/xfce4/settings/pyramid.ath.cx/keyboard/:0/repeat_delay .config/xfce4/settings/pyramid.ath.cx/keyboard/:0/repeat_key .config/xfce4/settings/pyramid.ath.cx/keyboard/:0/repeat_rate .config/xfce4/settings/pyramid.ath.cx/margins/:0/bottom_margin .config/xfce4/settings/pyramid.ath.cx/margins/:0/top_margin .config/xfce4/settings/pyramid.ath.cx/margins/:0/left_margin .config/xfce4/settings/pyramid.ath.cx/margins/:0/right_margin .config/xfce4/settings/pyramid.ath.cx/mouse/:0/right_handed .config/xfce4/settings/pyramid.ath.cx/mouse/:0/right_handed .config/xfce4/settings/pyramid.ath.cx/panel/:0/autohide .config/xfce4/settings/pyramid.ath.cx/panel/:0/fullwidth .config/xfce4/settings/pyramid.ath.cx/panel/:0/layer .config/xfce4/settings/pyramid.ath.cx/panel/:0/orientation .config/xfce4/settings/pyramid.ath.cx/panel/:0/popup_position .config/xfce4/settings/pyramid.ath.cx/panel/:0/size .config/xfce4/settings/pyramid.ath.cx/panel/:0/theme -> /home/dannym/.themes/foo .config/xfce4/settings/pyramid.ath.cx/shortcuts/:0/XF86_VolumeUp/command .config/xfce4/settings/pyramid.ath.cx/sound/:0/mixer/default_device .config/xfce4/settings/pyramid.ath.cx/sound/:0/mixer/device_0/useful_controls .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/auto_hide .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/group_tasks .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/height .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/horizontal_alignment .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/position .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/show_all_tasks .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/show_pager .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/show_tasklist .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/show_text .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/show_time .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/show_tray .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/shrink .config/xfce4/settings/pyramid.ath.cx/taskbar/:0/width_percent .config/xfce4/settings/pyramid.ath.cx/terminal/:0/accelerators .config/xfce4/settings/pyramid.ath.cx/terminal/:0/font_name .config/xfce4/settings/pyramid.ath.cx/terminal/:0/scrollback .config/xfce4/settings/pyramid.ath.cx/terminal/:0/scrollbar .config/xfce4/settings/pyramid.ath.cx/terminal/:0/show_menu .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/cycle_hidden .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/cycle_minimum .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/cycle_workspaces .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/easy_click .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/focus_hint .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/frame_opacity .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/move_opacity .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/placement_ratio .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/popup_opacity .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/prevent_focus_stealing .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/raise_with_any_button .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/resize_opacity .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/restore_on_move .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/scroll_workspaces .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/show_frame_shadow .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/show_popup_shadow .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/snap_resistance .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/toggle_workspaces .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/wrap_cycle .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/wrap_layout .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/box_move .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/box_resize .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/button_layout .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/click_to_focus .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/double_click_action .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/focus_new_window .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/focus_raise .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/raise_delay .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/raise_on_click .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/snap_to_border .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/snap_to_windows .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/snap_width .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/theme .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/title_alignment .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/title_font .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/wrap_resistance .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/wrap_windows .config/xfce4/settings/pyramid.ath.cx/window_manager/:0/wrap_workspaces .config/xfce4/settings/pyramid.ath.cx/workspaces/:0/workspace_count .config/xfce4/settings/pyramid.ath.cx/workspaces/:0/workspace_names .config/xfce4/settings/pyramid.ath.cx/printing/:0/system -> /usr/lib/xfce4/xfprint-plugins/cups_plugin.so That isn't all that much, is it? ===== Advantages ===== * simple to copy/merge * simple to understand * can use all the normal unix tools\\ (symlink the important ones to another directory etc) * simple to change by script * uses normal unix tree api and doesn't introduce another version of it (xml, ini file, whatever) * uses file change notification to be notified of changes (not xsettings) ===== Disadvantage ===== * wastes space on old filesystems - aren't that many files though! * unnecessary use of resources. this could be summed up in one XML file. only a crazy person would organize settings this way. ===== Conclusion ===== As a means to fix the only remaining disadvantage, I'd suggest writing/mounting a [[http://fuse.sourceforge.net/|FUSE]] module that stores the settings in a bdb or something. ===== Alternatives ===== May I suggest, you have a short look at [[http://www.libelektra.org/Why_Linux_Needs_to_be_Elektrified|Elektra]] - Probably thats what you want plus a bit more... ===== Links ===== [[http://blog.xfce.org/?p=171|Comments on this idea on the Xfce blog]]