fix wathc all-monitors not show in first run

This commit is contained in:
DreamMaoMao 2026-05-24 16:30:16 +08:00
parent 42fb79fc06
commit f53392da54

View file

@ -529,6 +529,36 @@ static bool handle_watch_command(int fd, const char *cmd,
}
break;
}
case IPC_WATCH_ALL_MONITORS: {
cJSON *arr = cJSON_CreateArray();
Monitor *m;
wl_list_for_each(m, &mons, link) {
cJSON *mobj = cJSON_CreateObject();
cJSON_AddStringToObject(mobj, "name", m->wlr_output->name);
cJSON_AddBoolToObject(mobj, "active", m == selmon);
cJSON_AddNumberToObject(mobj, "x", m->m.x);
cJSON_AddNumberToObject(mobj, "y", m->m.y);
cJSON_AddNumberToObject(mobj, "width", m->w.width);
cJSON_AddNumberToObject(mobj, "height", m->w.height);
cJSON_AddNumberToObject(mobj, "scale", m->wlr_output->scale);
cJSON_AddNumberToObject(mobj, "layout_index",
m->pertag->ltidxs[m->pertag->curtag]->id);
cJSON_AddStringToObject(
mobj, "layout_symbol",
m->pertag->ltidxs[m->pertag->curtag]->symbol);
cJSON_AddStringToObject(mobj, "last_surface_ws_name",
m->last_surface_ws_name);
cJSON_AddItemToObject(mobj, "tags", build_tags_json(m));
cJSON_AddItemToObject(mobj, "active_tags", monitor_active_tags(m));
cJSON_AddItemToArray(arr, mobj);
}
cJSON *json = cJSON_CreateObject();
cJSON_AddItemToObject(json, "monitors", arr);
ipc_notify_json_to_fd(fd, json);
cJSON_Delete(json);
break;
}
case IPC_WATCH_ALL_TAGS: {
cJSON *arr = cJSON_CreateArray();
Monitor *m;