FANDOM


Hi,

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.

So for our (more or less) current settings,

.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 are:

  • 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!

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.

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.