fix: default mfact is 0,feat:tag rule and change tty

This commit is contained in:
DreamMaoMao 2025-02-17 10:24:29 +08:00
parent 625b793f17
commit 8b4932fd79
4 changed files with 158 additions and 134 deletions

View file

@ -100,7 +100,7 @@ typedef struct {
struct {
int id;
char name[256];
char layout_name[256];
} tags[9];
ConfigWinRule *window_rules;
@ -194,6 +194,30 @@ uint32_t parse_mod(const char *mod_str) {
}
xkb_keysym_t parse_keysym(const char *keysym_str) {
if (strcmp(keysym_str, "F1") == 0 || strcmp(keysym_str, "f1") == 0)
return XKB_KEY_XF86Switch_VT_1;
else if (strcmp(keysym_str, "F2") == 0 || strcmp(keysym_str, "f2") == 0)
return XKB_KEY_XF86Switch_VT_2;
else if (strcmp(keysym_str, "F3") == 0 || strcmp(keysym_str, "f3") == 0)
return XKB_KEY_XF86Switch_VT_3;
else if (strcmp(keysym_str, "F4") == 0 || strcmp(keysym_str, "f4") == 0)
return XKB_KEY_XF86Switch_VT_4;
else if (strcmp(keysym_str, "F5") == 0 || strcmp(keysym_str, "f5") == 0)
return XKB_KEY_XF86Switch_VT_5;
else if (strcmp(keysym_str, "F6") == 0 || strcmp(keysym_str, "f6") == 0)
return XKB_KEY_XF86Switch_VT_6;
else if (strcmp(keysym_str, "F7") == 0 || strcmp(keysym_str, "f7") == 0)
return XKB_KEY_XF86Switch_VT_7;
else if (strcmp(keysym_str, "F8") == 0 || strcmp(keysym_str, "f8") == 0)
return XKB_KEY_XF86Switch_VT_8;
else if (strcmp(keysym_str, "F9") == 0 || strcmp(keysym_str, "f9") == 0)
return XKB_KEY_XF86Switch_VT_9;
else if (strcmp(keysym_str, "F10") == 0 || strcmp(keysym_str, "f10") == 0)
return XKB_KEY_XF86Switch_VT_10;
else if (strcmp(keysym_str, "F11") == 0 || strcmp(keysym_str, "f11") == 0)
return XKB_KEY_XF86Switch_VT_11;
else if (strcmp(keysym_str, "F12") == 0 || strcmp(keysym_str, "f12") == 0)
return XKB_KEY_XF86Switch_VT_12;
return xkb_keysym_from_name(keysym_str, XKB_KEYSYM_NO_FLAGS);
}
@ -333,7 +357,7 @@ FuncType parse_func_name(char *func_name,Arg *arg, char *arg_value) {
func = togglegaps;
} else if (strcmp(func_name, "chvt") == 0) {
func = chvt;
(*arg).i = atoi(arg_value);
(*arg).ui = atoi(arg_value);
} else if (strcmp(func_name, "spawn") == 0) {
func = spawn;
(*arg).v = strdup(arg_value);
@ -494,11 +518,11 @@ void parse_config_line(Config *config, const char *line) {
}
} else if (strcmp(key, "tags") == 0) {
int id;
char name[256];
if (sscanf(value, "id:%d,name:%255[^\n]", &id, name) == 2) {
char layout_name[256];
if (sscanf(value, "id:%d,layout_name:%255[^\n]", &id, layout_name) == 2) {
if (id >= 1 && id <= 9) {
config->tags[id - 1].id = id;
strncpy(config->tags[id - 1].name, name, sizeof(config->tags[id - 1].name));
strncpy(config->tags[id - 1].layout_name, layout_name, sizeof(config->tags[id - 1].layout_name));
} else {
fprintf(stderr, "Error: Invalid tag id: %d\n", id);
}