mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-06-24 13:36:42 -04:00
feat: add tag names
this feature adds optional tag names in mango config, specified using the name key. if name is not specified, the default arabic numerals are used.
This commit is contained in:
parent
8216cacb3b
commit
ced800910d
3 changed files with 20 additions and 3 deletions
|
|
@ -160,6 +160,7 @@ typedef struct {
|
|||
|
||||
typedef struct {
|
||||
int32_t id;
|
||||
char *name;
|
||||
char *layout_name;
|
||||
char *monitor_name;
|
||||
char *monitor_make;
|
||||
|
|
@ -2183,6 +2184,7 @@ bool parse_option(Config *config, char *key, char *value) {
|
|||
|
||||
// 设置默认值
|
||||
rule->id = 0;
|
||||
rule->name = NULL;
|
||||
rule->layout_name = NULL;
|
||||
rule->monitor_name = NULL;
|
||||
rule->monitor_make = NULL;
|
||||
|
|
@ -2211,6 +2213,8 @@ bool parse_option(Config *config, char *key, char *value) {
|
|||
|
||||
if (strcmp(key, "id") == 0) {
|
||||
rule->id = CLAMP_INT(atoi(val), 0, LENGTH(tags));
|
||||
} else if (strcmp(key, "name") == 0) {
|
||||
rule->name = strdup(val);
|
||||
} else if (strcmp(key, "layout_name") == 0) {
|
||||
rule->layout_name = strdup(val);
|
||||
} else if (strcmp(key, "monitor_name") == 0) {
|
||||
|
|
@ -3300,6 +3304,8 @@ void free_config(void) {
|
|||
// 释放 tag_rules
|
||||
if (config.tag_rules) {
|
||||
for (int32_t i = 0; i < config.tag_rules_count; i++) {
|
||||
if (config.tag_rules[i].name)
|
||||
free((void *)config.tag_rules[i].name);
|
||||
if (config.tag_rules[i].layout_name)
|
||||
free((void *)config.tag_rules[i].layout_name);
|
||||
if (config.tag_rules[i].monitor_name)
|
||||
|
|
@ -4302,3 +4308,13 @@ int32_t reload_config(const Arg *arg) {
|
|||
printstatus(IPC_WATCH_ARRANGGE);
|
||||
return 1;
|
||||
}
|
||||
|
||||
static const char *get_tag_name(int tag_index) {
|
||||
for (int i = 0; i < config.tag_rules_count; i++) {
|
||||
if (config.tag_rules[i].id == tag_index && config.tag_rules[i].name)
|
||||
return config.tag_rules[i].name;
|
||||
}
|
||||
if (tag_index >= 1 && tag_index <= (int)LENGTH(tags))
|
||||
return tags[tag_index - 1];
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -100,9 +100,9 @@ static void handle_ext_commit(struct wl_listener *listener, void *data) {
|
|||
}
|
||||
|
||||
static const char *get_name_from_tag(uint32_t tag) {
|
||||
static const char *names[] = {"overview", "1", "2", "3", "4",
|
||||
"5", "6", "7", "8", "9"};
|
||||
return (tag < sizeof(names) / sizeof(names[0])) ? names[tag] : NULL;
|
||||
if (tag == 0)
|
||||
return "overview";
|
||||
return get_tag_name((int)tag);
|
||||
}
|
||||
|
||||
void destroy_workspace(struct workspace *workspace) {
|
||||
|
|
|
|||
|
|
@ -99,6 +99,7 @@ static cJSON *build_tags_json(Monitor *m) {
|
|||
}
|
||||
cJSON *tag_obj = cJSON_CreateObject();
|
||||
cJSON_AddNumberToObject(tag_obj, "index", tag);
|
||||
cJSON_AddStringToObject(tag_obj, "name", get_tag_name(tag));
|
||||
cJSON_AddBoolToObject(tag_obj, "is_active", is_active);
|
||||
cJSON_AddBoolToObject(tag_obj, "is_urgent", is_urgent);
|
||||
cJSON_AddStringToObject(tag_obj, "layout",
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue