From 977a8df56b3dd69e1df9b36df3a8596f4a6ef7d8 Mon Sep 17 00:00:00 2001 From: Akos Horvath Date: Wed, 5 Jul 2023 22:36:25 +0200 Subject: [PATCH] read config file, early return in wm_layout when there are no clients --- src/wm.c | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/src/wm.c b/src/wm.c index d681ae1..8dddb1a 100644 --- a/src/wm.c +++ b/src/wm.c @@ -386,6 +386,8 @@ void wm_layout(Wm *wm, Monitor *m) Workspace *ws = &m->workspaces[m->selws]; PtrArray clients = wm_treenode_find_client_nodes_ptr(&ws->tree); + if (clients.size == 0) + goto ret; for (i = 0; i < clients.size; i++) { TreeNode *node = clients.ptrs[i]; @@ -403,13 +405,15 @@ void wm_layout(Wm *wm, Monitor *m) wm_client_show(wm, client); } - wm_client_focus(wm, clients.ptrs[i]); + wm_client_focus(wm, ((TreeNode*)clients.ptrs[0])->client); XEvent e; XSync(wm->display, False); while(XCheckMaskEvent(wm->display, EnterWindowMask, &e)); wm_monitor_clients_border(wm, m); + +ret: wm_ptrarray_free(&clients); } @@ -526,6 +530,18 @@ void wm_init(Wm *wm) signal(SIGINT, wm_sigint_handler); + wm->config = (Config) {0}; + wm_cfg_init_def(&wm->config); + + char path[PATH_MAX] = {0}; + const char* file = "/.config/wm.conf"; + strncat(path, getenv("HOME"), PATH_MAX - 1); + strncat(path, file, (PATH_MAX - strlen(file)) - 1); + + ConfigFile configfile = {0}; + wm_configfile_init(&configfile, path); + wm_configfile_read(&configfile, &wm->config); + DEBUG_PRINT("wm_init\n") DEBUG_PRINT("pid: %ld\n", ((long)getpid())) d = wm_connect_display(); @@ -555,8 +571,6 @@ void wm_init(Wm *wm) // XUngrabKey(wm->display, AnyKey, AnyModifier, root.window); - wm->config = (Config) {0}; - wm_cfg_init_def(&wm->config); wm_grab_keys(wm); //XSetErrorHandler(&wm_other_wm_handler); @@ -574,6 +588,8 @@ void wm_init(Wm *wm) wm->running = true; wm_mainloop(wm); + + wm_configfile_free(&configfile); wm_exit(wm); }