From 6f3d483a0f7823508ef10ea0303d752c0670a2c5 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Tue, 3 Jun 2025 16:22:03 +0100 Subject: [PATCH 01/12] Monitor settings changes; refactor --- src/Widgets/Terminal.vala | 169 +++++++++++++++++++++++++------------- 1 file changed, 112 insertions(+), 57 deletions(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index 2219769a5a..08171f5700 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -18,8 +18,10 @@ public class Code.Terminal : Gtk.Box { public Vte.Terminal terminal { get; construct; } public SimpleActionGroup actions { get; construct; } + private GLib.Pid child_pid; private Gtk.Clipboard current_clipboard; + private Settings? terminal_settings; construct { terminal = new Vte.Terminal () { @@ -31,15 +33,47 @@ public class Code.Terminal : Gtk.Box { // Set font, allow-bold, audible-bell, background, foreground, and palette of pantheon-terminal var schema_source = SettingsSchemaSource.get_default (); var terminal_schema = schema_source.lookup (SETTINGS_SCHEMA, true); + if (terminal_schema == null) { + terminal_schema = schema_source.lookup (LEGACY_SETTINGS_SCHEMA, true); + } + if (terminal_schema != null) { - update_terminal_settings (SETTINGS_SCHEMA); + terminal_settings = new Settings.full (terminal_schema, null, null); + terminal_settings.changed.connect ((key) => { + switch (key) { + case "font": + update_font (); + break; + case "audible-bell": + update_audible_bell (); + break; + case "cursor-shape": + update_cursor (); + break; + case "foreground": + case "background": + case "palette": + update_colors (); + break; + default: + //TODO Handle other relevant terminal settings + // "theme" + // "prefer-dark-style" + break; + } + }); } else { - var legacy_terminal_schema = schema_source.lookup (LEGACY_SETTINGS_SCHEMA, true); - if (legacy_terminal_schema != null) { - update_terminal_settings (LEGACY_SETTINGS_SCHEMA); - } + //TODO monitor changes in relevant system settings + // "audible-bell" + // "monospace-font-name" + // "color-scheme" } + update_font (); + update_audible_bell (); + update_cursor (); + update_colors (); + terminal.child_exited.connect (() => { GLib.Application.get_default ().activate_action (Scratch.MainWindow.ACTION_PREFIX + Scratch.MainWindow.ACTION_TOGGLE_TERMINAL, null); }); @@ -129,71 +163,92 @@ public class Code.Terminal : Gtk.Box { } } - private void update_terminal_settings (string settings_schema) { - var pantheon_terminal_settings = new GLib.Settings (settings_schema); + private void update_font () { + var font_name = ""; + if (terminal_settings != null) { + font_name = terminal_settings.get_string ("font"); + } - var font_name = pantheon_terminal_settings.get_string ("font"); if (font_name == "") { - var system_settings = new GLib.Settings ("org.gnome.desktop.interface"); - font_name = system_settings.get_string ("monospace-font-name"); + var system_interface_settings = new Settings ("org.gnome.desktop.interface"); + font_name = system_interface_settings.get_string ("monospace-font-name"); } var fd = Pango.FontDescription.from_string (font_name); terminal.set_font (fd); + } - bool audible_bell_setting = pantheon_terminal_settings.get_boolean ("audible-bell"); - this.terminal.set_audible_bell (audible_bell_setting); - - string cursor_shape_setting = pantheon_terminal_settings.get_string ("cursor-shape"); - - switch (cursor_shape_setting) { - case "Block": - this.terminal.cursor_shape = Vte.CursorShape.BLOCK; - break; - case "I-Beam": - this.terminal.cursor_shape = Vte.CursorShape.IBEAM; - break; - case "Underline": - this.terminal.cursor_shape = Vte.CursorShape.UNDERLINE; - break; + private void update_audible_bell () { + var audible_bell = false; + if (terminal_settings != null) { + audible_bell = terminal_settings.get_boolean ("audible-bell"); + } else { + var system_wm_settings = new Settings ("org.gnome.desktop.wm.preferences"); + audible_bell = system_wm_settings.get_boolean ("audible-bell"); } - string background_setting = pantheon_terminal_settings.get_string ("background"); - Gdk.RGBA background_color = Gdk.RGBA (); - background_color.parse (background_setting); - - string foreground_setting = pantheon_terminal_settings.get_string ("foreground"); - Gdk.RGBA foreground_color = Gdk.RGBA (); - foreground_color.parse (foreground_setting); - - string palette_setting = pantheon_terminal_settings.get_string ("palette"); - - string[] hex_palette = {"#000000", "#FF6C60", "#A8FF60", "#FFFFCC", "#96CBFE", - "#FF73FE", "#C6C5FE", "#EEEEEE", "#000000", "#FF6C60", - "#A8FF60", "#FFFFB6", "#96CBFE", "#FF73FE", "#C6C5FE", - "#EEEEEE"}; - - string current_string = ""; - int current_color = 0; - for (var i = 0; i < palette_setting.length; i++) { - if (palette_setting[i] == ':') { - hex_palette[current_color] = current_string; - current_string = ""; - current_color++; - } else { - current_string += palette_setting[i].to_string (); + terminal.set_audible_bell (audible_bell); + } + + private void update_cursor () { + if (terminal_settings != null) { + var cursor_shape_setting = terminal_settings.get_string ("cursor-shape"); + switch (cursor_shape_setting) { + case "Block": + this.terminal.cursor_shape = Vte.CursorShape.BLOCK; + break; + case "I-Beam": + this.terminal.cursor_shape = Vte.CursorShape.IBEAM; + break; + case "Underline": + this.terminal.cursor_shape = Vte.CursorShape.UNDERLINE; + break; } - } + } //No corresponding system keymap - Gdk.RGBA[] palette = new Gdk.RGBA[16]; + //TODO follow system cursor-blink + //TODO Remove discontinued key cursor-color + } - for (int i = 0; i < hex_palette.length; i++) { - Gdk.RGBA new_color = Gdk.RGBA (); - new_color.parse (hex_palette[i]); - palette[i] = new_color; - } + private void update_colors () { + if (terminal_settings != null) { + string background_setting = terminal_settings.get_string ("background"); + Gdk.RGBA background_color = Gdk.RGBA (); + background_color.parse (background_setting); + + string foreground_setting = terminal_settings.get_string ("foreground"); + Gdk.RGBA foreground_color = Gdk.RGBA (); + foreground_color.parse (foreground_setting); + + string palette_setting = terminal_settings.get_string ("palette"); + + string[] hex_palette = {"#000000", "#FF6C60", "#A8FF60", "#FFFFCC", "#96CBFE", + "#FF73FE", "#C6C5FE", "#EEEEEE", "#000000", "#FF6C60", + "#A8FF60", "#FFFFB6", "#96CBFE", "#FF73FE", "#C6C5FE", + "#EEEEEE"}; + + string current_string = ""; + int current_color = 0; + for (var i = 0; i < palette_setting.length; i++) { + if (palette_setting[i] == ':') { + hex_palette[current_color] = current_string; + current_string = ""; + current_color++; + } else { + current_string += palette_setting[i].to_string (); + } + } + + Gdk.RGBA[] palette = new Gdk.RGBA[16]; + + for (int i = 0; i < hex_palette.length; i++) { + Gdk.RGBA new_color = Gdk.RGBA (); + new_color.parse (hex_palette[i]); + palette[i] = new_color; + } - this.terminal.set_colors (foreground_color, background_color, palette); + terminal.set_colors (foreground_color, background_color, palette); + } //No suitable system keys } public void increment_size () { From eaa8aae444bddc7c449e347b3df2cbaa7d0b0434 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Fri, 27 Jun 2025 19:04:10 +0100 Subject: [PATCH 02/12] Fallback to GNOME settings for font and audible bell, monitor settings changes --- src/Widgets/Terminal.vala | 76 ++++++++++++++++++++++++++++----------- 1 file changed, 55 insertions(+), 21 deletions(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index 94893b5d5d..107b37c142 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -14,10 +14,23 @@ public class Code.Terminal : Gtk.Box { private const double MIN_SCALE = 0.2; private const string LEGACY_SETTINGS_SCHEMA = "org.pantheon.terminal.settings"; private const string SETTINGS_SCHEMA = "io.elementary.terminal.settings"; + private const string GNOME_DESKTOP_INTERFACE_SCHEMA = "org.gnome.desktop.interface"; + private const string GNOME_DESKTOP_WM_PREFERENCES_SCHEMA = "org.gnome.desktop.wm.preferences"; + private const string TERMINAL_FONT_KEY = "font"; + private const string TERMINAL_BELL_KEY = "audible-bell"; + private const string TERMINAL_CURSOR_KEY = "cursor-shape"; + private const string TERMINAL_FOREGROUND_KEY = "foreground"; + private const string TERMINAL_BACKGROUND_KEY = "background"; + private const string TERMINAL_PALETTE_KEY = "palette"; + private const string GNOME_FONT_KEY = "monospace-font-name"; + private const string GNOME_BELL_KEY = "audible-bell"; + public Vte.Terminal terminal { get; construct; } private Gtk.EventControllerKey key_controller; private Settings pantheon_terminal_settings; + private Settings gnome_interface_settings; + private Settings gnome_wm_settings; public SimpleActionGroup actions { get; construct; } @@ -44,18 +57,18 @@ public class Code.Terminal : Gtk.Box { terminal_settings = new Settings.full (terminal_schema, null, null); terminal_settings.changed.connect ((key) => { switch (key) { - case "font": + case TERMINAL_FONT_KEY: update_font (); break; - case "audible-bell": + case TERMINAL_BELL_KEY: update_audible_bell (); break; - case "cursor-shape": + case TERMINAL_CURSOR_KEY: update_cursor (); break; - case "foreground": - case "background": - case "palette": + case TERMINAL_FOREGROUND_KEY: + case TERMINAL_BACKGROUND_KEY: + case TERMINAL_PALETTE_KEY: update_colors (); break; default: @@ -66,12 +79,38 @@ public class Code.Terminal : Gtk.Box { } }); } else { + var gnome_wm_settings_schema = schema_source.lookup (GNOME_DESKTOP_WM_PREFERENCES_SCHEMA, true); + if (gnome_wm_settings_schema != null) { + gnome_wm_settings = new Settings.full (gnome_wm_settings_schema, null, null); + gnome_wm_settings.changed.connect ((key) => { + switch (key) { + case GNOME_BELL_KEY: + update_audible_bell (); + break; + default: + break; + } + }); + } //TODO monitor changes in relevant system settings - // "audible-bell" - // "monospace-font-name" // "color-scheme" } + // Always monitor changes in default font as that is what Terminal usually follows + var gnome_interface_settings_schema = schema_source.lookup (GNOME_DESKTOP_INTERFACE_SCHEMA, true); + if (gnome_interface_settings_schema != null) { + gnome_interface_settings = new Settings.full (gnome_interface_settings_schema, null, null); + gnome_interface_settings.changed.connect ((key) => { + switch (key) { + case GNOME_FONT_KEY: + update_font (); + break; + default: + break; + } + }); + } + update_font (); update_audible_bell (); update_cursor (); @@ -174,28 +213,23 @@ public class Code.Terminal : Gtk.Box { private void update_font () { var font_name = ""; if (terminal_settings != null) { - font_name = terminal_settings.get_string ("font"); + font_name = terminal_settings.get_string (TERMINAL_FONT_KEY); } - if (font_name == "") { - var system_interface_settings = new Settings ("org.gnome.desktop.interface"); - //Can we assume that this settings exists and has the expected key? - font_name = system_interface_settings.get_string ("monospace-font-name"); + if (font_name == "" && gnome_interface_settings != null) { + font_name = gnome_interface_settings.get_string (GNOME_FONT_KEY); } - if (font_name != "") { - var fd = Pango.FontDescription.from_string (font_name); - terminal.set_font (fd); - } + var fd = Pango.FontDescription.from_string (font_name); + terminal.set_font (fd); } private void update_audible_bell () { var audible_bell = false; if (terminal_settings != null) { - audible_bell = terminal_settings.get_boolean ("audible-bell"); - } else { - var system_wm_settings = new Settings ("org.gnome.desktop.wm.preferences"); - audible_bell = system_wm_settings.get_boolean ("audible-bell"); + audible_bell = terminal_settings.get_boolean (TERMINAL_BELL_KEY); + } else if (gnome_wm_settings != null) { + audible_bell = gnome_wm_settings.get_boolean (GNOME_BELL_KEY); } terminal.set_audible_bell (audible_bell); From c274542f4fd3c0949f346496b47da300093aaa65 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Fri, 27 Jun 2025 19:14:38 +0100 Subject: [PATCH 03/12] Follow system cursor blink mode --- src/Widgets/Terminal.vala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index 107b37c142..7f08192664 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -25,7 +25,6 @@ public class Code.Terminal : Gtk.Box { private const string GNOME_FONT_KEY = "monospace-font-name"; private const string GNOME_BELL_KEY = "audible-bell"; - public Vte.Terminal terminal { get; construct; } private Gtk.EventControllerKey key_controller; private Settings pantheon_terminal_settings; @@ -43,7 +42,8 @@ public class Code.Terminal : Gtk.Box { terminal = new Vte.Terminal () { hexpand = true, vexpand = true, - scrollback_lines = -1 + scrollback_lines = -1, + cursor_blink_mode = SYSTEM // There is no Terminal setting so follow Gnome }; // Set font, allow-bold, audible-bell, background, foreground, and palette of pantheon-terminal From fadbfc0bf8ca8cee1ec52487443885ef26365024 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Sat, 28 Jun 2025 14:14:55 +0100 Subject: [PATCH 04/12] Lose redundant pantheon-terminal-settings --- src/Widgets/Terminal.vala | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index 7f08192664..dba64518e9 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -27,16 +27,15 @@ public class Code.Terminal : Gtk.Box { public Vte.Terminal terminal { get; construct; } private Gtk.EventControllerKey key_controller; - private Settings pantheon_terminal_settings; + + private Settings? terminal_settings; private Settings gnome_interface_settings; private Settings gnome_wm_settings; public SimpleActionGroup actions { get; construct; } - private GLib.Pid child_pid; private Gtk.Clipboard current_clipboard; - private Settings? terminal_settings; construct { terminal = new Vte.Terminal () { @@ -72,7 +71,7 @@ public class Code.Terminal : Gtk.Box { update_colors (); break; default: - //TODO Handle other relevant terminal settings + //TODO Handle other relevant terminal settings? // "theme" // "prefer-dark-style" break; @@ -92,8 +91,8 @@ public class Code.Terminal : Gtk.Box { } }); } - //TODO monitor changes in relevant system settings - // "color-scheme" + //TODO monitor changes in relevant system settings? + // "org.gnome.desktop.interface.color-scheme" } // Always monitor changes in default font as that is what Terminal usually follows @@ -325,7 +324,7 @@ public class Code.Terminal : Gtk.Box { return Gdk.EVENT_PROPAGATE; } - if (CONTROL_MASK in modifiers && pantheon_terminal_settings.get_boolean ("natural-copy-paste")) { + if (CONTROL_MASK in modifiers && terminal_settings.get_boolean ("natural-copy-paste")) { if (match_keycode (Gdk.Key.c, keycode) && terminal.get_has_selection ()) { actions.activate_action (ACTION_COPY, null); return Gdk.EVENT_STOP; From e1aca654c999988ea2b771c4fcae65db3eb5ed06 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Sat, 28 Jun 2025 14:19:26 +0100 Subject: [PATCH 05/12] Lose redundant comments --- src/Widgets/Terminal.vala | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index dba64518e9..4fb65ea104 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -249,9 +249,6 @@ public class Code.Terminal : Gtk.Box { break; } } //No corresponding system keymap - - //TODO follow system cursor-blink - //TODO Remove discontinued key cursor-color } private void update_colors () { From fd63d4424112fcb220b065ee58b7498e63e4ade0 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Mon, 14 Jul 2025 13:11:36 +0100 Subject: [PATCH 06/12] Check for non-null settings in keypress handler. * Handle Shift-Control copy-paste anyway --- src/Widgets/Terminal.vala | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index 4fb65ea104..5f9acc72ac 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -28,7 +28,7 @@ public class Code.Terminal : Gtk.Box { public Vte.Terminal terminal { get; construct; } private Gtk.EventControllerKey key_controller; - private Settings? terminal_settings; + private Settings? terminal_settings = null; private Settings gnome_interface_settings; private Settings gnome_wm_settings; @@ -321,7 +321,9 @@ public class Code.Terminal : Gtk.Box { return Gdk.EVENT_PROPAGATE; } - if (CONTROL_MASK in modifiers && terminal_settings.get_boolean ("natural-copy-paste")) { + if (CONTROL_MASK in modifiers && (SHIFT_MASK in modifiers || + terminal_settings != null && terminal_settings.get_boolean ("natural-copy-paste"))) { + if (match_keycode (Gdk.Key.c, keycode) && terminal.get_has_selection ()) { actions.activate_action (ACTION_COPY, null); return Gdk.EVENT_STOP; From c0a804d46d6a6e927b9a0eec2b476073f524eddb Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Sun, 10 Aug 2025 14:02:43 +0100 Subject: [PATCH 07/12] Use defined constant for cursor-shape key Co-authored-by: Leo --- src/Widgets/Terminal.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index 5f9acc72ac..21863ab20a 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -236,7 +236,7 @@ public class Code.Terminal : Gtk.Box { private void update_cursor () { if (terminal_settings != null) { - var cursor_shape_setting = terminal_settings.get_string ("cursor-shape"); + var cursor_shape_setting = terminal_settings.get_string (TERMINAL_CURSOR_KEY); switch (cursor_shape_setting) { case "Block": this.terminal.cursor_shape = Vte.CursorShape.BLOCK; From 3cfa0298a80745fd2c7628fc6b9152a6ec71ad22 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Sun, 10 Aug 2025 14:03:18 +0100 Subject: [PATCH 08/12] Use defined constant for background key Co-authored-by: Leo --- src/Widgets/Terminal.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index 21863ab20a..60cba96160 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -253,7 +253,7 @@ public class Code.Terminal : Gtk.Box { private void update_colors () { if (terminal_settings != null) { - string background_setting = terminal_settings.get_string ("background"); + string background_setting = terminal_settings.get_string (TERMINAL_BACKGROUND_KEY); Gdk.RGBA background_color = Gdk.RGBA (); background_color.parse (background_setting); From 6815c2a9710b1f58826311e69279395ccf1b55e0 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Sun, 10 Aug 2025 14:03:39 +0100 Subject: [PATCH 09/12] Use defined constant for foreground key Co-authored-by: Leo --- src/Widgets/Terminal.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index 60cba96160..316322f210 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -257,7 +257,7 @@ public class Code.Terminal : Gtk.Box { Gdk.RGBA background_color = Gdk.RGBA (); background_color.parse (background_setting); - string foreground_setting = terminal_settings.get_string ("foreground"); + string foreground_setting = terminal_settings.get_string (TERMINAL_FOREGROUND_KEY); Gdk.RGBA foreground_color = Gdk.RGBA (); foreground_color.parse (foreground_setting); From 5ab2c0518750ae9c5f604ae5a4cbaea7bd9538b9 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Sun, 10 Aug 2025 14:04:09 +0100 Subject: [PATCH 10/12] Use defined constant for palette key Co-authored-by: Leo --- src/Widgets/Terminal.vala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index 316322f210..64fbb4a19d 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -261,7 +261,7 @@ public class Code.Terminal : Gtk.Box { Gdk.RGBA foreground_color = Gdk.RGBA (); foreground_color.parse (foreground_setting); - string palette_setting = terminal_settings.get_string ("palette"); + string palette_setting = terminal_settings.get_string (TERMINAL_PALETTE_KEY); string[] hex_palette = {"#000000", "#FF6C60", "#A8FF60", "#FFFFCC", "#96CBFE", "#FF73FE", "#C6C5FE", "#EEEEEE", "#000000", "#FF6C60", From 14596443224c6b03954bf9403210ad1da5d5f7d0 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Sun, 10 Aug 2025 14:04:41 +0100 Subject: [PATCH 11/12] Make gnome settings nullable Co-authored-by: Leo --- src/Widgets/Terminal.vala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index 64fbb4a19d..14f25fec11 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -29,8 +29,8 @@ public class Code.Terminal : Gtk.Box { private Gtk.EventControllerKey key_controller; private Settings? terminal_settings = null; - private Settings gnome_interface_settings; - private Settings gnome_wm_settings; + private Settings? gnome_interface_settings = null; + private Settings? gnome_wm_settings = null; public SimpleActionGroup actions { get; construct; } From 031a5378a68fbc1072cbbf1171a8e775f3f75247 Mon Sep 17 00:00:00 2001 From: Jeremy Wootten Date: Sun, 10 Aug 2025 14:07:35 +0100 Subject: [PATCH 12/12] Lose unneeded `this` --- src/Widgets/Terminal.vala | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Widgets/Terminal.vala b/src/Widgets/Terminal.vala index 14f25fec11..c5c4911e9f 100644 --- a/src/Widgets/Terminal.vala +++ b/src/Widgets/Terminal.vala @@ -239,13 +239,13 @@ public class Code.Terminal : Gtk.Box { var cursor_shape_setting = terminal_settings.get_string (TERMINAL_CURSOR_KEY); switch (cursor_shape_setting) { case "Block": - this.terminal.cursor_shape = Vte.CursorShape.BLOCK; + terminal.cursor_shape = Vte.CursorShape.BLOCK; break; case "I-Beam": - this.terminal.cursor_shape = Vte.CursorShape.IBEAM; + terminal.cursor_shape = Vte.CursorShape.IBEAM; break; case "Underline": - this.terminal.cursor_shape = Vte.CursorShape.UNDERLINE; + terminal.cursor_shape = Vte.CursorShape.UNDERLINE; break; } } //No corresponding system keymap