diff --git a/data/images/freebsd.png b/data/images/freebsd.png new file mode 100644 index 0000000..5e862ea Binary files /dev/null and b/data/images/freebsd.png differ diff --git a/data/images/meson.build b/data/images/meson.build index 14a0317..5b96c99 100644 --- a/data/images/meson.build +++ b/data/images/meson.build @@ -10,5 +10,5 @@ install_data('go-up.png', 'go-down.png', 'sky_04.jpg', 'effects.png', 'info.png', 'clo.png', 'bolt.png', 'menu.png', 'lovethisdogharvey.png', 'application.png', - 'e.png', 'border.png', + 'e.png', 'border.png', 'freebsd.png', install_dir: join_paths(dir_data, 'evisum/images')) diff --git a/src/bin/system/process.c b/src/bin/system/process.c index f94152f..6054b40 100644 --- a/src/bin/system/process.c +++ b/src/bin/system/process.c @@ -365,6 +365,8 @@ _process_list_linux_get(void) p->nice = st.nice; p->priority = st.pri; p->numthreads = st.numthreads; + if (st->flags & PF_KTHREAD) + p->is_kernel = 1; _mem_size(p); _cmd_args(p, st.name, sizeof(st.name)); @@ -925,6 +927,7 @@ _proc_thread_info(struct kinfo_proc *kp, Eina_Bool is_thread) p->tid = kp->ki_tid; p->thread_name = strdup(kp->ki_tdname); + if (kp->ki_flag & P_KPROC) p->is_kernel = 1; return p; } diff --git a/src/bin/system/process.h b/src/bin/system/process.h index 83da6ae..0d39879 100644 --- a/src/bin/system/process.h +++ b/src/bin/system/process.h @@ -31,6 +31,7 @@ typedef struct _Proc_Info char *arguments; const char *state; + short is_kernel; int tid; char *thread_name; diff --git a/src/bin/ui/ui_process_list.c b/src/bin/ui/ui_process_list.c index e50fdd5..e93e5ab 100644 --- a/src/bin/ui/ui_process_list.c +++ b/src/bin/ui/ui_process_list.c @@ -450,6 +450,11 @@ _content_get(void *data, Evas_Object *obj, const char *source) struct passwd *pwd_entry; Evas_Object *l, *r, *o, *hbx, *pb; Evas_Coord w, ow; +#if defined(__linux__) + const char *kernel_icon = "linux"; +#else + const char *kernel_icon = "freebsd"; +#endif Ui_Data *pd = _private_data; proc = (void *) data; @@ -516,7 +521,10 @@ _content_get(void *data, Evas_Object *obj, const char *source) evas_object_show(l); o = evas_object_data_get(it->obj, "icon"); - elm_icon_standard_set(o, evisum_icon_path_get(evisum_icon_cache_find(proc->command))); + if (proc->is_kernel) + elm_icon_standard_set(o, evisum_icon_path_get(kernel_icon)); + else + elm_icon_standard_set(o, evisum_icon_path_get(evisum_icon_cache_find(proc->command))); r = evas_object_data_get(o, "rect"); evas_object_size_hint_min_set(r, w, 1); evas_object_show(o);