Xfce Wiki

Sub domains
 

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…