* added progessbars for cpu and memory usage
(Old svn revision: 1935)
This commit is contained in:
@@ -102,9 +102,32 @@ gboolean refresh_task_list(void)
|
||||
|
||||
g_array_free(new_task_list, TRUE);
|
||||
|
||||
system_status *sys_stat = g_new (system_status, 1);
|
||||
get_system_status (sys_stat);
|
||||
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (mem_usage_progress_bar), 1.0 - ( (gdouble) sys_stat->mem_free / sys_stat->mem_total ));
|
||||
gtk_progress_bar_set_fraction (GTK_PROGRESS_BAR (cpu_usage_progress_bar), get_cpu_usage(sys_stat));
|
||||
g_free (sys_stat);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
gdouble get_cpu_usage(system_status *sys_stat)
|
||||
{
|
||||
gdouble cpu_usage = 0.0;
|
||||
gint i = 0;
|
||||
|
||||
for(i = 0; i < task_array->len; i++)
|
||||
{
|
||||
struct task *tmp = &g_array_index(task_array, struct task, i);
|
||||
cpu_usage += tmp->time_percentage;
|
||||
}
|
||||
|
||||
cpu_usage = cpu_usage / (sys_stat->cpu_count * 100.0);
|
||||
|
||||
printf("%i\n", sys_stat->cpu_count);
|
||||
|
||||
return cpu_usage;
|
||||
}
|
||||
|
||||
/*
|
||||
* configurationfile support
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#define FUNCTIONS_H
|
||||
|
||||
#include <gtk/gtk.h>
|
||||
#include <glib.h>
|
||||
#include <dirent.h>
|
||||
#include <pwd.h>
|
||||
#include <sys/types.h>
|
||||
@@ -45,6 +46,7 @@
|
||||
#define PROC_DIR_3 "/proc"
|
||||
|
||||
gboolean refresh_task_list(void);
|
||||
gdouble get_cpu_usage(system_status *sys_stat);
|
||||
void send_signal_to_task(gchar *task_id, gchar *signal);
|
||||
|
||||
/* Configurationfile support */
|
||||
|
||||
@@ -36,7 +36,9 @@ GtkWidget* create_main_window (void)
|
||||
GtkWidget *button1;
|
||||
GtkWidget *button2;
|
||||
GtkWidget *button3;
|
||||
|
||||
|
||||
GtkWidget *system_info_box;
|
||||
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
gtk_window_set_title (GTK_WINDOW (window), _("xfce4-taskmanager"));
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), win_width, win_height);
|
||||
@@ -46,6 +48,20 @@ GtkWidget* create_main_window (void)
|
||||
gtk_container_add (GTK_CONTAINER (window), vbox1);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (vbox1), 10);
|
||||
|
||||
system_info_box = gtk_hbox_new (FALSE, 10);
|
||||
gtk_widget_show (system_info_box);
|
||||
gtk_box_pack_start (GTK_BOX (vbox1), system_info_box, FALSE, TRUE, 0);
|
||||
|
||||
cpu_usage_progress_bar = gtk_progress_bar_new ();
|
||||
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (cpu_usage_progress_bar), _("cpu usage"));
|
||||
gtk_widget_show (cpu_usage_progress_bar);
|
||||
gtk_box_pack_start (GTK_BOX (system_info_box), cpu_usage_progress_bar, TRUE, TRUE, 0);
|
||||
|
||||
mem_usage_progress_bar = gtk_progress_bar_new ();
|
||||
gtk_progress_bar_set_text (GTK_PROGRESS_BAR (mem_usage_progress_bar), _("memory usage"));
|
||||
gtk_widget_show (mem_usage_progress_bar);
|
||||
gtk_box_pack_start (GTK_BOX (system_info_box), mem_usage_progress_bar, TRUE, TRUE, 0);
|
||||
|
||||
scrolledwindow1 = gtk_scrolled_window_new (NULL, NULL);
|
||||
gtk_widget_show (scrolledwindow1);
|
||||
gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolledwindow1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
|
||||
|
||||
@@ -46,6 +46,8 @@ GtkTreeSelection *selection;
|
||||
GtkWidget *treeview;
|
||||
GtkWidget *mainmenu;
|
||||
GtkWidget *taskpopup;
|
||||
GtkWidget *cpu_usage_progress_bar;
|
||||
GtkWidget *mem_usage_progress_bar;
|
||||
|
||||
#define COLUMN_NAME 0
|
||||
#define COLUMN_PID 1
|
||||
|
||||
@@ -41,6 +41,13 @@ struct task
|
||||
gdouble time_percentage;
|
||||
};
|
||||
|
||||
typedef struct
|
||||
{
|
||||
gint mem_total;
|
||||
gint mem_free;
|
||||
gint cpu_count;
|
||||
} system_status;
|
||||
|
||||
GtkWidget *main_window;
|
||||
|
||||
GArray *task_array;
|
||||
|
||||
@@ -151,3 +151,63 @@ GArray *get_task_list()
|
||||
|
||||
return task_list;
|
||||
}
|
||||
|
||||
gboolean get_system_status (system_status *sys_stat)
|
||||
{
|
||||
FILE *file;
|
||||
gchar *file_name;
|
||||
gchar *buffer;
|
||||
|
||||
buffer = g_new (gchar, 100);
|
||||
|
||||
file_name = g_strdup ("/proc/meminfo");
|
||||
|
||||
if (!g_file_test (file_name, G_FILE_TEST_EXISTS))
|
||||
{
|
||||
g_free(file_name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
file = fopen (file_name, "r");
|
||||
|
||||
if (file)
|
||||
{
|
||||
while (fgets (buffer, 100, file) != NULL)
|
||||
{
|
||||
sscanf (buffer, "MemTotal:\t%i kB", &sys_stat->mem_total);
|
||||
sscanf (buffer, "MemFree:\t%i kB", &sys_stat->mem_free);
|
||||
}
|
||||
fclose (file);
|
||||
}
|
||||
g_free (buffer);
|
||||
g_free (file_name);
|
||||
|
||||
buffer = g_new (gchar, 100);
|
||||
|
||||
file_name = g_strdup ("/proc/cpuinfo");
|
||||
|
||||
if (!g_file_test (file_name, G_FILE_TEST_EXISTS))
|
||||
{
|
||||
g_free(file_name);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
file = fopen (file_name, "r");
|
||||
|
||||
sys_stat->cpu_count = -1;
|
||||
|
||||
if (file)
|
||||
{
|
||||
|
||||
while (fgets (buffer, 100, file) != NULL)
|
||||
{
|
||||
sscanf (buffer, "processor : %i", &sys_stat->cpu_count);
|
||||
}
|
||||
fclose (file);
|
||||
sys_stat->cpu_count++;
|
||||
}
|
||||
g_free (buffer);
|
||||
g_free (file_name);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -13,5 +13,6 @@
|
||||
|
||||
struct task get_task_details(gint pid);
|
||||
GArray *get_task_list();
|
||||
gboolean get_system_status(system_status *sys_stat);
|
||||
|
||||
#endif
|
||||
|
||||
Reference in New Issue
Block a user