diff --git a/docs/changelog.rst b/docs/changelog.rst index b11ca32bc..8b9611344 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -10,6 +10,9 @@ To update |kitty|, :doc:`follow the instructions `. - Fix a regression in 0.17 that broke drawing of borders with non-minimal borders (:iss:`2474`) +- hints kitten: Allow copying to primary selection as well as clipboard + (:pull:`2487`) + - Add a new mappable action ``close_other_windows_in_tab`` to close all but the active window (:iss:`2484`) diff --git a/kittens/hints/main.py b/kittens/hints/main.py index d4d36e6b8..e3e3e3a69 100644 --- a/kittens/hints/main.py +++ b/kittens/hints/main.py @@ -21,7 +21,7 @@ from kitty.key_encoding import ( KeyEvent, backspace_key, enter_key, key_defs as K ) from kitty.typing import BossType, KittyCommonOpts -from kitty.utils import ScreenSize, screen_size_function +from kitty.utils import ScreenSize, screen_size_function, set_primary_selection from ..tui.handler import Handler, result_handler from ..tui.loop import Loop @@ -413,9 +413,11 @@ OPTIONS = r''' type=list What program to use to open matched text. Defaults to the default open program for the operating system. Use a value of :file:`-` to paste the match into the -terminal window instead. A value of :file:`@` will copy the match to the clipboard. -A value of :file:`default` will run the default open program. Can be specified -multiple times to run multiple programs. +terminal window instead. A value of :file:`@` will copy the match to the +clipboard. A value of :file:`*` will copy the match to the primary selection +(on systems that support primary selections). A value of :file:`default` will +run the default open program. Can be specified multiple times to run multiple +programs. --type @@ -629,6 +631,8 @@ def handle_result(args: List[str], data: Dict[str, Any], target_window_id: int, w.paste(joined_text()) elif program == '@': set_clipboard_string(joined_text()) + elif program == '*': + set_primary_selection(joined_text()) else: cwd = None w = boss.window_id_map.get(target_window_id)