Working shortcut reassignments
This commit is contained in:
parent
db727f60c1
commit
f5159fb06e
|
|
@ -135,7 +135,7 @@ export default class BreezyDesktopExtension extends Extension {
|
||||||
display_distance: this.settings.get_double('display-distance')
|
display_distance: this.settings.get_double('display-distance')
|
||||||
});
|
});
|
||||||
|
|
||||||
this.settings.bind('display-distance', this._xr_effect, 'display-distance', Gio.SettingsBindFlags.GET)
|
this.settings.bind('display-distance', this._xr_effect, 'display-distance', Gio.SettingsBindFlags.DEFAULT)
|
||||||
|
|
||||||
this._overlay.add_effect_with_name('xr-desktop', this._xr_effect);
|
this._overlay.add_effect_with_name('xr-desktop', this._xr_effect);
|
||||||
Meta.disable_unredirect_for_display(global.display);
|
Meta.disable_unredirect_for_display(global.display);
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<schema id="org.gnome.shell.extensions.breezy-desktop" path="/org/gnome/shell/extensions/breezy-desktop/">
|
<schema id="org.gnome.shell.extensions.breezy-desktop" path="/org/gnome/shell/extensions/breezy-desktop/">
|
||||||
<key name="recenter-display-shortcut" type="as">
|
<key name="recenter-display-shortcut" type="as">
|
||||||
<default>
|
<default>
|
||||||
<![CDATA[['<Control><Super>space']]]>
|
<![CDATA[['<Control><Super>space', 'Ctrl+Super+Space']]]>
|
||||||
</default>
|
</default>
|
||||||
<summary>Re-center display</summary>
|
<summary>Re-center display</summary>
|
||||||
<description>
|
<description>
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
</key>
|
</key>
|
||||||
<key name="toggle-display-distance-shortcut" type="as">
|
<key name="toggle-display-distance-shortcut" type="as">
|
||||||
<default>
|
<default>
|
||||||
<![CDATA[['<Control><Super>Return']]]>
|
<![CDATA[['<Control><Super>Return', 'Ctrl+Super+Return']]]>
|
||||||
</default>
|
</default>
|
||||||
<summary>Trigger change to display distance</summary>
|
<summary>Trigger change to display distance</summary>
|
||||||
<description>
|
<description>
|
||||||
|
|
|
||||||
|
|
@ -1,28 +1,28 @@
|
||||||
from gi.repository import Gtk, Gdk
|
from gi.repository import Gtk, Gdk
|
||||||
|
|
||||||
|
# ported from https://github.com/velitasali/gnome-shell-extension-awesome-tiles
|
||||||
class ShortcutDialog:
|
class ShortcutDialog:
|
||||||
def __init__(self, settings, shortcut):
|
def __init__(self, settings, settings_key):
|
||||||
self.settings = settings
|
self.settings = settings
|
||||||
self.shortcut = shortcut
|
self.settings_key = settings_key
|
||||||
|
|
||||||
self._builder = Gtk.Builder()
|
self._builder = Gtk.Builder()
|
||||||
self._builder.add_from_file('./shortcut-dialog.ui')
|
self._builder.add_from_file('./shortcut-dialog.ui')
|
||||||
|
|
||||||
self.widget = self._builder.get_object('dialog')
|
self.widget = self._builder.get_object('dialog')
|
||||||
|
|
||||||
eventController = self._builder.get_object('event-controller')
|
self.event_controller = self._builder.get_object('event-controller')
|
||||||
eventController.connect('key-pressed', self._on_key_pressed)
|
self.key_pressed_connect_id = self.event_controller.connect('key-pressed', self._on_key_pressed)
|
||||||
|
|
||||||
def _on_key_pressed(self, widget, keyval, keycode, state):
|
def _on_key_pressed(self, widget, keyval, keycode, state):
|
||||||
mask = state & Gtk.accelerator_get_default_mod_mask()
|
mask = state & Gtk.accelerator_get_default_mod_mask()
|
||||||
mask &= ~Gdk.ModifierType.LOCK_MASK
|
mask &= ~Gdk.ModifierType.LOCK_MASK
|
||||||
|
|
||||||
|
done = True
|
||||||
if mask == 0 and keyval == Gdk.KEY_Escape:
|
if mask == 0 and keyval == Gdk.KEY_Escape:
|
||||||
self.widget.visible = False
|
self.widget.visible = False
|
||||||
return Gdk.EVENT_STOP
|
elif keyval == Gdk.KEY_BackSpace:
|
||||||
|
self.settings.set_strv(self.settings_key, [])
|
||||||
if keyval == Gdk.KEY_BackSpace:
|
|
||||||
self.settings.set_strv(self.shortcut, [])
|
|
||||||
self.widget.close()
|
self.widget.close()
|
||||||
elif is_binding_valid(mask, keycode, keyval) and is_accel_valid(state, keyval):
|
elif is_binding_valid(mask, keycode, keyval) and is_accel_valid(state, keyval):
|
||||||
binding = Gtk.accelerator_name_with_keycode(
|
binding = Gtk.accelerator_name_with_keycode(
|
||||||
|
|
@ -31,8 +31,15 @@ class ShortcutDialog:
|
||||||
keycode,
|
keycode,
|
||||||
state
|
state
|
||||||
)
|
)
|
||||||
self.settings.set_strv(self.shortcut, [binding])
|
label = Gtk.accelerator_get_label(keyval, state)
|
||||||
|
self.settings.set_strv(self.settings_key, [binding, label])
|
||||||
self.widget.close()
|
self.widget.close()
|
||||||
|
else:
|
||||||
|
done = False
|
||||||
|
|
||||||
|
if done and self.key_pressed_connect_id:
|
||||||
|
self.event_controller.disconnect(self.key_pressed_connect_id)
|
||||||
|
self.key_pressed_connect_id = None
|
||||||
|
|
||||||
return Gdk.EVENT_STOP
|
return Gdk.EVENT_STOP
|
||||||
|
|
||||||
|
|
@ -75,8 +82,8 @@ def is_accel_valid(mask, keyval):
|
||||||
|
|
||||||
def bind_shortcut_settings(window, settings, widgets):
|
def bind_shortcut_settings(window, settings, widgets):
|
||||||
for widget in widgets:
|
for widget in widgets:
|
||||||
settings.connect('changed::' + widget.get_name(), lambda *args: reload_shortcut_widget(settings, widget))
|
settings.connect('changed::' + widget.get_name(), lambda *args, widget=widget: reload_shortcut_widget(settings, widget))
|
||||||
widget.connect('clicked', lambda *args: on_assign_shortcut(window, settings, widget))
|
widget.connect('clicked', lambda *args, widget=widget: on_assign_shortcut(window, settings, widget))
|
||||||
|
|
||||||
reload_shortcut_widgets(settings, widgets)
|
reload_shortcut_widgets(settings, widgets)
|
||||||
|
|
||||||
|
|
@ -87,7 +94,7 @@ def on_assign_shortcut(window, settings, widget):
|
||||||
|
|
||||||
def reload_shortcut_widget(settings, widget):
|
def reload_shortcut_widget(settings, widget):
|
||||||
shortcut = settings.get_strv(widget.get_name())
|
shortcut = settings.get_strv(widget.get_name())
|
||||||
widget.set_label(shortcut[0] if len(shortcut) > 0 else 'Disabled')
|
widget.set_label(shortcut[1] if len(shortcut) > 1 else 'Disabled')
|
||||||
|
|
||||||
def reload_shortcut_widgets(settings, widgets):
|
def reload_shortcut_widgets(settings, widgets):
|
||||||
for widget in widgets:
|
for widget in widgets:
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue