X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fmain.c;h=461949fbfc48910a5a1ff257e443e50d0008890e;hb=14fc47ac64775ddfbc62ad606c7a94054dc4a898;hp=25d65aa2a0ed31e7bdfb3d661720ee71fd4ae152;hpb=8964908214de4ce88462b4ff687413220a576b30;p=psensor.git diff --git a/src/main.c b/src/main.c index 25d65aa..461949f 100644 --- a/src/main.c +++ b/src/main.c @@ -31,6 +31,7 @@ #include "config.h" #include "cfg.h" +#include #include "psensor.h" #include "graph.h" #include "ui.h" @@ -68,7 +69,7 @@ #endif #ifdef HAVE_GTOP -#include "cpu.h" +#include #endif static const char *program_name; @@ -103,9 +104,6 @@ static void print_help() " -u, --url=URL the URL of the psensor-server,\n" " example: http://hostname:3131")); puts(_( -" --use-libatasmart use atasmart library for disk monitoring instead of\n" -" hddtemp daemon")); - puts(_( " -n, --new-instance force the creation of a new Psensor application")); puts(""); @@ -156,7 +154,7 @@ static void *update_measures(void *data) update_psensor_values_size(sensors, cfg); - psensor_list_update_measures(sensors); + lmsensor_psensor_list_update(sensors); #ifdef HAVE_REMOTE_SUPPORT remote_psensor_list_update(sensors); #endif @@ -169,6 +167,14 @@ static void *update_measures(void *data) #ifdef HAVE_LIBUDISKS2 udisks2_psensor_list_update(sensors); #endif +#ifdef HAVE_GTOP + gtop2_psensor_list_update(sensors); +#endif +#ifdef HAVE_ATASMART + atasmart_psensor_list_update(sensors); +#endif + + hddtemp_psensor_list_update(sensors); psensor_log_measures(sensors); @@ -255,29 +261,47 @@ static void cb_alarm_raised(struct psensor *sensor, void *data) static void associate_colors(struct psensor **sensors) { - /* number of uniq colors */ -#define COLORS_COUNT 8 - - double colors[COLORS_COUNT][3] = { - {0, 0, 0}, /* black */ - {1, 0, 0}, /* red */ - {0, 0, 1}, /* blue */ - {0, 1, 0}, /* green */ - - {0.5, 0.5, 0.5},/* grey */ - {0.5, 0, 0}, /* dark red */ - {0, 0, 0.5}, /* dark blue */ - {0, 0.5, 0} /* dark green */ + GdkRGBA rgba; + /* copied from the default colors of the gtk color color + * chooser. */ + const char *default_colors[27] = { + "#ef2929", /* Scarlet Red */ + "#fcaf3e", /* Orange */ + "#fce94f", /* Butter */ + "#8ae234", /* Chameleon */ + "#729fcf", /* Sky Blue */ + "#ad7fa8", /* Plum */ + "#e9b96e", /* Chocolate */ + "#888a85", /* Aluminum 1 */ + "#eeeeec", /* Aluminum 2 */ + "#cc0000", + "#f57900", + "#edd400", + "#73d216", + "#3465a4", + "#75507b", + "#c17d11", + "#555753", + "#d3d7cf", + "#a40000", + "#ce5c00", + "#c4a000", + "#4e9a06", + "#204a87", + "#5c3566", + "#8f5902", + "#2e3436", + "#babdb6" }; - struct psensor **cur; int i; + struct psensor **cur; struct color c; for (cur = sensors, i = 0; *cur; cur++, i++) { - color_set(&c, - colors[i % COLORS_COUNT][0], - colors[i % COLORS_COUNT][1], - colors[i % COLORS_COUNT][2]); + gdk_rgba_parse(&rgba, default_colors[i % 27]); + c.red = rgba.red; + c.green = rgba.green; + c.blue = rgba.blue; (*cur)->color = config_get_sensor_color((*cur)->id, &c); } @@ -348,7 +372,6 @@ static void log_init() } static struct option long_options[] = { - {"use-libatasmart", no_argument, 0, 0}, {"version", no_argument, 0, 'v'}, {"help", no_argument, 0, 'h'}, {"url", required_argument, 0, 'u'}, @@ -407,8 +430,6 @@ static void cleanup(struct ui_psensor *ui) log_debug("Cleanup..."); - psensor_cleanup(); - #ifdef HAVE_NVIDIA nvidia_cleanup(); #endif @@ -439,10 +460,8 @@ static void cleanup(struct ui_psensor *ui) * Creates the list of sensors. * * 'url': remote psensor server url, null for local monitoring. - * 'use_libatasmart': whether the libatasmart must be used. */ -static struct psensor **create_sensors_list(const char *url, - unsigned int use_libatasmart) +static struct psensor **create_sensors_list(const char *url) { struct psensor **sensors; @@ -456,18 +475,35 @@ static struct psensor **create_sensors_list(const char *url, exit(EXIT_FAILURE); #endif } else { - sensors = get_all_sensors(use_libatasmart, 600); + sensors = malloc(sizeof(struct psensor *)); + *sensors = NULL; + + if (config_is_lmsensor_enabled()) + lmsensor_psensor_list_append(&sensors, 600); + + if (config_is_hddtemp_enabled()) + hddtemp_psensor_list_append(&sensors, 600); + +#ifdef HAVE_ATASMART + if (config_is_libatasmart_enabled()) + atasmart_psensor_list_append(&sensors, 600); +#endif + #ifdef HAVE_NVIDIA - sensors = nvidia_psensor_list_add(sensors, 600); + if (config_is_nvctrl_enabled()) + nvidia_psensor_list_append(&sensors, 600); #endif #ifdef HAVE_LIBATIADL - sensors = amd_psensor_list_add(sensors, 600); + if (config_is_atiadlsdk_enabled()) + amd_psensor_list_append(&sensors, 600); #endif #ifdef HAVE_GTOP - cpu_psensor_list_append(&sensors, 600); + if (config_is_gtop2_enabled()) + gtop2_psensor_list_append(&sensors, 600); #endif #ifdef HAVE_LIBUDISKS2 - udisks2_psensor_list_append(&sensors, 600); + if (config_is_udisks2_enabled()) + udisks2_psensor_list_append(&sensors, 600); #endif } @@ -481,9 +517,9 @@ int main(int argc, char **argv) { struct ui_psensor ui; pthread_t thread; - int optc, cmdok, opti, use_libatasmart, new_instance, ret; + int optc, cmdok, opti, new_instance, ret; char *url = NULL; - GApplication *app; + GtkApplication *app; program_name = argv[0]; @@ -494,16 +530,12 @@ int main(int argc, char **argv) textdomain(PACKAGE); #endif - use_libatasmart = new_instance = 0; + new_instance = 0; cmdok = 1; while ((optc = getopt_long(argc, argv, "vhd:u:n", long_options, &opti)) != -1) { switch (optc) { - case 0: - if (!strcmp(long_options[opti].name, "use-libatasmart")) - use_libatasmart = 1; - break; case 'u': if (optarg) url = strdup(optarg); @@ -535,12 +567,12 @@ int main(int argc, char **argv) log_init(); - app = g_application_new("wpitchoune.psensor", 0); + app = gtk_application_new("wpitchoune.psensor", G_APPLICATION_IS_SERVICE); - g_application_register(app, NULL, NULL); + printf("%d\n",g_application_register(G_APPLICATION(app), NULL, NULL)); - if (!new_instance && g_application_get_is_remote(app)) { - g_application_activate(app); + if (!new_instance && g_application_get_is_remote(G_APPLICATION(app))) { + g_application_activate(G_APPLICATION(app)); log_warn(_("A Psensor instance already exists.")); exit(EXIT_SUCCESS); } @@ -574,9 +606,7 @@ int main(int argc, char **argv) ui.config = config_load(); - psensor_init(); - - ui.sensors = create_sensors_list(url, use_libatasmart); + ui.sensors = create_sensors_list(url); associate_cb_alarm_raised(ui.sensors, &ui); if (ui.config->slog_enabled)