diff --git a/metadata/expo.xml b/metadata/expo.xml index 2dae7d50e..b71d762ad 100644 --- a/metadata/expo.xml +++ b/metadata/expo.xml @@ -7,7 +7,7 @@ diff --git a/plugins/protocols/wayfire-shell.cpp b/plugins/protocols/wayfire-shell.cpp index 3d47173d0..0a9330604 100644 --- a/plugins/protocols/wayfire-shell.cpp +++ b/plugins/protocols/wayfire-shell.cpp @@ -14,6 +14,7 @@ #include "wayfire/render-manager.hpp" #include "wayfire-shell-unstable-v2-protocol.h" #include "wayfire/signal-definitions.hpp" +#include "plugins/ipc/ipc-activator.hpp" /* ----------------------------- wfs_hotspot -------------------------------- */ static void handle_hotspot_destroy(wl_resource *resource); @@ -196,6 +197,7 @@ static struct zwf_output_v2_interface zwf_output_impl = { */ class wfs_output { + wf::ipc_activator_t toggle_menu{"wayfire-shell/toggle_menu"}; uint32_t num_inhibits = 0; wl_resource *resource; wf::output_t *output; @@ -228,6 +230,17 @@ class wfs_output } }; + wf::ipc_activator_t::handler_t toggle_menu_cb = [=] (wf::output_t *toggle_menu_output, wayfire_view) + { + if (output != toggle_menu_output) + { + return false; + } + + zwf_output_v2_send_toggle_menu(resource); + return true; + }; + public: wfs_output(wf::output_t *output, wl_client *client, int id) { @@ -237,6 +250,7 @@ class wfs_output wl_resource_set_implementation(resource, &zwf_output_impl, this, handle_output_destroy); output->connect(&on_fullscreen_layer_focused); wf::get_core().output_layout->connect(&on_output_removed); + toggle_menu.set_handler(toggle_menu_cb); } ~wfs_output() diff --git a/proto/wayfire-shell-unstable-v2.xml b/proto/wayfire-shell-unstable-v2.xml index 6932d5cf7..247ab4cb4 100644 --- a/proto/wayfire-shell-unstable-v2.xml +++ b/proto/wayfire-shell-unstable-v2.xml @@ -87,6 +87,14 @@ + + + + Tells the menu to open. + + Emitted using an activator binding. + + diff --git a/wayfire.ini b/wayfire.ini index 61598fb2d..9d56a883d 100644 --- a/wayfire.ini +++ b/wayfire.ini @@ -276,7 +276,7 @@ activate = BTN_LEFT # Show an overview of all workspaces. [expo] -toggle = +toggle = KEY_E # Select a workspace. # Workspaces are arranged into a grid of 3 × 3. # The numbering is left to right, line by line. @@ -309,6 +309,10 @@ next_output_with_win = KEY_O [invert] toggle = KEY_I +# Send toggle menu event. +[wayfire-shell] +toggle_menu = + # Rules ──────────────────────────────────────────────────────────────────────── # Example configuration: