This is an automated email from the git hooks/post-receive script.
git pushed a commit to branch master
in repository evisum.
View the commit online.
commit df294b0f540f63b49782f127d9b141b3c0372673
Author: Alastair Poole <[email protected]>
AuthorDate: Thu May 7 19:28:10 2026 +0100
engine: Set enigmatic daemon policy from evisum.
---
NEWS | 7 ++++
VERSION | 2 +-
meson.build | 2 +-
src/bin/engine/evisum_engine.c | 64 ++++++++++++++++++++++++++++++++++++
src/bin/engine/evisum_engine.h | 4 +++
src/bin/enigmatic/Events.h | 3 +-
src/bin/enigmatic/enigmatic_config.c | 2 ++
src/bin/enigmatic/enigmatic_config.h | 4 ++-
src/bin/enigmatic/enigmatic_main.c | 18 ++++++----
src/bin/enigmatic/enigmatic_server.c | 5 +++
src/bin/evisum_config.h | 2 +-
src/bin/ui/evisum_ui.c | 21 +++++++-----
12 files changed, 114 insertions(+), 20 deletions(-)
diff --git a/NEWS b/NEWS
index 0c8d323..2d832fe 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,10 @@
+============
+Evisum 2.0.6
+============
+
+ * Control enigmatic polling via evisum UI.
+ * Add additional helpers to engine.
+
============
Evisum 2.0.5
============
diff --git a/VERSION b/VERSION
index e010258..157e54f 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-2.0.5
+2.0.6
diff --git a/meson.build b/meson.build
index 72c831c..b9a09ce 100644
--- a/meson.build
+++ b/meson.build
@@ -1,6 +1,6 @@
##### Project
project('evisum', 'c',
- version : '2.0.5',
+ version : '2.0.6',
meson_version : '>= 0.56.0')
efl_version = '>= 1.27.0'
diff --git a/src/bin/engine/evisum_engine.c b/src/bin/engine/evisum_engine.c
index e7b906e..cc61216 100644
--- a/src/bin/engine/evisum_engine.c
+++ b/src/bin/engine/evisum_engine.c
@@ -1601,3 +1601,67 @@ file_system_in_use(const char *name)
return mounted;
}
+
+static char *
+_evisum_engine_exe_response(const char *command)
+{
+ FILE *p;
+ char buf[8192];
+ Eina_Strbuf *lines;
+ char *out;
+ ssize_t len;
+
+ p = popen(command, "r");
+ if (!p) return NULL;
+
+ lines = eina_strbuf_new();
+
+ while ((fgets(buf, sizeof(buf), p)) != NULL)
+ eina_strbuf_append(lines, buf);
+
+ pclose(p);
+
+ len = eina_strbuf_length_get(lines);
+ eina_strbuf_remove(lines, len -1, len);
+
+ out = strdup(eina_strbuf_string_get(lines));
+
+ eina_strbuf_free(lines);
+
+ return out;
+}
+
+Eina_Bool
+evisum_engine_interval_set(Interval interval)
+{
+ Eina_Bool success = EINA_FALSE;
+ Eina_Strbuf *buf = eina_strbuf_new();
+
+ eina_strbuf_append(buf, "enigmatic ");
+ switch (interval)
+ {
+ case INTERVAL_NORMAL:
+ eina_strbuf_append_printf(buf, "--interval-normal");
+ break;
+ case INTERVAL_FAST:
+ eina_strbuf_append_printf(buf, "--interval-fast");
+ break;
+ case INTERVAL_MEDIUM:
+ eina_strbuf_append_printf(buf, "--interval-medium");
+ break;
+ case INTERVAL_SLOW:
+ eina_strbuf_append_printf(buf, "--interval-slow");;
+ break;
+ }
+
+ char *out = _evisum_engine_exe_response(eina_strbuf_string_get(buf));
+ if (out)
+ {
+ if (!strcmp(out, "OK"))
+ success = EINA_TRUE;
+ free(out);
+ }
+ eina_strbuf_free(buf);
+
+ return success;
+}
diff --git a/src/bin/engine/evisum_engine.h b/src/bin/engine/evisum_engine.h
index 7eb48b9..b79dc2f 100644
--- a/src/bin/engine/evisum_engine.h
+++ b/src/bin/engine/evisum_engine.h
@@ -9,6 +9,7 @@
#include "enigmatic/system/machine.h"
#include "enigmatic/system/file_systems.h"
#include "enigmatic/system/process.h"
+#include "enigmatic/Events.h"
typedef struct {
pid_t pid;
@@ -40,6 +41,9 @@ Eina_Bool evisum_engine_update_wait(uint64_t *seq);
/* Checks whether the background engine service is running. */
Eina_Bool evisum_engine_daemon_running_get(void);
+/* Set the update interval of the background engine. */
+Eina_Bool evisum_engine_interval_set(Interval interval);
+
/* Gets the process id of the background engine service. */
pid_t evisum_engine_daemon_pid_get(void);
diff --git a/src/bin/enigmatic/Events.h b/src/bin/enigmatic/Events.h
index 5d4a203..4451183 100644
--- a/src/bin/enigmatic/Events.h
+++ b/src/bin/enigmatic/Events.h
@@ -83,8 +83,9 @@ typedef enum
typedef enum
{
INTERVAL_NORMAL = 1,
+ INTERVAL_FAST = 2,
INTERVAL_MEDIUM = 3,
- INTERVAL_SLOW = 5,
+ INTERVAL_SLOW = 4,
} Interval;
typedef enum
diff --git a/src/bin/enigmatic/enigmatic_config.c b/src/bin/enigmatic/enigmatic_config.c
index e8d0b2a..06bfd38 100644
--- a/src/bin/enigmatic/enigmatic_config.c
+++ b/src/bin/enigmatic/enigmatic_config.c
@@ -41,6 +41,7 @@ enigmatic_config_init(void)
EET_DATA_DESCRIPTOR_ADD_BASIC(_enigmatic_conf_desc, Enigmatic_Config, "log.save_history", log.save_history, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(_enigmatic_conf_desc, Enigmatic_Config, "log.rotate_every_hour", log.rotate_every_hour, EET_T_UCHAR);
EET_DATA_DESCRIPTOR_ADD_BASIC(_enigmatic_conf_desc, Enigmatic_Config, "log.rotate_every_minute", log.rotate_every_minute, EET_T_UCHAR);
+ EET_DATA_DESCRIPTOR_ADD_BASIC(_enigmatic_conf_desc, Enigmatic_Config, "interval", interval, EET_T_INT);
}
void
@@ -59,6 +60,7 @@ _config_defaults(void)
config->log.save_history = 1;
config->log.rotate_every_minute = 0;
config->log.rotate_every_hour = 1;
+ config->interval = INTERVAL_NORMAL;
return config;
}
diff --git a/src/bin/enigmatic/enigmatic_config.h b/src/bin/enigmatic/enigmatic_config.h
index 8a0dff0..e771f4e 100644
--- a/src/bin/enigmatic/enigmatic_config.h
+++ b/src/bin/enigmatic/enigmatic_config.h
@@ -1,8 +1,9 @@
#ifndef ENIGMATIC_CONFIG_H
#define ENIGMATIC_CONFIG_H
+#include "Events.h"
#define ENIGMATIC_CONFIG_VERSION_MAJOR 0x0001
-#define ENIGMATIC_CONFIG_VERSION_MINOR 0x0003
+#define ENIGMATIC_CONFIG_VERSION_MINOR 0x0004
#define ENIGMATIC_CONFIG_VERSION ((ENIGMATIC_CONFIG_VERSION_MAJOR << 16) | ENIGMATIC_CONFIG_VERSION_MINOR)
@@ -15,6 +16,7 @@ typedef struct _Enigmatic_Config
Eina_Bool rotate_every_hour;
Eina_Bool save_history;
} log;
+ Interval interval;
} Enigmatic_Config;
void
diff --git a/src/bin/enigmatic/enigmatic_main.c b/src/bin/enigmatic/enigmatic_main.c
index 734f544..610aa19 100644
--- a/src/bin/enigmatic/enigmatic_main.c
+++ b/src/bin/enigmatic/enigmatic_main.c
@@ -97,7 +97,10 @@ enigmatic_system_monitor(void *data, Ecore_Thread *thread)
eina_lock_take(&enigmatic->update_lock);
if (enigmatic->interval != enigmatic->interval_update)
- enigmatic->interval = enigmatic->interval_update;
+ {
+ enigmatic->config->interval = enigmatic->interval = enigmatic->interval_update;
+ enigmatic_config_save(enigmatic->config);
+ }
eina_lock_release(&enigmatic->update_lock);
}
@@ -133,14 +136,14 @@ enigmatic_init(Enigmatic *enigmatic)
enigmatic->pid = getpid();
enigmatic_pidfile_create(enigmatic);
- enigmatic->device_refresh_interval = 900 * 10;
- enigmatic->log.hour = -1;
- enigmatic->interval = enigmatic->interval_update = INTERVAL_NORMAL;
- enigmatic->broadcast = 1;
-
enigmatic_config_init();
enigmatic->config = enigmatic_config_load();
+ enigmatic->device_refresh_interval = 900 * 10;
+ enigmatic->log.hour = -1;
+ enigmatic->interval = enigmatic->interval_update = enigmatic->config->interval;
+ enigmatic->broadcast = 1;
+
enigmatic_server_init(enigmatic);
enigmatic_log_open(enigmatic);
@@ -187,6 +190,7 @@ usage(void)
" -s Stop enigmatic daemon.\n"
" -p Ping enigmatic daemon.\n"
" --interval-normal Set enigmatic daemon poll interval (normal).\n"
+ " --interval-fast Set enigmatic daemon poll interval (fast).\n"
" --interval-medium Set enigmatic daemon poll interval (medium).\n"
" --interval-slow Set enigmatic daemon poll interval (slow).\n"
" -v | --version Enigmatic version.\n"
@@ -207,6 +211,8 @@ int main(int argc, char **argv)
exit(!enigmatic_query_send("PING"));
else if (!strcmp(argv[i], "--interval-normal"))
exit(!enigmatic_query_send("interval-normal"));
+ else if (!strcmp(argv[i], "--interval-fast"))
+ exit(!enigmatic_query_send("interval-fast"));
else if (!strcmp(argv[i], "--interval-medium"))
exit(!enigmatic_query_send("interval-medium"));
else if (!strcmp(argv[i], "--interval-slow"))
diff --git a/src/bin/enigmatic/enigmatic_server.c b/src/bin/enigmatic/enigmatic_server.c
index 4e5add9..307f6b0 100644
--- a/src/bin/enigmatic/enigmatic_server.c
+++ b/src/bin/enigmatic/enigmatic_server.c
@@ -33,6 +33,11 @@ _enigmatic_server_client_data_cb(void *data, int type, void *event)
contentious_update = 1;
interval = INTERVAL_MEDIUM;
}
+ else if (!strcmp(msg, "interval-fast"))
+ {
+ contentious_update = 1;
+ interval = INTERVAL_FAST;
+ }
else if (!strcmp(msg, "interval-normal"))
{
contentious_update = 1;
diff --git a/src/bin/evisum_config.h b/src/bin/evisum_config.h
index 12b6abb..58e9b3e 100644
--- a/src/bin/evisum_config.h
+++ b/src/bin/evisum_config.h
@@ -3,7 +3,7 @@
#include "ui/evisum_ui.h"
-#define CONFIG_VERSION 0x001F
+#define CONFIG_VERSION 0x0020
typedef struct _Evisum_Config {
int version;
diff --git a/src/bin/ui/evisum_ui.c b/src/bin/ui/evisum_ui.c
index 2ba4af7..b0bbc00 100644
--- a/src/bin/ui/evisum_ui.c
+++ b/src/bin/ui/evisum_ui.c
@@ -3,6 +3,7 @@
#include "evisum_config.h"
#include "evisum_server.h"
+#include "../enigmatic/Events.h"
#include "../engine/evisum_engine.h"
#include "background/evisum_background.h"
@@ -167,9 +168,9 @@ evisum_ui_config_load(Evisum_Ui *ui) {
ui->proc.show_user = config()->proc.show_user;
ui->proc.show_self = config()->proc.show_self;
ui->proc.poll_delay = config()->proc.poll_delay;
- if (ui->proc.poll_delay < 1) ui->proc.poll_delay = 1;
- else if (ui->proc.poll_delay > 10)
- ui->proc.poll_delay = 10;
+ if (ui->proc.poll_delay < 1) ui->proc.poll_delay = INTERVAL_NORMAL;
+ else if (ui->proc.poll_delay > INTERVAL_SLOW)
+ ui->proc.poll_delay = INTERVAL_SLOW;
ui->proc.show_statusbar = config()->proc.show_statusbar;
ui->proc.history_whole = config()->proc.history_whole;
ui->proc.transparent = config()->proc.transparent;
@@ -370,9 +371,11 @@ _main_menu_slider_poll_delay_changed_cb(void *data EINA_UNUSED, Evas_Object *obj
Evisum_Ui *ui = data;
ui->proc.poll_delay = elm_slider_value_get(obj) + 0.5;
- if (ui->proc.poll_delay < 1) ui->proc.poll_delay = 1;
- else if (ui->proc.poll_delay > 10)
- ui->proc.poll_delay = 10;
+ if (ui->proc.poll_delay < 1) ui->proc.poll_delay = INTERVAL_NORMAL;
+ else if (ui->proc.poll_delay > INTERVAL_SLOW)
+ ui->proc.poll_delay = INTERVAL_SLOW;
+
+ evisum_engine_interval_set(ui->proc.poll_delay);
evisum_ui_config_save(ui);
}
@@ -618,12 +621,12 @@ evisum_ui_main_menu_create(Evisum_Ui *ui, Evas_Object *parent, Evas_Object *obj)
_slider_poll_delay = sli = elm_slider_add(o);
evas_object_size_hint_weight_set(sli, EXPAND, EXPAND);
- elm_slider_min_max_set(sli, 1.0, 10.0);
+ elm_slider_min_max_set(sli, (double) INTERVAL_NORMAL, (double) INTERVAL_SLOW);
elm_slider_span_size_set(sli, 100.0);
- elm_slider_step_set(sli, 1 / 9.0);
+ elm_slider_step_set(sli, 1 / 4.0);
elm_slider_unit_format_set(sli, _("%1.0f s"));
elm_slider_indicator_visible_mode_set(sli, ELM_SLIDER_INDICATOR_VISIBLE_MODE_NONE);
- elm_object_tooltip_text_set(sli, _("Delay in seconds"));
+ elm_object_tooltip_text_set(sli, _("Enigmatic Update Interval"));
elm_slider_value_set(sli, ui->proc.poll_delay);
evas_object_size_hint_align_set(sli, FILL, FILL);
evas_object_smart_callback_add(sli, "slider,drag,stop", _main_menu_slider_poll_delay_changed_cb, ui);
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.