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

Disadvantage

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…

Links

Comments on this idea on the Xfce blog