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: