X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fconfig.c;h=757eff6e73b915ee34ddb89e840ea5402a43082c;hb=ce50a6305fd40385929dd383655292fd475d2df0;hp=6f7d42a64bb538506cfaba1ca9c465bbacf96322;hpb=26ddd8e4cc409b705ac7679851e603ff8b31d719;p=chaz%2Ftint2 diff --git a/src/config.c b/src/config.c index 6f7d42a..757eff6 100644 --- a/src/config.c +++ b/src/config.c @@ -38,6 +38,7 @@ #include "server.h" #include "task.h" #include "taskbar.h" +#include "systraybar.h" #include "clock.h" #include "panel.h" #include "config.h" @@ -310,6 +311,7 @@ void add_entry (char *key, char *value) if (time1_format) g_free(time1_format); if (strlen(value) > 0) time1_format = strdup (value); else time1_format = 0; + panel_config->clock.area.visible = 1; } else if (strcmp (key, "time2_format") == 0) { if (time2_format) g_free(time2_format); @@ -409,6 +411,21 @@ void add_entry (char *key, char *value) memcpy(&panel_config->g_task.area.pix_active.border, &a->pix.border, sizeof(Border)); } + /* Systray */ + else if (strcmp (key, "systray_padding") == 0) { + extract_values(value, &value1, &value2, &value3); + panel_config->systray.area.paddingxlr = panel_config->systray.area.paddingx = atoi (value1); + if (value2) panel_config->systray.area.paddingy = atoi (value2); + if (value3) panel_config->systray.area.paddingx = atoi (value3); + panel_config->systray.area.visible = 1; + } + else if (strcmp (key, "systray_background_id") == 0) { + int id = atoi (value); + Area *a = g_slist_nth_data(list_back, id); + memcpy(&panel_config->systray.area.pix.back, &a->pix.back, sizeof(Color)); + memcpy(&panel_config->systray.area.pix.border, &a->pix.border, sizeof(Border)); + } + /* Mouse actions */ else if (strcmp (key, "mouse_middle") == 0) get_action (value, &mouse_middle); @@ -539,20 +556,18 @@ void config_finish () fprintf(stderr, "tint2 exit : monitor %d not found.\n", panel_config->monitor+1); exit(0); } - else { - if (!server.monitor[panel_config->monitor].width || !server.monitor[panel_config->monitor].height) - fprintf(stderr, "tint2 error : invalid monitor size.\n"); - } // alloc panels int i; if (panel_config->monitor >= 0) { + // just one monitor nb_panel = 1; panel1 = calloc(nb_panel, sizeof(Panel)); memcpy(panel1, panel_config, sizeof(Panel)); + panel1->monitor = panel_config->monitor; } else { - // multi monitor + // all monitors nb_panel = server.nb_monitor; panel1 = calloc(nb_panel, sizeof(Panel)); @@ -562,14 +577,24 @@ void config_finish () } } + // TODO: user can configure layout => ordered objects in panel.area.list + // clock and systray before taskbar because resize(clock) can resize others object init_panel(); + init_clock(); + // force the resize + for (i=0 ; i < nb_panel ; i++) { + panel1[i].area.resize = 1; + if (panel1[i].clock.area.visible) + resize_clock(&panel1[i].clock); + } + + init_systray(); init_taskbar(); visible_object(); - task_refresh_tasklist(); - panel_refresh = 1; - cleanup_config(); + + task_refresh_tasklist(); }