diff --git a/packages/patched-derivations.nix b/packages/patched-derivations.nix index f21413a..2f9f777 100644 --- a/packages/patched-derivations.nix +++ b/packages/patched-derivations.nix @@ -41,7 +41,7 @@ super: rec { tilix-high-refresh-rate = super.tilix.override { gtkd = super.gtkd.override { vte = vte-high-refresh-rate; }; }; - blackbox-high-refresh-rate = super.blackbox-terminal.override { vte-gtk4 = vte-gtk4-high-refresh-rate; }; + blackbox-high-refresh-rate = (patch' super.blackbox-terminal).override { vte-gtk4 = vte-gtk4-high-refresh-rate; }; textpieces = patch' (super.textpieces.overrideAttrs { meta.broken = false; }); } diff --git a/patches/base/blackbox/remove-process-watcher.patch b/patches/base/blackbox/remove-process-watcher.patch new file mode 100644 index 0000000..599173c --- /dev/null +++ b/patches/base/blackbox/remove-process-watcher.patch @@ -0,0 +1,138 @@ +diff --git a/src/services/meson.build b/src/services/meson.build +index 0f9114b..390e869 100644 +--- a/src/services/meson.build ++++ b/src/services/meson.build +@@ -1,5 +1,4 @@ + blackbox_sources += files([ +- 'ProcessWatcher.vala', + 'Scheme.vala', + 'Settings.vala', + 'Shortcuts.vala', +diff --git a/src/widgets/Terminal.vala b/src/widgets/Terminal.vala +index 7d53851..49db51b 100644 +--- a/src/widgets/Terminal.vala ++++ b/src/widgets/Terminal.vala +@@ -49,13 +49,10 @@ public class Terminal.Terminal : Vte.Terminal { + + public signal void spawn_failed (string? error_message); + +- public signal void context_changed (ProcessContext context); +- + // Properties + + public Scheme scheme { get; set; } + public Pid pid { get; protected set; default = -1; } +- public Process? process { get; protected set; default = null; } + + public uint user_scrollback_lines { + get { +@@ -481,56 +478,6 @@ public class Terminal.Terminal : Vte.Terminal { + if (_pid < 0) { + return; + } +- +- this.process = new Process () { +- terminal_fd = this.pty.get_fd (), +- pid = this.pid, +- foreground_pid = -1, +- }; +- +- this.process.foreground_task_finished.connect ((_process) => { +- var desktop_notifications_enabled = +- Settings.get_default ().notify_process_completion; +- +- if ( +- desktop_notifications_enabled && +- !this.has_focus && +- _process.last_foreground_task_command != null +- ) { +- var n = new GLib.Notification (_("Command completed")); +- n.set_body (_process.last_foreground_task_command); +- +- // TODO: improve this notification system so that when a user clicks +- // the notification, Black Box focuses the right terminal window and +- // automatically focusses the tab that just completed. +- // +- // https://valadoc.org/gio-2.0/GLib.Notification.set_default_action.html +- // https://valadoc.org/gio-2.0/GLib.Action.parse_detailed_name.html +- +- this.window.application.send_notification (null, n); +- +- // GNOME seems to be showing the same notification twice. I am sure we +- // are not calling this twice. This may be an upstream bug. +- GLib.Application.get_default ().send_notification (null, n); +- } +- }); +- +- this.process.notify ["context"].connect ((__process, spec) => { +- var context = (_process as Process)?.context ?? ProcessContext.DEFAULT; +- +- this.context_changed.emit (context); +- // string context_str = +- // context == ProcessContext.SSH +- // ? "ssh" +- // : context == ProcessContext.ROOT +- // ? "root" +- // : "default"; +- // message ("New context for process: %s", context_str); +- }); +- +- ProcessWatcher.get_instance ().watch (this.process); +- +- this.context_changed.emit (this.process.context); + } + + private async bool spawn_on_flatpak (Vte.PtyFlags flags, +@@ -603,7 +550,6 @@ public class Terminal.Terminal : Vte.Terminal { + // This is not a good idea. Another thread might be modifying this field + // as well. + // this.process.ended = true; +- this.process = null; + this.exit (); + } + +diff --git a/src/widgets/Window.vala b/src/widgets/Window.vala +index 4ede36c..2e0003b 100644 +--- a/src/widgets/Window.vala ++++ b/src/widgets/Window.vala +@@ -215,10 +215,6 @@ public class Terminal.Window : Adw.ApplicationWindow { + SettingsBindFlags.GET + ); + +- this.settings.notify ["context-aware-header-bar"].connect (() => { +- this.on_active_terminal_context_changed (); +- }); +- + this.header_bar_revealer.notify ["reveal-child"] + .connect (this.on_reveal_header_bar_changed); + +@@ -806,29 +802,6 @@ public class Terminal.Window : Adw.ApplicationWindow { + .connect (this.on_active_terminal_title_changed); + + this.active_terminal_tab_signal_handlers.append_val (handler); +- +- this.on_active_terminal_context_changed (); +- handler = this.active_terminal +- .context_changed +- .connect (this.on_active_terminal_tab_changed); +- } +- +- private void on_active_terminal_context_changed () { +- var context = this.active_terminal?.process?.context; +- var is_context_aware_enabled = +- Settings.get_default ().context_aware_header_bar; +- +- widget_set_css_class ( +- this, +- "context-root", +- context == ProcessContext.ROOT && is_context_aware_enabled +- ); +- +- widget_set_css_class ( +- this, +- "context-ssh", +- context == ProcessContext.SSH && is_context_aware_enabled +- ); + } + + private void on_active_terminal_title_changed () {