evisum: various improvements.
Better command naming on Linux. Also set data type needs to use a modifier. So, Ctrl + k, m and g.
This commit is contained in:
parent
ac7cbd8a5b
commit
a74ee1d83b
4
README
4
README
|
@ -25,6 +25,6 @@ $ ninja -C build install
|
||||||
|
|
||||||
NOTES
|
NOTES
|
||||||
|
|
||||||
You can press 'k', 'm', 'g' to display results in KB, MB of GB
|
You can press Ctrl plus 'k', 'm', 'g' to display results in KB, MB
|
||||||
respectively.
|
of GB respectively.
|
||||||
|
|
||||||
|
|
|
@ -138,15 +138,15 @@ _parse_line(const char *line)
|
||||||
static Eina_List *
|
static Eina_List *
|
||||||
_process_list_linux_get(void)
|
_process_list_linux_get(void)
|
||||||
{
|
{
|
||||||
char *name;
|
Eina_List *files, *list;
|
||||||
Eina_List *files, *list = NULL;
|
|
||||||
FILE *f;
|
FILE *f;
|
||||||
char path[PATH_MAX], line[4096], program_name[1024], state;
|
char *name, *link, state, line[4096], program_name[1024];
|
||||||
int pid, res, utime, stime, cutime, cstime, uid, psr, pri, nice, numthreads;
|
int pid, res, utime, stime, cutime, cstime, uid, psr, pri, nice, numthreads;
|
||||||
unsigned int mem_size, mem_rss;
|
unsigned int mem_size, mem_rss;
|
||||||
|
|
||||||
int pagesize = getpagesize();
|
int pagesize = getpagesize();
|
||||||
|
|
||||||
|
list = NULL;
|
||||||
|
|
||||||
files = ecore_file_ls("/proc");
|
files = ecore_file_ls("/proc");
|
||||||
EINA_LIST_FREE(files, name)
|
EINA_LIST_FREE(files, name)
|
||||||
{
|
{
|
||||||
|
@ -155,9 +155,7 @@ _process_list_linux_get(void)
|
||||||
|
|
||||||
if (!pid) continue;
|
if (!pid) continue;
|
||||||
|
|
||||||
snprintf(path, sizeof(path), "/proc/%d/stat", pid);
|
f = fopen(eina_slstr_printf("/proc/%d/stat", pid), "r");
|
||||||
|
|
||||||
f = fopen(path, "r");
|
|
||||||
if (!f) continue;
|
if (!f) continue;
|
||||||
|
|
||||||
if (fgets(line, sizeof(line), f))
|
if (fgets(line, sizeof(line), f))
|
||||||
|
@ -178,9 +176,7 @@ _process_list_linux_get(void)
|
||||||
|
|
||||||
if (res != 42) continue;
|
if (res != 42) continue;
|
||||||
|
|
||||||
snprintf(path, sizeof(path), "/proc/%d/status", pid);
|
f = fopen(eina_slstr_printf("/proc/%d/status", pid), "r");
|
||||||
|
|
||||||
f = fopen(path, "r");
|
|
||||||
if (!f) continue;
|
if (!f) continue;
|
||||||
|
|
||||||
while ((fgets(line, sizeof(line), f)) != NULL)
|
while ((fgets(line, sizeof(line), f)) != NULL)
|
||||||
|
@ -194,6 +190,26 @@ _process_list_linux_get(void)
|
||||||
|
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
|
link = ecore_file_readlink(eina_slstr_printf("/proc/%d/exe", pid));
|
||||||
|
if (link)
|
||||||
|
{
|
||||||
|
snprintf(program_name, sizeof(program_name), "%s", ecore_file_file_get(link));
|
||||||
|
free(link);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
f = fopen(eina_slstr_printf("/proc/%d/cmdline", pid), "r");
|
||||||
|
if (f)
|
||||||
|
{
|
||||||
|
if (fgets(line, sizeof(line), f))
|
||||||
|
{
|
||||||
|
if (ecore_file_exists(line))
|
||||||
|
snprintf(program_name, sizeof(program_name), "%s", ecore_file_file_get(line));
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Proc_Stats *p = calloc(1, sizeof(Proc_Stats));
|
Proc_Stats *p = calloc(1, sizeof(Proc_Stats));
|
||||||
if (!p) return NULL;
|
if (!p) return NULL;
|
||||||
|
|
||||||
|
@ -222,17 +238,11 @@ Proc_Stats *
|
||||||
proc_info_by_pid(int pid)
|
proc_info_by_pid(int pid)
|
||||||
{
|
{
|
||||||
FILE *f;
|
FILE *f;
|
||||||
char path[PATH_MAX];
|
char *link, state, line[4096], program_name[1024];
|
||||||
char line[4096];
|
|
||||||
char state, program_name[1024];
|
|
||||||
int res, dummy, utime, stime, cutime, cstime, uid, psr;
|
int res, dummy, utime, stime, cutime, cstime, uid, psr;
|
||||||
unsigned int mem_size, mem_rss, pri, nice, numthreads;
|
unsigned int mem_size, mem_rss, pri, nice, numthreads;
|
||||||
|
|
||||||
snprintf(path, sizeof(path), "/proc/%d/stat", pid);
|
f = fopen(eina_slstr_printf("/proc/%d/stat", pid), "r");
|
||||||
if (!ecore_file_exists(path))
|
|
||||||
return NULL;
|
|
||||||
|
|
||||||
f = fopen(path, "r");
|
|
||||||
if (!f) return NULL;
|
if (!f) return NULL;
|
||||||
|
|
||||||
if (fgets(line, sizeof(line), f))
|
if (fgets(line, sizeof(line), f))
|
||||||
|
@ -251,9 +261,7 @@ proc_info_by_pid(int pid)
|
||||||
|
|
||||||
if (res != 42) return NULL;
|
if (res != 42) return NULL;
|
||||||
|
|
||||||
snprintf(path, sizeof(path), "/proc/%d/status", pid);
|
f = fopen(eina_slstr_printf("/proc/%d/status", pid), "r");
|
||||||
|
|
||||||
f = fopen(path, "r");
|
|
||||||
if (!f) return NULL;
|
if (!f) return NULL;
|
||||||
|
|
||||||
while ((fgets(line, sizeof(line), f)) != NULL)
|
while ((fgets(line, sizeof(line), f)) != NULL)
|
||||||
|
@ -266,6 +274,26 @@ proc_info_by_pid(int pid)
|
||||||
}
|
}
|
||||||
fclose(f);
|
fclose(f);
|
||||||
|
|
||||||
|
link = ecore_file_readlink(eina_slstr_printf("/proc/%d/exe", pid));
|
||||||
|
if (link)
|
||||||
|
{
|
||||||
|
snprintf(program_name, sizeof(program_name), "%s", ecore_file_file_get(link));
|
||||||
|
free(link);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
f = fopen(eina_slstr_printf("/proc/%d/cmdline", pid), "r");
|
||||||
|
if (f)
|
||||||
|
{
|
||||||
|
if (fgets(line, sizeof(line), f))
|
||||||
|
{
|
||||||
|
if (ecore_file_exists(line))
|
||||||
|
snprintf(program_name, sizeof(program_name), "%s", ecore_file_file_get(line));
|
||||||
|
}
|
||||||
|
fclose(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Proc_Stats *p = calloc(1, sizeof(Proc_Stats));
|
Proc_Stats *p = calloc(1, sizeof(Proc_Stats));
|
||||||
if (!p) return NULL;
|
if (!p) return NULL;
|
||||||
|
|
||||||
|
|
18
src/bin/ui.c
18
src/bin/ui.c
|
@ -637,10 +637,13 @@ _text_fields_append(Ui *ui, Proc_Stats *proc)
|
||||||
|
|
||||||
if (ui->search_text && ui->search_text[0])
|
if (ui->search_text && ui->search_text[0])
|
||||||
{
|
{
|
||||||
|
ui->searching = EINA_TRUE;
|
||||||
if (strncasecmp(proc->command, ui->search_text, strlen(ui->search_text)))
|
if (strncasecmp(proc->command, ui->search_text, strlen(ui->search_text)))
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ui->searching = EINA_FALSE;
|
||||||
|
|
||||||
mem_size = proc->mem_size;
|
mem_size = proc->mem_size;
|
||||||
mem_rss = proc->mem_rss;
|
mem_rss = proc->mem_rss;
|
||||||
|
|
||||||
|
@ -1324,6 +1327,7 @@ _ui_tab_system_add(Ui *ui)
|
||||||
evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
evas_object_size_hint_weight_set(scroller, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||||
evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
evas_object_size_hint_align_set(scroller, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||||
elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON);
|
elm_scroller_policy_set(scroller, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_ON);
|
||||||
|
elm_scroller_content_min_limit(scroller, EINA_TRUE, EINA_FALSE);
|
||||||
elm_scroller_wheel_disabled_set(scroller, EINA_FALSE);
|
elm_scroller_wheel_disabled_set(scroller, EINA_FALSE);
|
||||||
evas_object_show(scroller);
|
evas_object_show(scroller);
|
||||||
elm_object_content_set(scroller, table);
|
elm_object_content_set(scroller, table);
|
||||||
|
@ -2324,6 +2328,7 @@ _evisum_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||||
{
|
{
|
||||||
Evas_Event_Key_Down *ev;
|
Evas_Event_Key_Down *ev;
|
||||||
Ui *ui;
|
Ui *ui;
|
||||||
|
Eina_Bool control;
|
||||||
|
|
||||||
ev = event_info;
|
ev = event_info;
|
||||||
ui = data;
|
ui = data;
|
||||||
|
@ -2331,16 +2336,25 @@ _evisum_key_down_cb(void *data, Evas *e, Evas_Object *obj, void *event_info)
|
||||||
if (!ev || !ev->keyname)
|
if (!ev || !ev->keyname)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
control = evas_key_modifier_is_set(ev->modifiers, "Control");
|
||||||
|
|
||||||
ui->skip_wait = EINA_TRUE;
|
ui->skip_wait = EINA_TRUE;
|
||||||
|
|
||||||
|
if (!strcmp(ev->keyname, "Escape"))
|
||||||
|
{
|
||||||
|
ui_shutdown(ui);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!control) return;
|
||||||
|
|
||||||
|
/* Set data unit by CTRL + ... */
|
||||||
if ((ev->keyname[0] == 'K' || ev->keyname[0] == 'k') && !ev->keyname[1])
|
if ((ev->keyname[0] == 'K' || ev->keyname[0] == 'k') && !ev->keyname[1])
|
||||||
ui->data_unit = DATA_UNIT_KB;
|
ui->data_unit = DATA_UNIT_KB;
|
||||||
else if ((ev->keyname[0] == 'M' || ev->keyname[0] == 'm') && !ev->keyname[1])
|
else if ((ev->keyname[0] == 'M' || ev->keyname[0] == 'm') && !ev->keyname[1])
|
||||||
ui->data_unit = DATA_UNIT_MB;
|
ui->data_unit = DATA_UNIT_MB;
|
||||||
else if ((ev->keyname[0] == 'G' || ev->keyname[0] == 'g') && !ev->keyname[1])
|
else if ((ev->keyname[0] == 'G' || ev->keyname[0] == 'g') && !ev->keyname[1])
|
||||||
ui->data_unit = DATA_UNIT_GB;
|
ui->data_unit = DATA_UNIT_GB;
|
||||||
else if (!strcmp(ev->keyname, "Escape"))
|
|
||||||
ui_shutdown(ui);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static Ui *
|
static Ui *
|
||||||
|
|
|
@ -146,6 +146,7 @@ typedef struct Ui
|
||||||
Eina_Bool sort_reverse;
|
Eina_Bool sort_reverse;
|
||||||
Eina_Bool panel_visible;
|
Eina_Bool panel_visible;
|
||||||
Eina_Bool shutting_down;
|
Eina_Bool shutting_down;
|
||||||
|
Eina_Bool searching;
|
||||||
|
|
||||||
uint64_t incoming_max;
|
uint64_t incoming_max;
|
||||||
uint64_t outgoing_max;
|
uint64_t outgoing_max;
|
||||||
|
|
Loading…
Reference in New Issue