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.

Reply via email to