struct desktop desktop = { 0 };
struct output *output;
struct weston_config_section *s;
+ const char *config_file;
desktop.unlock_task.run = unlock_dialog_finish;
wl_list_init(&desktop.outputs);
- desktop.config = weston_config_parse("weston.ini");
+ config_file = weston_config_get_name_from_env();
+ desktop.config = weston_config_parse(config_file);
s = weston_config_get_section(desktop.config, "shell", NULL, NULL);
weston_config_section_get_bool(s, "locking", &desktop.locking, 1);
static struct hmi_homescreen_setting *
hmi_homescreen_setting_create(void)
{
+ const char *config_file;
struct weston_config *config = NULL;
struct weston_config_section *shellSection = NULL;
struct hmi_homescreen_setting *setting = MEM_ALLOC(sizeof(*setting));
wl_list_init(&setting->workspace_list);
wl_list_init(&setting->launcher_list);
- config = weston_config_parse("weston.ini");
+ config_file = weston_config_get_name_from_env();
+ config = weston_config_parse(config_file);
shellSection =
weston_config_get_section(config, "ivi-shell", NULL, NULL);
{
struct display *d;
struct terminal *terminal;
+ const char *config_file;
struct weston_config *config;
struct weston_config_section *s;
if (!option_shell)
option_shell = "/bin/bash";
- config = weston_config_parse("weston.ini");
+ config_file = weston_config_get_name_from_env();
+ config = weston_config_parse(config_file);
s = weston_config_get_section(config, "terminal", NULL, NULL);
weston_config_section_get_string(s, "font", &option_font, "mono");
weston_config_section_get_int(s, "font-size", &option_font_size, 14);
static void
create_cursors(struct display *display)
{
+ const char *config_file;
struct weston_config *config;
struct weston_config_section *s;
int size;
unsigned int i, j;
struct wl_cursor *cursor;
- config = weston_config_parse("weston.ini");
+ config_file = weston_config_get_name_from_env();
+ config = weston_config_parse(config_file);
s = weston_config_get_section(config, "shell", NULL, NULL);
weston_config_section_get_string(s, "cursor-theme", &theme, NULL);
weston_config_section_get_int(s, "cursor-size", &size, 32);
For Wayland clients, holds the file descriptor of an open local socket
to a Wayland server.
.TP
+.B WESTON_CONFIG_FILE
+Weston sets this variable to the absolute path of the configuration file
+it loads, or to the empty string if no file is used. Programs that use
+.I weston.ini
+will read the file specified by this variable instead, or do not read any
+file if it is empty. Unset variable causes falling back to the default
+name
+.IR weston.ini .
+.TP
.B XCURSOR_PATH
Set the list of paths to look for cursors in. It changes both
libwayland-cursor and libXcursor, so it affects both Wayland and X11 based
return LIBEXECDIR;
}
+const char *
+weston_config_get_name_from_env(void)
+{
+ const char *name;
+
+ name = getenv(WESTON_CONFIG_FILE_ENV_VAR);
+ if (name)
+ return name;
+
+ return "weston.ini";
+}
+
static struct weston_config_section *
config_add_section(struct weston_config *config, const char *name)
{
extern "C" {
#endif
+#define WESTON_CONFIG_FILE_ENV_VAR "WESTON_CONFIG_FILE"
+
enum config_key_type {
CONFIG_KEY_INTEGER, /* typeof data = int */
CONFIG_KEY_UNSIGNED_INTEGER, /* typeof data = unsigned int */
const char *
weston_config_get_libexec_dir(void);
+const char *
+weston_config_get_name_from_env(void);
+
struct weston_config *
weston_config_parse(const char *name);
static int
load_configuration(struct weston_config **config, int32_t noconfig)
{
+ const char *full_path;
+
*config = NULL;
if (noconfig == 0)
*config = weston_config_parse("weston.ini");
if (*config) {
- weston_log("Using config file '%s'\n",
- weston_config_get_full_path(*config));
+ full_path = weston_config_get_full_path(*config);
+
+ weston_log("Using config file '%s'\n", full_path);
+ setenv(WESTON_CONFIG_FILE_ENV_VAR, full_path, 1);
} else {
weston_log("Starting with no config file.\n");
+ setenv(WESTON_CONFIG_FILE_ENV_VAR, "", 1);
}
return 0;