mirror of
https://github.com/labwc/labwc.git
synced 2026-02-18 22:05:32 -05:00
config: support merging multiple config files
Add the -m|--merge-config command line option to iterate backwards over XDG Base Dir paths and read config/theme files multiple times. For example if both ~/.config/labwc/rc.xml and /etc/xdg/labwc/rc.xml exist, the latter will be read first and then the former (if --merge-config is enabled). When $XDG_CONFIG_HOME is defined, make it replace (not augment) $HOME/.config. Similarly, make $XDG_CONFIG_DIRS replace /etc/xdg when defined. XDG Base Dir Spec does not specify whether or not an application (or a compositor!) should (a) define that only the file under the most important base directory should be used, or (b) define rules for merging the information from the different files. ref: https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html In the case of labwc there is a use-case for both positions, just to be clear, the default behaviour, described by position (a) above, does NOT change. This change affects the following config/theme files: - rc.xml - menu.xml - autostart - environment - themerc - themerc-override - Theme buttons, for example max.xbm Instead of caching global config/theme directories, create lists of paths (e.g. '/home/foo/.config/labwc/rc.xml', '/etc/xdg/labwc/rc.xml', etc). This creates more common parsing logic and just reversing the direction of iteration and breaks early if config-merge is not wanted. Enable better fallback for themes. For example if a particular theme does not exist in $HOME/.local/share/themes, it will be searched for in ~/.themes/ and so on. This also applies to theme buttons which now fallback on an individual basis. Avoid using stat() in most situations and just go straight to fopen(). Fixes #1406
This commit is contained in:
parent
d0aff49c81
commit
698c7ace07
14 changed files with 330 additions and 240 deletions
|
|
@ -18,6 +18,19 @@ searched for in the following order:
|
|||
- ${XDG_CONFIG_HOME:-$HOME/.config}/labwc
|
||||
- ${XDG_CONFIG_DIRS:-/etc/xdg}/labwc
|
||||
|
||||
When $XDG_CONFIG_HOME is defined, it replaces (rather than augments)
|
||||
$HOME/.config. The same is the case for $XDG_CONFIG_DIRS and /etc/xdg.
|
||||
|
||||
The XDG Base Directory Specification does not specify whether or not programs
|
||||
should (a) allow the first-identified configuration file to supersede any
|
||||
others, or (b) define rules for merging the information from more than one file.
|
||||
|
||||
By default, labwc uses option (a), reading only the first file identified. With
|
||||
the --merge-config option, the search order is reserved, but every configuration
|
||||
file encountered is processed in turn. Thus, user-specific files will augment
|
||||
system-wide configurations, with conflicts favoring the user-specific
|
||||
alternative.
|
||||
|
||||
The configuration directory location can be override with the -C command line
|
||||
option.
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,9 @@ searched for in the following order:
|
|||
- /usr/local/share/themes/<theme-name>/openbox-3/
|
||||
- /opt/share/themes/<theme-name>/openbox-3/
|
||||
|
||||
When $XDG_DATA_HOME is defined, it replaces (rather than augments)
|
||||
$HOME/.local/share. The same is the case for $XDG_DATA_DIRS and /usr/share/.
|
||||
|
||||
Choosing a theme is done by editing the <name> key in the <theme> section of
|
||||
the rc.xml configuration file (labwc-config(5)).
|
||||
|
||||
|
|
|
|||
|
|
@ -45,6 +45,9 @@ the `--exit` and `--reconfigure` options use.
|
|||
*-h, --help*
|
||||
Show help message and quit
|
||||
|
||||
*-m, --merge-config*
|
||||
Merge user config/theme files in all XDG Base Directories
|
||||
|
||||
*-r, --reconfigure*
|
||||
Reload the compositor configuration
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue