void layoutmenu(const Arg *arg) { FILE *p; char c[3], *s; int i; if (!(p = popen(layoutmenu_cmd, "r"))) return; s = fgets(c, sizeof(c), p); pclose(p); if (!s || *s == '\0' || c[0] == '\0') return; i = atoi(c); setlayout(&((Arg) { .v = &layouts[i] })); }