picom: Drop libxdg-basedir
This commit is contained in:
parent
fe766b1ad4
commit
20226f4574
|
@ -83,7 +83,6 @@ Assuming you already have all the usual building tools installed (e.g. gcc, pyth
|
||||||
* pixman
|
* pixman
|
||||||
* libdbus (optional, disable with the `-Ddbus=false` meson configure flag)
|
* libdbus (optional, disable with the `-Ddbus=false` meson configure flag)
|
||||||
* libconfig (optional, disable with the `-Dconfig_file=false` meson configure flag)
|
* libconfig (optional, disable with the `-Dconfig_file=false` meson configure flag)
|
||||||
* libxdg-basedir (optional, disable with the `-Dconfig_file=false` meson configure flag)
|
|
||||||
* libGL (optional, disable with the `-Dopengl=false` meson configure flag)
|
* libGL (optional, disable with the `-Dopengl=false` meson configure flag)
|
||||||
* libpcre (optional, disable with the `-Dregex=false` meson configure flag)
|
* libpcre (optional, disable with the `-Dregex=false` meson configure flag)
|
||||||
* libev
|
* libev
|
||||||
|
@ -92,7 +91,7 @@ Assuming you already have all the usual building tools installed (e.g. gcc, pyth
|
||||||
On Debian based distributions (e.g. Ubuntu), the list of needed packages are
|
On Debian based distributions (e.g. Ubuntu), the list of needed packages are
|
||||||
|
|
||||||
```
|
```
|
||||||
libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev libxcb-image0-dev libxcb-present-dev libxcb-xinerama0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libxdg-basedir-dev libgl1-mesa-dev libpcre2-dev libevdev-dev uthash-dev libev-dev libx11-xcb-dev
|
libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev libxcb-image0-dev libxcb-present-dev libxcb-xinerama0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libgl1-mesa-dev libpcre2-dev libevdev-dev uthash-dev libev-dev libx11-xcb-dev
|
||||||
```
|
```
|
||||||
|
|
||||||
To build the documents, you need `asciidoc`
|
To build the documents, you need `asciidoc`
|
||||||
|
|
|
@ -6,7 +6,6 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
|
||||||
#include <basedir_fs.h>
|
|
||||||
#include <libconfig.h>
|
#include <libconfig.h>
|
||||||
#include <libgen.h>
|
#include <libgen.h>
|
||||||
|
|
||||||
|
@ -37,6 +36,46 @@ static inline int lcfg_lookup_bool(const config_t *config, const char *path, boo
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *xdgConfigHome(void) {
|
||||||
|
char *xdgh = getenv("XDG_CONFIG_HOME");
|
||||||
|
char *home = getenv("HOME");
|
||||||
|
|
||||||
|
if (!xdgh) {
|
||||||
|
if (!home) return NULL;
|
||||||
|
|
||||||
|
xdgh = cvalloc(strlen(home) + 8 + 1);
|
||||||
|
|
||||||
|
strcpy(xdgh, home);
|
||||||
|
strcat(xdgh, "/.config");
|
||||||
|
}
|
||||||
|
|
||||||
|
return xdgh;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char * const * xdgConfigDirectories(void) {
|
||||||
|
char *dirs, *path, *xdgd = getenv("XDG_CONFIG_DIRS");
|
||||||
|
char **dir_list = {0};
|
||||||
|
unsigned int sep = 0;
|
||||||
|
|
||||||
|
if (!xdgd) xdgd = ":/etc/xdg:";
|
||||||
|
|
||||||
|
dirs = strdup(xdgd);
|
||||||
|
CHECK(dirs != NULL);
|
||||||
|
path = strtok(dirs, ":");
|
||||||
|
|
||||||
|
while (path) {
|
||||||
|
dir_list = realloc(dir_list, sizeof(char*) * ++sep);
|
||||||
|
|
||||||
|
CHECK(dir_list);
|
||||||
|
|
||||||
|
dir_list[sep-1] = path;
|
||||||
|
|
||||||
|
path = strtok(NULL, ":");
|
||||||
|
}
|
||||||
|
|
||||||
|
return (const char * const *)dir_list;
|
||||||
|
}
|
||||||
|
|
||||||
/// Search for config file under a base directory
|
/// Search for config file under a base directory
|
||||||
FILE *open_config_file_at(const char *base, char **out_path) {
|
FILE *open_config_file_at(const char *base, char **out_path) {
|
||||||
static const char *config_paths[] = {"/picom.conf", "/picom/picom.conf",
|
static const char *config_paths[] = {"/picom.conf", "/picom/picom.conf",
|
||||||
|
@ -78,7 +117,7 @@ FILE *open_config_file(const char *cpath, char **ppath) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// First search for config file in user config directory
|
// First search for config file in user config directory
|
||||||
auto config_home = xdgConfigHome(NULL);
|
auto config_home = xdgConfigHome();
|
||||||
auto ret = open_config_file_at(config_home, ppath);
|
auto ret = open_config_file_at(config_home, ppath);
|
||||||
free((void *)config_home);
|
free((void *)config_home);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
@ -101,7 +140,7 @@ FILE *open_config_file(const char *cpath, char **ppath) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fall back to config file in system config directory
|
// Fall back to config file in system config directory
|
||||||
auto config_dirs = xdgConfigDirectories(NULL);
|
auto config_dirs = xdgConfigDirectories();
|
||||||
for (int i = 0; config_dirs[i]; i++) {
|
for (int i = 0; config_dirs[i]; i++) {
|
||||||
ret = open_config_file_at(config_dirs[i], ppath);
|
ret = open_config_file_at(config_dirs[i], ppath);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
|
|
|
@ -38,8 +38,8 @@ endif
|
||||||
deps = []
|
deps = []
|
||||||
|
|
||||||
if get_option('config_file')
|
if get_option('config_file')
|
||||||
deps += [dependency('libconfig', version: '>=1.4', required: true),
|
deps += [dependency('libconfig', version: '>=1.4', required: true)]
|
||||||
dependency('libxdg-basedir', required: true)]
|
|
||||||
cflags += ['-DCONFIG_LIBCONFIG']
|
cflags += ['-DCONFIG_LIBCONFIG']
|
||||||
srcs += [ 'config_libconfig.c' ]
|
srcs += [ 'config_libconfig.c' ]
|
||||||
endif
|
endif
|
||||||
|
|
Loading…
Reference in New Issue