int update_battery(battery *b) { FILE *status_f, *capacity_f, *energy_full_f, *energy_now_f, *power_now_f; float energy_full, energy_now, power_now; if(!(b->initialized)) init_battery(b); if(!(status_f = fopen(b->status_fp, "r"))) { fprintf(stderr, "Error: Can't get %s percentage: %s: %s\n", b->name, b->status_fp, strerror(errno)); return 0; } if(!(capacity_f = fopen(b->capacity_fp, "r"))) { fprintf(stderr, "Error: Can't get %s percentage: %s: %s\n", b->name, b->capacity_fp, strerror(errno)); return 0; } if(!(energy_full_f = fopen(b->energy_full_fp, "r"))) { fprintf(stderr, "Error: Can't get %s percentage: %s: %s\n", b->name, b->energy_full_fp, strerror(errno)); return 0; } if(!(energy_now_f = fopen(b->energy_now_fp, "r"))) { fprintf(stderr, "Error: Can't get %s percentage: %s: %s\n", b->name, b->energy_now_fp, strerror(errno)); return 0; } if(!(power_now_f = fopen(b->power_now_fp, "r"))) { fprintf(stderr, "Error: Can't get %s percentage: %s: %s\n", b->name, b->power_now_fp, strerror(errno)); return 0; } fscanf(status_f, "%c", &(b->status)); fscanf(capacity_f, "%d", &(b->capacity)); fscanf(energy_full_f, "%f", &energy_full); fscanf(energy_now_f, "%f", &energy_now); fscanf(power_now_f, "%f", &power_now); fclose(status_f); fclose(capacity_f); fclose(energy_full_f); fclose(energy_now_f); fclose(power_now_f); if(b->capacity > b->charged_pcent) b->state = 3; else if(b->capacity > b->critical_pcent && b->capacity < b->warning_pcent) b->state = 1; else if(b->capacity <= b->critical_pcent) b->state = 2; else b->state = 0; switch(b->status) { case 'C': b->remaining_time = (int)(((energy_full-energy_now)/power_now)*60); break; case 'D': b->remaining_time = (int)((energy_now/power_now)*60); break; default: b->remaining_time = 0; break; } return 1; }
void init_panel() { int i; Panel *p; if (panel_config.monitor > (server.nb_monitor-1)) { // server.nb_monitor minimum value is 1 (see get_monitors()) fprintf(stderr, "warning : monitor not found. tint2 default to all monitors.\n"); panel_config.monitor = 0; } init_tooltip(); init_systray(); init_clock(); #ifdef ENABLE_BATTERY init_battery(); #endif #ifdef ENABLE_APPLETS init_applets(); #endif // number of panels (one monitor or 'all' monitors) if (panel_config.monitor >= 0) nb_panel = 1; else nb_panel = server.nb_monitor; panel1 = malloc(nb_panel * sizeof(Panel)); for (i=0 ; i < nb_panel ; i++) { memcpy(&panel1[i], &panel_config, sizeof(Panel)); } fprintf(stderr, "tint2 : nb monitor %d, nb monitor used %d, nb desktop %d\n", server.nb_monitor, nb_panel, server.nb_desktop); for (i=0 ; i < nb_panel ; i++) { p = &panel1[i]; if (panel_config.monitor < 0) p->monitor = i; p->area.parent = p; p->area.panel = p; p->area.on_screen = 1; p->area.resize = 1; p->area._resize = resize_panel; p->g_taskbar.area.parent = p; p->g_taskbar.area.panel = p; p->g_task.area.panel = p; init_panel_size_and_position(p); // add childs if (clock_enabled) { init_clock_panel(p); p->area.list = g_slist_append(p->area.list, &p->clock); } #ifdef ENABLE_BATTERY if (battery_enabled) { init_battery_panel(p); p->area.list = g_slist_append(p->area.list, &p->battery); } #endif #ifdef ENABLE_APPLETS if (applets_enabled) { init_applets_panel(p); p->area.list = g_slist_append(p->area.list, &p->applets); } #endif // systray only on first panel if (systray.area.on_screen && i == 0) { init_systray_panel(p); p->area.list = g_slist_append(p->area.list, &systray); refresh_systray = 1; } // catch some events XSetWindowAttributes att = { .colormap=server.colormap, .background_pixel=0, .border_pixel=0 }; unsigned long mask = CWEventMask|CWColormap|CWBackPixel|CWBorderPixel; p->main_win = XCreateWindow(server.dsp, server.root_win, p->posx, p->posy, p->area.width, p->area.height, 0, server.depth, InputOutput, server.visual, mask, &att); long event_mask = ExposureMask|ButtonPressMask|ButtonReleaseMask|ButtonMotionMask; if (g_tooltip.enabled) event_mask |= PointerMotionMask|LeaveWindowMask; if (panel_autohide) event_mask |= LeaveWindowMask|EnterWindowMask; XChangeWindowAttributes(server.dsp, p->main_win, CWEventMask, &(XSetWindowAttributes){.event_mask=event_mask}); if (!server.gc) { XGCValues gcv; server.gc = XCreateGC(server.dsp, p->main_win, 0, &gcv); } //printf("panel %d : %d, %d, %d, %d\n", i, p->posx, p->posy, p->area.width, p->area.height); set_panel_properties(p); set_panel_background(p); if (snapshot_path == 0) { // if we are not in 'snapshot' mode then map new panel XMapWindow (server.dsp, p->main_win); } if (panel_autohide) add_timeout(panel_autohide_hide_timeout, 0, autohide_hide, p); } panel_refresh = 1; init_taskbar(); visible_object(); task_refresh_tasklist(); active_task(); }
void init_panel() { if (panel_config.monitor > (server.num_monitors - 1)) { // server.num_monitors minimum value is 1 (see get_monitors()) fprintf(stderr, "warning : monitor not found. tint2 default to all monitors.\n"); panel_config.monitor = 0; } fprintf(stderr, "panel items: %s\n", panel_items_order); init_tooltip(); init_systray(); init_launcher(); init_clock(); #ifdef ENABLE_BATTERY init_battery(); #endif init_taskbar(); init_separator(); init_execp(); // number of panels (one monitor or 'all' monitors) if (panel_config.monitor >= 0) num_panels = 1; else num_panels = server.num_monitors; panels = calloc(num_panels, sizeof(Panel)); for (int i = 0; i < num_panels; i++) { memcpy(&panels[i], &panel_config, sizeof(Panel)); panels[i].area.gradients = g_list_copy(panel_config.area.gradients); } fprintf(stderr, "tint2 : nb monitor %d, nb monitor used %d, nb desktop %d\n", server.num_monitors, num_panels, server.num_desktops); for (int i = 0; i < num_panels; i++) { Panel *p = &panels[i]; if (panel_config.monitor < 0) p->monitor = i; if (!p->area.bg) p->area.bg = &g_array_index(backgrounds, Background, 0); p->area.parent = p; p->area.panel = p; snprintf(p->area.name, sizeof(p->area.name), "Panel %d", i); p->area.on_screen = TRUE; p->area.resize_needed = 1; p->area.size_mode = LAYOUT_DYNAMIC; p->area._resize = resize_panel; p->area._clear = panel_clear_background; p->separator_list = NULL; init_panel_size_and_position(p); instantiate_area_gradients(&p->area); // add children according to panel_items for (int k = 0; k < strlen(panel_items_order); k++) { if (panel_items_order[k] == 'L') init_launcher_panel(p); if (panel_items_order[k] == 'T') init_taskbar_panel(p); #ifdef ENABLE_BATTERY if (panel_items_order[k] == 'B') init_battery_panel(p); #endif if (panel_items_order[k] == 'S' && systray_on_monitor(i, num_panels)) { init_systray_panel(p); refresh_systray = 1; } if (panel_items_order[k] == 'C') init_clock_panel(p); if (panel_items_order[k] == 'F' && !strstr(panel_items_order, "T")) init_freespace_panel(p); if (panel_items_order[k] == ':') init_separator_panel(p); if (panel_items_order[k] == 'E') init_execp_panel(p); } set_panel_items_order(p); // catch some events XSetWindowAttributes att = {.colormap = server.colormap, .background_pixel = 0, .border_pixel = 0}; unsigned long mask = CWEventMask | CWColormap | CWBackPixel | CWBorderPixel; p->main_win = XCreateWindow(server.display, server.root_win, p->posx, p->posy, p->area.width, p->area.height, 0, server.depth, InputOutput, server.visual, mask, &att); long event_mask = ExposureMask | ButtonPressMask | ButtonReleaseMask | ButtonMotionMask | PropertyChangeMask; if (p->mouse_effects || p->g_task.tooltip_enabled || p->clock.area._get_tooltip_text || (launcher_enabled && launcher_tooltip_enabled)) event_mask |= PointerMotionMask | LeaveWindowMask; if (panel_autohide) event_mask |= LeaveWindowMask | EnterWindowMask; XChangeWindowAttributes(server.display, p->main_win, CWEventMask, &(XSetWindowAttributes){.event_mask = event_mask}); if (!server.gc) { XGCValues gcv; server.gc = XCreateGC(server.display, p->main_win, 0, &gcv); } // printf("panel %d : %d, %d, %d, %d\n", i, p->posx, p->posy, p->area.width, p->area.height); set_panel_properties(p); set_panel_background(p); if (!snapshot_path) { // if we are not in 'snapshot' mode then map new panel XMapWindow(server.display, p->main_win); } if (panel_autohide) autohide_trigger_hide(p); } taskbar_refresh_tasklist(); reset_active_task(); update_all_taskbars_visibility(); }
void init_panel() { int i, k; Panel *p; if (panel_config.monitor > (server.nb_monitor-1)) { // server.nb_monitor minimum value is 1 (see get_monitors()) fprintf(stderr, "warning : monitor not found. tint2 default to all monitors.\n"); panel_config.monitor = 0; } init_tooltip(); init_systray(); init_launcher(); init_clock(); #ifdef ENABLE_BATTERY init_battery(); #endif init_taskbar(); // number of panels (one monitor or 'all' monitors) if (panel_config.monitor >= 0) nb_panel = 1; else nb_panel = server.nb_monitor; panel1 = calloc(nb_panel, sizeof(Panel)); for (i=0 ; i < nb_panel ; i++) { memcpy(&panel1[i], &panel_config, sizeof(Panel)); } fprintf(stderr, "tint2 : nb monitor %d, nb monitor used %d, nb desktop %d\n", server.nb_monitor, nb_panel, server.nb_desktop); for (i=0 ; i < nb_panel ; i++) { p = &panel1[i]; if (panel_config.monitor < 0) p->monitor = i; if (!p->area.bg) p->area.bg = &g_array_index(backgrounds, Background, 0); p->area.parent = p; p->area.panel = p; p->area.on_screen = 1; p->area.resize = 1; p->area.size_mode = SIZE_BY_LAYOUT; p->area._resize = resize_panel; init_panel_size_and_position(p); // add childs according to panel_items for (k=0 ; k < strlen(panel_items_order) ; k++) { if (panel_items_order[k] == 'L') init_launcher_panel(p); if (panel_items_order[k] == 'T') init_taskbar_panel(p); #ifdef ENABLE_BATTERY if (panel_items_order[k] == 'B') init_battery_panel(p); #endif if (panel_items_order[k] == 'S' && systray_on_monitor(i, nb_panel)) { init_systray_panel(p); refresh_systray = 1; } if (panel_items_order[k] == 'C') init_clock_panel(p); } set_panel_items_order(p); // catch some events XSetWindowAttributes att = { .colormap=server.colormap, .background_pixel=0, .border_pixel=0 }; unsigned long mask = CWEventMask|CWColormap|CWBackPixel|CWBorderPixel; p->main_win = XCreateWindow(server.dsp, server.root_win, p->posx, p->posy, p->area.width, p->area.height, 0, server.depth, InputOutput, server.visual, mask, &att); long event_mask = ExposureMask|ButtonPressMask|ButtonReleaseMask|ButtonMotionMask; if (p->g_task.tooltip_enabled || p->clock.area._get_tooltip_text || (launcher_enabled && launcher_tooltip_enabled)) event_mask |= PointerMotionMask|LeaveWindowMask; if (panel_autohide) event_mask |= LeaveWindowMask|EnterWindowMask; XChangeWindowAttributes(server.dsp, p->main_win, CWEventMask, &(XSetWindowAttributes){.event_mask=event_mask}); if (!server.gc) { XGCValues gcv; server.gc = XCreateGC(server.dsp, p->main_win, 0, &gcv); } //printf("panel %d : %d, %d, %d, %d\n", i, p->posx, p->posy, p->area.width, p->area.height); set_panel_properties(p); set_panel_background(p); if (snapshot_path == 0) { // if we are not in 'snapshot' mode then map new panel XMapWindow (server.dsp, p->main_win); } if (panel_autohide) autohide_trigger_hide(p); visible_taskbar(p); } task_refresh_tasklist(); active_task(); }
static void main_window_load(Window *window) { init_globe(main_window); init_time(main_window); init_battery(main_window); update_time(); }
KDE_EXPORT void init_laptop() { init_battery(); }