Add keybindings for switching VTs
Once mutter is started from weston-launch on its own VT, there is no way to change VT again (for example to actually start an application), because the keyboard is put in raw mode. So introduce some keybindings mimicking the standard X ones (Ctrl+Alt+Fn) that switch the VT manually when activated. https://bugzilla.gnome.org/show_bug.cgi?id=705861
This commit is contained in:
parent
e72f81c24f
commit
e311cef013
@ -319,7 +319,7 @@ xml_DATA = $(xml_in_files:.xml.in=.xml)
|
|||||||
|
|
||||||
dbus_idle_built_sources = meta-dbus-idle-monitor.c meta-dbus-idle-monitor.h
|
dbus_idle_built_sources = meta-dbus-idle-monitor.c meta-dbus-idle-monitor.h
|
||||||
|
|
||||||
gsettings_SCHEMAS = org.gnome.mutter.gschema.xml
|
gsettings_SCHEMAS = org.gnome.mutter.gschema.xml org.gnome.mutter.wayland.gschema.xml
|
||||||
@INTLTOOL_XML_NOMERGE_RULE@
|
@INTLTOOL_XML_NOMERGE_RULE@
|
||||||
@GSETTINGS_RULES@
|
@GSETTINGS_RULES@
|
||||||
|
|
||||||
|
@ -53,8 +53,13 @@
|
|||||||
#include <X11/XKBlib.h>
|
#include <X11/XKBlib.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
#include "meta-wayland-private.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
#define SCHEMA_COMMON_KEYBINDINGS "org.gnome.desktop.wm.keybindings"
|
#define SCHEMA_COMMON_KEYBINDINGS "org.gnome.desktop.wm.keybindings"
|
||||||
#define SCHEMA_MUTTER_KEYBINDINGS "org.gnome.mutter.keybindings"
|
#define SCHEMA_MUTTER_KEYBINDINGS "org.gnome.mutter.keybindings"
|
||||||
|
#define SCHEMA_MUTTER_WAYLAND_KEYBINDINGS "org.gnome.mutter.wayland.keybindings"
|
||||||
|
|
||||||
static gboolean add_builtin_keybinding (MetaDisplay *display,
|
static gboolean add_builtin_keybinding (MetaDisplay *display,
|
||||||
const char *name,
|
const char *name,
|
||||||
@ -4098,6 +4103,40 @@ handle_set_spew_mark (MetaDisplay *display,
|
|||||||
meta_verbose ("-- MARK MARK MARK MARK --\n");
|
meta_verbose ("-- MARK MARK MARK MARK --\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
static void
|
||||||
|
handle_switch_vt (MetaDisplay *display,
|
||||||
|
MetaScreen *screen,
|
||||||
|
MetaWindow *window,
|
||||||
|
XIDeviceEvent *event,
|
||||||
|
MetaKeyBinding *binding,
|
||||||
|
gpointer dummy)
|
||||||
|
{
|
||||||
|
gint vt = binding->handler->data;
|
||||||
|
MetaWaylandCompositor *compositor;
|
||||||
|
MetaLauncher *launcher;
|
||||||
|
|
||||||
|
compositor = meta_wayland_compositor_get_default ();
|
||||||
|
launcher = meta_wayland_compositor_get_launcher (compositor);
|
||||||
|
|
||||||
|
if (launcher)
|
||||||
|
{
|
||||||
|
GError *error;
|
||||||
|
|
||||||
|
error = NULL;
|
||||||
|
if (!meta_launcher_activate_vt (launcher, vt, &error))
|
||||||
|
{
|
||||||
|
g_warning ("Failed to switch VT: %s", error->message);
|
||||||
|
g_error_free (error);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_debug ("Ignoring VT switch keybinding, not running as VT manager");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* meta_keybindings_set_custom_handler:
|
* meta_keybindings_set_custom_handler:
|
||||||
* @name: The name of the keybinding to set
|
* @name: The name of the keybinding to set
|
||||||
@ -4161,6 +4200,7 @@ init_builtin_key_bindings (MetaDisplay *display)
|
|||||||
META_KEY_BINDING_IS_REVERSED)
|
META_KEY_BINDING_IS_REVERSED)
|
||||||
GSettings *common_keybindings = g_settings_new (SCHEMA_COMMON_KEYBINDINGS);
|
GSettings *common_keybindings = g_settings_new (SCHEMA_COMMON_KEYBINDINGS);
|
||||||
GSettings *mutter_keybindings = g_settings_new (SCHEMA_MUTTER_KEYBINDINGS);
|
GSettings *mutter_keybindings = g_settings_new (SCHEMA_MUTTER_KEYBINDINGS);
|
||||||
|
GSettings *mutter_wayland_keybindings = g_settings_new (SCHEMA_MUTTER_WAYLAND_KEYBINDINGS);
|
||||||
|
|
||||||
add_builtin_keybinding (display,
|
add_builtin_keybinding (display,
|
||||||
"switch-to-workspace-1",
|
"switch-to-workspace-1",
|
||||||
@ -4422,6 +4462,60 @@ init_builtin_key_bindings (MetaDisplay *display)
|
|||||||
META_KEYBINDING_ACTION_SET_SPEW_MARK,
|
META_KEYBINDING_ACTION_SET_SPEW_MARK,
|
||||||
handle_set_spew_mark, 0);
|
handle_set_spew_mark, 0);
|
||||||
|
|
||||||
|
#ifdef HAVE_WAYLAND
|
||||||
|
if (meta_is_wayland_compositor ())
|
||||||
|
{
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-1",
|
||||||
|
mutter_wayland_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 1);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-2",
|
||||||
|
mutter_wayland_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 2);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-3",
|
||||||
|
mutter_wayland_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 3);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-4",
|
||||||
|
mutter_wayland_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 4);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-5",
|
||||||
|
mutter_wayland_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 5);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-6",
|
||||||
|
mutter_wayland_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 6);
|
||||||
|
|
||||||
|
add_builtin_keybinding (display,
|
||||||
|
"switch-to-session-7",
|
||||||
|
mutter_wayland_keybindings,
|
||||||
|
META_KEY_BINDING_NONE,
|
||||||
|
META_KEYBINDING_ACTION_NONE,
|
||||||
|
handle_switch_vt, 7);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#undef REVERSES_AND_REVERSED
|
#undef REVERSES_AND_REVERSED
|
||||||
|
|
||||||
/************************ PER WINDOW BINDINGS ************************/
|
/************************ PER WINDOW BINDINGS ************************/
|
||||||
|
33
src/org.gnome.mutter.wayland.gschema.xml.in
Normal file
33
src/org.gnome.mutter.wayland.gschema.xml.in
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
<schemalist>
|
||||||
|
<schema id="org.gnome.mutter.wayland.keybindings" path="/org/gnome/mutter/wayland/keybindings/"
|
||||||
|
gettext-domain="@GETTEXT_DOMAIN@">
|
||||||
|
<key name="switch-to-session-1" type="as">
|
||||||
|
<default><![CDATA[['<Primary><Alt>F1']]]></default>
|
||||||
|
<_summary>Switch to VT 1</_summary>
|
||||||
|
</key>
|
||||||
|
<key name="switch-to-session-2" type="as">
|
||||||
|
<default><![CDATA[['<Primary><Alt>F2']]]></default>
|
||||||
|
<_summary>Switch to VT 2</_summary>
|
||||||
|
</key>
|
||||||
|
<key name="switch-to-session-3" type="as">
|
||||||
|
<default><![CDATA[['<Primary><Alt>F3']]]></default>
|
||||||
|
<_summary>Switch to VT 3</_summary>
|
||||||
|
</key>
|
||||||
|
<key name="switch-to-session-4" type="as">
|
||||||
|
<default><![CDATA[['<Primary><Alt>F4']]]></default>
|
||||||
|
<_summary>Switch to VT 4</_summary>
|
||||||
|
</key>
|
||||||
|
<key name="switch-to-session-5" type="as">
|
||||||
|
<default><![CDATA[['<Primary><Alt>F5']]]></default>
|
||||||
|
<_summary>Switch to VT 5</_summary>
|
||||||
|
</key>
|
||||||
|
<key name="switch-to-session-6" type="as">
|
||||||
|
<default><![CDATA[['<Primary><Alt>F6']]]></default>
|
||||||
|
<_summary>Switch to VT 6</_summary>
|
||||||
|
</key>
|
||||||
|
<key name="switch-to-session-7" type="as">
|
||||||
|
<default><![CDATA[['<Primary><Alt>F7']]]></default>
|
||||||
|
<_summary>Switch to VT 7</_summary>
|
||||||
|
</key>
|
||||||
|
</schema>
|
||||||
|
</schemalist>
|
Loading…
Reference in New Issue
Block a user