diff --git a/docs/changelog.rst b/docs/changelog.rst index c8f136d54..522d81476 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -53,6 +53,8 @@ Detailed list of changes - Bash integration: Fix ``clone-in-kitty`` not working on bash >= 5.2 if environment variable values contain newlines or other special characters (:iss:`5629`) +- A new :ac:`sleep` action useful in combine based mappings to make kitty sleep before executing the next action + 0.26.5 [2022-11-07] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ diff --git a/kitty/boss.py b/kitty/boss.py index 1862acb8d..ab078bd33 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -10,7 +10,7 @@ import sys from contextlib import suppress from functools import partial from gettext import gettext as _ -from time import monotonic +from time import monotonic, sleep from typing import ( TYPE_CHECKING, Any, Callable, Container, Dict, Iterable, Iterator, List, Optional, Set, Tuple, Union, @@ -1774,6 +1774,10 @@ class Boss: else: doit() + @ac('misc', 'Sleep for the specified time period') + def sleep(self, sleep_time: float) -> None: + sleep(sleep_time) + @ac('misc', 'Click a URL using the keyboard') def open_url_with_hints(self) -> None: self.run_kitten_with_metadata('hints') diff --git a/kitty/options/utils.py b/kitty/options/utils.py index 64d2400f2..0d5d27009 100644 --- a/kitty/options/utils.py +++ b/kitty/options/utils.py @@ -293,6 +293,15 @@ def single_integer_arg(func: str, rest: str) -> FuncArgsType: return func, [num] +@func_with_args('sleep') +def sleep(func: str, sleep_time: str) -> FuncArgsType: + mult = 1 + if sleep_time[-1] in 'shmd': + mult = {'s': 1, 'm': 60, 'h': 3600, 'd': 24 * 3600}[sleep_time[-1]] + sleep_time = sleep_time[:-1] + return func, [abs(float(sleep_time)) * mult] + + @func_with_args('disable_ligatures_in') def disable_ligatures_in(func: str, rest: str) -> FuncArgsType: parts = rest.split(maxsplit=1)