This is an old revision of the document!
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/<some-sub-directories>”
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 FUSE module that stores the settings in a bdb or something.
Alternatives
May I suggest, you have a short look at Elektra - Probably thats what you want plus a bit more…