From 3cf56b8af3d5766210bc25202d0f82e15ce0ce6d Mon Sep 17 00:00:00 2001 From: "Jeffrey C. Ollie" Date: Sun, 6 Jul 2025 12:12:27 -0500 Subject: [PATCH] keybind: add copy_title action Fixes #7829 This will copy the terminal title to the clipboard. If the terminal title is not set it has no effect. --- src/Surface.zig | 11 +++++++++++ src/input/Binding.zig | 5 +++++ src/input/command.zig | 6 ++++++ 3 files changed, 22 insertions(+) diff --git a/src/Surface.zig b/src/Surface.zig index d9d6a3012..faba60ced 100644 --- a/src/Surface.zig +++ b/src/Surface.zig @@ -4443,6 +4443,17 @@ pub fn performBindingAction(self: *Surface, action: input.Binding.Action) !bool return false; }, + .copy_title => { + const title = self.rt_surface.getTitle() orelse return false; + + self.rt_surface.setClipboardString(title, .standard, false) catch |err| { + log.err("error copying title to clipboard err={}", .{err}); + return true; + }; + + return true; + }, + .paste_from_clipboard => try self.startClipboardRequest( .standard, .{ .paste = {} }, diff --git a/src/input/Binding.zig b/src/input/Binding.zig index c342c9cc2..6339674f8 100644 --- a/src/input/Binding.zig +++ b/src/input/Binding.zig @@ -281,6 +281,10 @@ pub const Action = union(enum) { /// If there is a URL under the cursor, copy it to the default clipboard. copy_url_to_clipboard, + /// Copy the terminal title to the clipboard. If the terminal title is not + /// set this has no effect. + copy_title, + /// Increase the font size by the specified amount in points (pt). /// /// For example, `increase_font_size:1.5` will increase the font size @@ -1005,6 +1009,7 @@ pub const Action = union(enum) { .reset, .copy_to_clipboard, .copy_url_to_clipboard, + .copy_title, .paste_from_clipboard, .paste_from_selection, .increase_font_size, diff --git a/src/input/command.zig b/src/input/command.zig index 8938835d0..434a4edf3 100644 --- a/src/input/command.zig +++ b/src/input/command.zig @@ -132,6 +132,12 @@ fn actionCommands(action: Action.Key) []const Command { .description = "Copy the URL under the cursor to the clipboard.", }}, + .copy_title => comptime &.{.{ + .action = .copy_title, + .title = "Copy Terminal Title to Clipboard", + .description = "Copy the terminal title to the clipboard. If the terminal title is not set this has no effect.", + }}, + .paste_from_clipboard => comptime &.{.{ .action = .paste_from_clipboard, .title = "Paste from Clipboard",