about summary refs log tree commit diff
diff options
context:
space:
mode:
authorSören Tempel <soeren+git@soeren-tempel.net>2021-06-01 18:02:47 +0200
committerSören Tempel <soeren+git@soeren-tempel.net>2021-06-01 18:02:47 +0200
commit52622cc6f1fcc73ddff67b3670c14a2fdab50de6 (patch)
treed2847b1d4754bd308c7e946c02fb597992b97595
parentc00c1335800036aa4e24acae4c8950a3d868ce5a (diff)
Allow toggling wordwrap/autoscroll using a key binding
I find it somewhat unpleasent to heavily rely on the mouse. Especially
considering that toggeling autoscroll is something I do a lot (e.g. when
using cat(1) on a text document).
-rw-r--r--saneterm/keys.py3
-rw-r--r--saneterm/terminal.py14
2 files changed, 11 insertions, 6 deletions
diff --git a/saneterm/keys.py b/saneterm/keys.py
index 4b27d67..44bfd9a 100644
--- a/saneterm/keys.py
+++ b/saneterm/keys.py
@@ -24,6 +24,9 @@ class Bindings():
             bind "<ctrl>w" { "delete-from-cursor" (word-ends, -1) };
             bind "<ctrl>h" { "backspace" () };
 
+            bind "<alt>a" { "toggle-config" ("autoscroll") };
+            bind "<alt>w" { "toggle-config" ("wordwrap") };
+
             bind "Up" { "history-entry" (1) };
             bind "Down" { "history-entry" (-1) };
 
diff --git a/saneterm/terminal.py b/saneterm/terminal.py
index 6e5d998..54dc321 100644
--- a/saneterm/terminal.py
+++ b/saneterm/terminal.py
@@ -107,6 +107,7 @@ class Terminal(Gtk.Window):
 
         signals = {
             "toggle-search": (),
+            "toggle-config": (GObject.TYPE_STRING,),
             "history-entry": (GObject.TYPE_LONG,),
         }
 
@@ -116,6 +117,7 @@ class Terminal(Gtk.Window):
                     args)
 
         self.termview.connect("toggle-search", self.toggle_search, self.search_bar)
+        self.termview.connect("toggle-config", self.toggle_config)
         self.termview.connect("history-entry", self.history)
 
     def complete(self, input):
@@ -234,18 +236,18 @@ class Terminal(Gtk.Window):
         adj = self.scroll.get_vadjustment()
         adj.set_value(adj.get_upper() - adj.get_page_size())
 
-    def populate_popup(self, textview, popup):
-        def toggle_config(mitem, key):
-            self.config[key] = not self.config[key]
-            if key == 'wordwrap':
-                self.update_wrapmode()
+    def toggle_config(self, widget, key):
+        self.config[key] = not self.config[key]
+        if key == 'wordwrap':
+            self.update_wrapmode()
 
+    def populate_popup(self, textview, popup):
         popup.append(Gtk.SeparatorMenuItem())
         for key, enabled in self.config.items():
             mitem = Gtk.CheckMenuItem(key.capitalize())
             mitem.set_active(enabled)
 
-            mitem.connect('toggled', toggle_config, key)
+            mitem.connect('toggled', self.toggle_config, key)
             popup.append(mitem)
 
         popup.show_all()