read config file, early return in wm_layout when there are no clients

This commit is contained in:
2023-07-05 22:36:25 +02:00
parent c85bbd8f09
commit 977a8df56b

@ -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);
}