diff --git a/protocols/dwl-ipc-unstable-v2.xml b/protocols/dwl-ipc-unstable-v2.xml index 2ec2be7..501a7c4 100644 --- a/protocols/dwl-ipc-unstable-v2.xml +++ b/protocols/dwl-ipc-unstable-v2.xml @@ -227,6 +227,13 @@ I would probably just submit raphi's patchset but I don't think that would be po + + + current keyboard layout. + + + + diff --git a/src/ext-protocol/dwl-ipc.h b/src/ext-protocol/dwl-ipc.h index dc7dc24..c5747ea 100644 --- a/src/ext-protocol/dwl-ipc.h +++ b/src/ext-protocol/dwl-ipc.h @@ -110,8 +110,9 @@ void dwl_ipc_output_printstatus(Monitor *monitor) { void dwl_ipc_output_printstatus_to(DwlIpcOutput *ipc_output) { Monitor *monitor = ipc_output->mon; Client *c, *focused; + struct wlr_keyboard *keyboard; int tagmask, state, numclients, focused_client, tag; - const char *title, *appid, *symbol; + const char *title, *appid, *symbol, *kb_layout; focused = focustop(monitor); zdwl_ipc_output_v2_send_active(ipc_output->resource, monitor == selmon); @@ -139,6 +140,10 @@ void dwl_ipc_output_printstatus_to(DwlIpcOutput *ipc_output) { appid = focused ? client_get_appid(focused) : ""; symbol = monitor->pertag->ltidxs[monitor->pertag->curtag]->symbol; + keyboard = &kb_group->wlr_group->keyboard; + kb_layout = + get_layout_abbr(xkb_keymap_layout_get_name(keyboard->keymap, 0)); + zdwl_ipc_output_v2_send_layout( ipc_output->resource, monitor->pertag->ltidxs[monitor->pertag->curtag] - layouts); @@ -180,6 +185,12 @@ void dwl_ipc_output_printstatus_to(DwlIpcOutput *ipc_output) { zdwl_ipc_output_v2_send_last_layer(ipc_output->resource, monitor->last_surface_ws_name); } + + if (wl_resource_get_version(ipc_output->resource) >= + ZDWL_IPC_OUTPUT_V2_KB_LAYOUT_SINCE_VERSION) { + zdwl_ipc_output_v2_send_kb_layout(ipc_output->resource, kb_layout); + } + zdwl_ipc_output_v2_send_frame(ipc_output->resource); }