ipc: add output modes
This commit is contained in:
parent
3035db74df
commit
4ab5506064
|
@ -78,6 +78,20 @@ static void ipc_json_describe_output(swayc_t *container, json_object *object) {
|
||||||
json_object_new_string(ipc_json_get_output_transform(wlr_output->transform)));
|
json_object_new_string(ipc_json_get_output_transform(wlr_output->transform)));
|
||||||
// TODO WLR need to set "current_workspace" to the currently focused
|
// TODO WLR need to set "current_workspace" to the currently focused
|
||||||
// workspace in a way that makes sense with multiseat
|
// workspace in a way that makes sense with multiseat
|
||||||
|
|
||||||
|
json_object *modes_array = json_object_new_array();
|
||||||
|
struct wlr_output_mode *mode;
|
||||||
|
wl_list_for_each(mode, &wlr_output->modes, link) {
|
||||||
|
json_object *mode_object = json_object_new_object();
|
||||||
|
json_object_object_add(mode_object, "width",
|
||||||
|
json_object_new_int(mode->width));
|
||||||
|
json_object_object_add(mode_object, "height",
|
||||||
|
json_object_new_int(mode->height));
|
||||||
|
json_object_object_add(mode_object, "refresh",
|
||||||
|
json_object_new_int(mode->refresh));
|
||||||
|
json_object_array_add(modes_array, mode_object);
|
||||||
|
}
|
||||||
|
json_object_object_add(object, "modes", modes_array);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void ipc_json_describe_workspace(swayc_t *workspace, json_object *object) {
|
static void ipc_json_describe_workspace(swayc_t *workspace, json_object *object) {
|
||||||
|
|
|
@ -125,13 +125,16 @@ static void pretty_print_output(json_object *o) {
|
||||||
json_object_object_get_ex(rect, "y", &y);
|
json_object_object_get_ex(rect, "y", &y);
|
||||||
json_object_object_get_ex(rect, "width", &width);
|
json_object_object_get_ex(rect, "width", &width);
|
||||||
json_object_object_get_ex(rect, "height", &height);
|
json_object_object_get_ex(rect, "height", &height);
|
||||||
|
json_object *modes;
|
||||||
|
json_object_object_get_ex(o, "modes", &modes);
|
||||||
|
|
||||||
printf(
|
printf(
|
||||||
"Output %s '%s %s %s'%s%s\n"
|
"Output %s '%s %s %s'%s%s\n"
|
||||||
" Mode: %dx%d @ %f Hz\n"
|
" Current mode: %dx%d @ %f Hz\n"
|
||||||
" Position: %d,%d\n"
|
" Position: %d,%d\n"
|
||||||
" Scale factor: %dx\n"
|
" Scale factor: %dx\n"
|
||||||
" Transform: %s\n"
|
" Transform: %s\n"
|
||||||
" Workspace: %s\n\n",
|
" Workspace: %s\n",
|
||||||
json_object_get_string(name),
|
json_object_get_string(name),
|
||||||
json_object_get_string(make),
|
json_object_get_string(make),
|
||||||
json_object_get_string(model),
|
json_object_get_string(model),
|
||||||
|
@ -145,6 +148,25 @@ static void pretty_print_output(json_object *o) {
|
||||||
json_object_get_string(transform),
|
json_object_get_string(transform),
|
||||||
json_object_get_string(ws)
|
json_object_get_string(ws)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
size_t modes_len = json_object_array_length(modes);
|
||||||
|
if (modes_len > 0) {
|
||||||
|
printf(" Available modes:\n");
|
||||||
|
for (size_t i = 0; i < modes_len; ++i) {
|
||||||
|
json_object *mode = json_object_array_get_idx(modes, i);
|
||||||
|
|
||||||
|
json_object *mode_width, *mode_height, *mode_refresh;
|
||||||
|
json_object_object_get_ex(mode, "width", &mode_width);
|
||||||
|
json_object_object_get_ex(mode, "height", &mode_height);
|
||||||
|
json_object_object_get_ex(mode, "refresh", &mode_refresh);
|
||||||
|
|
||||||
|
printf(" %dx%d @ %f Hz\n", json_object_get_int(mode_width),
|
||||||
|
json_object_get_int(mode_height),
|
||||||
|
(float)json_object_get_int(mode_refresh) / 1000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
static void pretty_print_version(json_object *v) {
|
static void pretty_print_version(json_object *v) {
|
||||||
|
|
Loading…
Reference in a new issue