diff options
author | Sören Tempel <soeren+git@soeren-tempel.net> | 2021-05-24 04:03:21 +0200 |
---|---|---|
committer | Sören Tempel <soeren+git@soeren-tempel.net> | 2021-05-24 04:03:21 +0200 |
commit | 41950e0e2db0225dc816c7f3ddbca0d3cf6fe043 (patch) | |
tree | e9ff6fe90d20c2adf65c08af41e4629a7eb365b0 | |
parent | e25fce1d9568285dac2bab4c6a5b353ab614e794 (diff) |
terminal: Autoscroll by default
This should be made configurable using the context menu and/or a keybinding in future commits.
-rw-r--r-- | saneterm/terminal.py | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/saneterm/terminal.py b/saneterm/terminal.py index a6a5b3b..9813a51 100644 --- a/saneterm/terminal.py +++ b/saneterm/terminal.py @@ -70,17 +70,18 @@ class Terminal(Gtk.Window): self.termview.connect("new-user-input", self.user_input) self.termview.connect("termios-ctrlkey", self.termios_ctrl) + self.termview.connect("size-allocate", self.autoscroll) self.connect("configure-event", self.update_size) bindings = keys.Bindings(self.termview) for key, idx in keys.CTRL.items(): bindings.add_bind(key, "termios-ctrlkey", idx) - scroll = Gtk.ScrolledWindow().new(None, None) - scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.ALWAYS) + self.scroll = Gtk.ScrolledWindow().new(None, None) + self.scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.ALWAYS) - scroll.add(self.termview) - self.add(scroll) + self.scroll.add(self.termview) + self.add(self.scroll) def update_size(self, widget, rect): # PTY must already be initialized @@ -118,6 +119,12 @@ class Terminal(Gtk.Window): self.termview.insert_data(self.decoder.decode(data)) return GLib.SOURCE_CONTINUE + def autoscroll(self, widget, rect): + # For some reason it is not possible to use .scroll_to_mark() + # et cetera on the TextView contained in the ScrolledWindow. + adj = self.scroll.get_vadjustment() + adj.set_value(adj.get_upper() - adj.get_page_size()) + def user_input(self, termview, line): os.write(self.pty.master, line.encode("UTF-8")) |