[PATCH] wmaker: filter inotify events only to expected config files

5 views
Skip to first unread message

david.m...@gmail.com

unread,
Mar 4, 2026, 4:40:12 PM (13 days ago) Mar 4
to Window Maker Development
This patch is checking if the notification wmaker is receiving
from the Defaults directory is coming from a proper expected config file.
Until now, using vim for example to open any of the files,
for example WMRootMenu would reload the configs, even before saving
the file.
You would see in the logs:
warning: Inotify: Reading config files in defaults database.

because vim by default is creating a .swp file in that same directory.
---
 src/event.c | 26 ++++++++++++++++++++++----
 1 file changed, 22 insertions(+), 4 deletions(-)

diff --git a/src/event.c b/src/event.c
index d23cbe3f..a541a962 100644
--- a/src/event.c
+++ b/src/event.c
@@ -357,10 +357,28 @@ static void handle_inotify_events(void)
 
  wPreferences.flags.noupdates = 1;
  }
- if ((pevent->mask & IN_MODIFY) && oneShotFlag == 0) {
- wwarning(_("Inotify: Reading config files in defaults database."));
- wDefaultsCheckDomains(NULL);
- oneShotFlag = 1;
+ /* Only react when a known config file inside the Defaults directory is affected */
+ if (pevent->len > 0) {
+ char *fname = pevent->name;
+ const char *allowed[] = { "WMRootMenu", "WMWindowAttributes",
+   "WindowMaker", "WMState", "WMGLOBAL", NULL };
+ int i, matched = 0;
+
+ for (i = 0; allowed[i]; i++) {
+ if (strcmp(fname, allowed[i]) == 0) {
+ matched = 1;
+ break;
+ }
+ }
+
+ if (matched) {
+ /* react to events that indicate a file was created/moved/written */
+ if ((pevent->mask & (IN_MODIFY | IN_CLOSE_WRITE | IN_MOVED_TO | IN_CREATE)) && oneShotFlag == 0) {
+ wwarning(_("Inotify: Reading config files in defaults database."));
+ wDefaultsCheckDomains(NULL);
+ oneShotFlag = 1;
+ }
+ }
  }
 
  /* move to next event in the buffer */
--
2.43.0
0001-wmaker-filter-inotify-events-only-to-expected-config.patch
Reply all
Reply to author
Forward
0 new messages