Hi,
This is a diff to update kitty to 0.26.4. Since 0.26.0, there is an
"encrypted communication" functionality [1] that causes some problems
with the port, so this diff disables it.
The practical problem is that it doesn't build with LibreSSL functions
and would require OpenSSL 3 from ports, but that is proving challenging
to get right. OpenSSL has had its share of security concerns and issues
with the development practices. Kitty also is trying increasingly to do
everything and the kitchen sink.
I personally don't use kitty remote control features. Sharing this diff
before update so that other users of kitty can check if their use of the
port is affected, or offer other solutions for the update.
PS: make test now fails cryptically, and I can't find an easy fix:
===> Regression tests for kitty-0.26.4
mkdir -p /usr/ports/pobj/kitty-0.26.4/tmp/cache
python3 setup.py test
Traceback (most recent call last):
File "/usr/ports/pobj/kitty-0.26.4/kitty-0.26.4/setup.py", line 1668, in
<module>
main()
File "/usr/ports/pobj/kitty-0.26.4/kitty-0.26.4/setup.py", line 1622, in main
os.execl(texe, texe, '+launch', 'test.py')
File "/usr/local/lib/python3.9/os.py", line 542, in execl
execv(file, args)
FileNotFoundError: [Errno 2] No such file or directory
[1] https://sw.kovidgoyal.net/kitty/rc_protocol/#encrypted-communication
Index: Makefile
===================================================================
RCS file: /cvs/ports/x11/kitty/Makefile,v
retrieving revision 1.13
diff -u -p -r1.13 Makefile
--- Makefile 13 Mar 2022 16:22:00 -0000 1.13
+++ Makefile 3 Nov 2022 23:52:03 -0000
@@ -3,7 +3,7 @@ ONLY_FOR_ARCHS = aarch64 amd64 i386
COMMENT = fast, feature full, GPU-based terminal emulator
-MODPY_EGG_VERSION = 0.24.4
+MODPY_EGG_VERSION = 0.26.4
DISTNAME = kitty-${MODPY_EGG_VERSION}
CATEGORIES = x11
HOMEPAGE = https://sw.kovidgoyal.net/kitty/
@@ -12,7 +12,7 @@ MAINTAINER = Thomas Frohwein <thfr@open
# GPLv3+
PERMIT_PACKAGE = Yes
-# libcanberra is dlopen(3)'d in desktop.c
+# canberra, fontconfig, freetype, eopenssl30/crypto are loaded dynamically
WANTLIB += GL X11 X11-xcb Xcursor Xinerama Xrandr c canberra dbus-1
WANTLIB += fontconfig freetype harfbuzz intl lcms2 m png pthread rsync
WANTLIB += util xcb xkbcommon xkbcommon-x11 z ${MODPY_WANTLIB}
@@ -51,6 +51,10 @@ TEST_ENV = CI=true \
# needed for 'make test'
USE_GMAKE = Yes
+
+# disable crypto for encrypted communication; depends on OpenSSL3; not worth it
+post-extract:
+ rm ${WRKSRC}/kitty/crypto.c
pre-test:
mkdir -p ${WRKDIR}/tmp/cache
Index: distinfo
===================================================================
RCS file: /cvs/ports/x11/kitty/distinfo,v
retrieving revision 1.7
diff -u -p -r1.7 distinfo
--- distinfo 13 Mar 2022 16:22:00 -0000 1.7
+++ distinfo 3 Nov 2022 23:52:03 -0000
@@ -1,2 +1,2 @@
-SHA256 (kitty-0.24.4.tar.xz) = 2M0LSWe7YeKjQntXy59F8niBP7a5hvl7NwyMUKoFjRg=
-SIZE (kitty-0.24.4.tar.xz) = 4613232
+SHA256 (kitty-0.26.4.tar.xz) = wJWRrHyQjmoFSfdcwGHGMY9GJh+fXT83dRIAY8OkO7c=
+SIZE (kitty-0.26.4.tar.xz) = 4749148
Index: patches/patch-kitty_boss_py
===================================================================
RCS file: patches/patch-kitty_boss_py
diff -N patches/patch-kitty_boss_py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-kitty_boss_py 3 Nov 2022 23:52:03 -0000
@@ -0,0 +1,25 @@
+disable crypto/remote control functions
+
+Index: kitty/boss.py
+--- kitty/boss.py.orig
++++ kitty/boss.py
+@@ -35,7 +35,7 @@ from .fast_data_types import (
+ CLOSE_BEING_CONFIRMED, GLFW_MOD_ALT, GLFW_MOD_CONTROL, GLFW_MOD_SHIFT,
+ GLFW_MOD_SUPER, GLFW_MOUSE_BUTTON_LEFT, GLFW_PRESS,
GLFW_PRIMARY_SELECTION,
+ IMPERATIVE_CLOSE_REQUESTED, NO_CLOSE_REQUESTED, ChildMonitor, Color,
+- EllipticCurveKey, KeyEvent, SingleKey, add_timer, apply_options_update,
++ KeyEvent, SingleKey, add_timer, apply_options_update,
+ background_opacity_of, change_background_opacity, change_os_window_state,
+ cocoa_set_menubar_title, create_os_window,
+ current_application_quit_request, current_os_window, destroy_global_data,
+@@ -245,8 +245,8 @@ class Boss:
+ self.clipboard = Clipboard()
+ self.primary_selection = Clipboard(GLFW_PRIMARY_SELECTION)
+ self.update_check_started = False
+- self.encryption_key = EllipticCurveKey()
+- self.encryption_public_key =
f'{RC_ENCRYPTION_PROTOCOL_VERSION}:{base64.b85encode(self.encryption_key.public).decode("ascii")}'
++ #self.encryption_key = EllipticCurveKey()
++ #self.encryption_public_key =
f'{RC_ENCRYPTION_PROTOCOL_VERSION}:{base64.b85encode(self.encryption_key.public).decode("ascii")}'
+ self.clipboard_buffers: Dict[str, str] = {}
+ self.update_check_process: Optional['PopenType[bytes]'] = None
+ self.window_id_map: WeakValueDictionary[int, Window] =
WeakValueDictionary()
Index: patches/patch-kitty_child_py
===================================================================
RCS file: patches/patch-kitty_child_py
diff -N patches/patch-kitty_child_py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-kitty_child_py 3 Nov 2022 23:52:03 -0000
@@ -0,0 +1,14 @@
+disable crypto/remote control functionality
+
+Index: kitty/child.py
+--- kitty/child.py.orig
++++ kitty/child.py
+@@ -255,7 +255,7 @@ class Child:
+ env['TERM'] = fast_data_types.get_options().term
+ env['COLORTERM'] = 'truecolor'
+ env['KITTY_PID'] = getpid()
+- env['KITTY_PUBLIC_KEY'] = boss.encryption_public_key
++ #env['KITTY_PUBLIC_KEY'] = boss.encryption_public_key
+ if self.add_listen_on_env_var and boss.listening_on:
+ env['KITTY_LISTEN_ON'] = boss.listening_on
+ else:
Index: patches/patch-kitty_complete_py
===================================================================
RCS file: patches/patch-kitty_complete_py
diff -N patches/patch-kitty_complete_py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-kitty_complete_py 3 Nov 2022 23:52:03 -0000
@@ -0,0 +1,14 @@
+disable crypto/remote control functionality
+
+Index: kitty/complete.py
+--- kitty/complete.py.orig
++++ kitty/complete.py
+@@ -16,7 +16,7 @@ from kittens.runner import (
+ from .cli import (
+ OptionDict, options_for_completion, parse_option_spec, prettify
+ )
+-from .remote_control import global_options_spec
++#from .remote_control import global_options_spec
+ from .constants import config_dir, shell_integration_dir
+ from .fast_data_types import truncate_point_for_length, wcswidth
+ from .rc.base import all_command_names, command_for_name
Index: patches/patch-kitty_data-types_c
===================================================================
RCS file: patches/patch-kitty_data-types_c
diff -N patches/patch-kitty_data-types_c
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-kitty_data-types_c 3 Nov 2022 23:52:03 -0000
@@ -0,0 +1,21 @@
+disable crypto functionality
+
+Index: kitty/data-types.c
+--- kitty/data-types.c.orig
++++ kitty/data-types.c
+@@ -263,7 +263,6 @@ extern int init_Line(PyObject *);
+ extern int init_ColorProfile(PyObject *);
+ extern int init_Screen(PyObject *);
+ extern bool init_fontconfig_library(PyObject*);
+-extern bool init_crypto_library(PyObject*);
+ extern bool init_desktop(PyObject*);
+ extern bool init_fonts(PyObject*);
+ extern bool init_glfw(PyObject *m);
+@@ -346,7 +345,6 @@ PyInit_fast_data_types(void) {
+ if (!init_fonts(m)) return NULL;
+ if (!init_utmp(m)) return NULL;
+ if (!init_loop_utils(m)) return NULL;
+- if (!init_crypto_library(m)) return NULL;
+
+ CellAttrs a;
+ #define s(name, attr) { a.val = 0; a.attr = 1; PyModule_AddIntConstant(m,
#name, shift_to_first_set_bit(a)); }
Index: patches/patch-kitty_remote_control_py
===================================================================
RCS file: patches/patch-kitty_remote_control_py
diff -N patches/patch-kitty_remote_control_py
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-kitty_remote_control_py 3 Nov 2022 23:52:03 -0000
@@ -0,0 +1,40 @@
+disable encrypted communication functionality
+
+Index: kitty/remote_control.py
+--- kitty/remote_control.py.orig
++++ kitty/remote_control.py
+@@ -19,7 +19,7 @@ from .cli import emph, parse_args
+ from .cli_stub import RCOptions
+ from .constants import RC_ENCRYPTION_PROTOCOL_VERSION, appname, version
+ from .fast_data_types import (
+- AES256GCMDecrypt, AES256GCMEncrypt, EllipticCurveKey, get_boss,
++ get_boss,
+ get_options, read_command_response, send_data_to_peer
+ )
+ from .rc.base import (
+@@ -39,7 +39,7 @@ def encode_response_for_peer(response: Any) -> bytes:
+ return b'\x1bP@kitty-cmd' + json.dumps(response).encode('utf-8') +
b'\x1b\\'
+
+
+-def parse_cmd(serialized_cmd: str, encryption_key: EllipticCurveKey) ->
Dict[str, Any]:
++def parse_cmd(serialized_cmd: str, encryption_key: '') -> Dict[str, Any]:
+ try:
+ pcmd = json.loads(serialized_cmd)
+ except Exception:
+@@ -48,6 +48,8 @@ def parse_cmd(serialized_cmd: str, encryption_key: Ell
+ return {}
+ pcmd.pop('password', None)
+ if 'encrypted' in pcmd:
++ raise NotImplementedError("encrypted communication disabled on
OpenBSD")
++ """
+ if pcmd.get('enc_proto', '1') != RC_ENCRYPTION_PROTOCOL_VERSION:
+ log_error(f'Ignoring encrypted rc command with unsupported
protocol: {pcmd.get("enc_proto")}')
+ return {}
+@@ -65,6 +67,7 @@ def parse_cmd(serialized_cmd: str, encryption_key: Ell
+ f'Ignoring encrypted rc command with timestamp {delta /
1e9:.1f} seconds from now.'
+ ' Could be an attempt at a replay attack or an incorrect
clock on a remote machine.')
+ return {}
++ """
+ return pcmd
+
+
Index: patches/patch-setup_py
===================================================================
RCS file: /cvs/ports/x11/kitty/patches/patch-setup_py,v
retrieving revision 1.8
diff -u -p -r1.8 patch-setup_py
--- patches/patch-setup_py 13 Mar 2022 16:22:00 -0000 1.8
+++ patches/patch-setup_py 3 Nov 2022 23:52:03 -0000
@@ -1,11 +1,11 @@
remove -O3 and -march=native optimizations
fix man directory
-disable wayland
+disable wayland, libcrypto
Index: setup.py
--- setup.py.orig
+++ setup.py
-@@ -314,7 +314,6 @@ def init_env(
+@@ -355,7 +355,6 @@ def init_env(
df += ' -Og'
float_conversion = '-Wfloat-conversion'
fortify_source = '' if sanitize and is_macos else '-D_FORTIFY_SOURCE=2'
@@ -13,7 +13,7 @@ Index: setup.py
sanitize_args = get_sanitize_args(cc, ccver) if sanitize else set()
cppflags_ = os.environ.get(
'OVERRIDE_CPPFLAGS', '-D{}DEBUG'.format('' if debug else 'N'),
-@@ -328,12 +327,11 @@ def init_env(
+@@ -369,12 +368,11 @@ def init_env(
werror = '' if ignore_compiler_warnings else '-pedantic-errors -Werror'
std = '' if is_openbsd else '-std=c11'
sanitize_flag = ' '.join(sanitize_args)
@@ -28,7 +28,7 @@ Index: setup.py
)
)
cflags = shlex.split(cflags_) + shlex.split(
-@@ -341,7 +339,7 @@ def init_env(
+@@ -382,7 +380,7 @@ def init_env(
)
ldflags_ = os.environ.get(
'OVERRIDE_LDFLAGS',
@@ -37,7 +37,25 @@ Index: setup.py
)
ldflags = shlex.split(ldflags_)
ldflags.append('-shared')
-@@ -732,7 +730,7 @@ def find_c_files() -> Tuple[List[str], List[str]]:
+@@ -447,7 +445,7 @@ def kitty_env() -> Env:
+ at_least_version('harfbuzz', 1, 5)
+ cflags.extend(pkg_config('libpng', '--cflags-only-I'))
+ cflags.extend(pkg_config('lcms2', '--cflags-only-I'))
+- cflags.extend(libcrypto_cflags)
++ #cflags.extend(libcrypto_cflags)
+ if is_macos:
+ platform_libs = [
+ '-framework', 'Carbon', '-framework', 'CoreText', '-framework',
'CoreGraphics',
+@@ -472,7 +470,7 @@ def kitty_env() -> Env:
+ gl_libs = ['-framework', 'OpenGL'] if is_macos else pkg_config('gl',
'--libs')
+ libpng = pkg_config('libpng', '--libs')
+ lcms2 = pkg_config('lcms2', '--libs')
+- ans.ldpaths += pylib + platform_libs + gl_libs + libpng + lcms2 +
libcrypto_ldflags
++ ans.ldpaths += pylib + platform_libs + gl_libs + libpng + lcms2 #+
libcrypto_ldflags
+ if is_macos:
+ ans.ldpaths.extend('-framework Cocoa'.split())
+ elif not is_openbsd:
+@@ -761,7 +759,7 @@ def find_c_files() -> Tuple[List[str], List[str]]:
def compile_glfw(compilation_database: CompilationDatabase) -> None:
@@ -46,18 +64,18 @@ Index: setup.py
for module in modules.split():
try:
genv = glfw.init_env(env, pkg_config, pkg_version,
at_least_version, test_compile, module)
-@@ -842,8 +840,6 @@ def build_launcher(args: Options, launcher_dir: str =
+@@ -892,8 +890,6 @@ def build_launcher(args: Options, launcher_dir: str =
cflags.append('-g')
if args.profile:
libs.append('-lprofiler')
- else:
-- cflags.append('-O3')
+- cflags.append('-g3' if args.debug else '-O3')
if bundle_type.endswith('-freeze'):
cppflags.append('-DFOR_BUNDLE')
cppflags.append(f'-DPYVER="{sysconfig.get_python_version()}"')
-@@ -885,7 +881,7 @@ def build_launcher(args: Options, launcher_dir: str =
-
+@@ -940,7 +936,7 @@ def build_launcher(args: Options, launcher_dir: str =
+ # Packaging {{{
def copy_man_pages(ddir: str) -> None:
- mandir = os.path.join(ddir, 'share', 'man')
+ mandir = os.path.join(ddir, 'man')
Index: pkg/PLIST
===================================================================
RCS file: /cvs/ports/x11/kitty/pkg/PLIST,v
retrieving revision 1.7
diff -u -p -r1.7 PLIST
--- pkg/PLIST 13 Mar 2022 16:22:00 -0000 1.7
+++ pkg/PLIST 3 Nov 2022 23:52:03 -0000
@@ -234,11 +234,45 @@ lib/kitty/kittens/ssh/${MODPY_PYCACHE}__
lib/kitty/kittens/ssh/${MODPY_PYCACHE}completion.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kittens/ssh/${MODPY_PYCACHE}completion.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kittens/ssh/${MODPY_PYCACHE}completion.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kittens/ssh/${MODPY_PYCACHE}config.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kittens/ssh/${MODPY_PYCACHE}config.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kittens/ssh/${MODPY_PYCACHE}config.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kittens/ssh/${MODPY_PYCACHE}copy.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kittens/ssh/${MODPY_PYCACHE}copy.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kittens/ssh/${MODPY_PYCACHE}copy.${MODPY_PYC_MAGIC_TAG}pyc
lib/kitty/kittens/ssh/${MODPY_PYCACHE}main.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kittens/ssh/${MODPY_PYCACHE}main.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kittens/ssh/${MODPY_PYCACHE}main.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kittens/ssh/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kittens/ssh/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kittens/ssh/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}pyc
lib/kitty/kittens/ssh/completion.py
+lib/kitty/kittens/ssh/config.py
+lib/kitty/kittens/ssh/copy.py
lib/kitty/kittens/ssh/main.py
+lib/kitty/kittens/ssh/options/
+lib/kitty/kittens/ssh/options/__init__.py
+${MODPY_COMMENT}lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}/
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}__init__.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}definition.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}definition.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}definition.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}parse.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}parse.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}parse.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}types.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}types.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}types.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kittens/ssh/options/${MODPY_PYCACHE}utils.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kittens/ssh/options/definition.py
+lib/kitty/kittens/ssh/options/parse.py
+lib/kitty/kittens/ssh/options/types.py
+lib/kitty/kittens/ssh/options/utils.py
+lib/kitty/kittens/ssh/utils.py
lib/kitty/kittens/themes/
lib/kitty/kittens/themes/__init__.py
${MODPY_COMMENT}lib/kitty/kittens/themes/${MODPY_PYCACHE}/
@@ -371,6 +405,9 @@ lib/kitty/kitty/${MODPY_PYCACHE}cli_stub
lib/kitty/kitty/${MODPY_PYCACHE}client.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kitty/${MODPY_PYCACHE}client.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kitty/${MODPY_PYCACHE}client.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kitty/${MODPY_PYCACHE}clipboard.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kitty/${MODPY_PYCACHE}clipboard.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kitty/${MODPY_PYCACHE}clipboard.${MODPY_PYC_MAGIC_TAG}pyc
lib/kitty/kitty/${MODPY_PYCACHE}complete.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kitty/${MODPY_PYCACHE}complete.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kitty/${MODPY_PYCACHE}complete.${MODPY_PYC_MAGIC_TAG}pyc
@@ -383,6 +420,9 @@ lib/kitty/kitty/${MODPY_PYCACHE}constant
lib/kitty/kitty/${MODPY_PYCACHE}debug_config.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kitty/${MODPY_PYCACHE}debug_config.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kitty/${MODPY_PYCACHE}debug_config.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kitty/${MODPY_PYCACHE}entry_points.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kitty/${MODPY_PYCACHE}entry_points.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kitty/${MODPY_PYCACHE}entry_points.${MODPY_PYC_MAGIC_TAG}pyc
lib/kitty/kitty/${MODPY_PYCACHE}file_transmission.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kitty/${MODPY_PYCACHE}file_transmission.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kitty/${MODPY_PYCACHE}file_transmission.${MODPY_PYC_MAGIC_TAG}pyc
@@ -419,12 +459,18 @@ lib/kitty/kitty/${MODPY_PYCACHE}open_act
lib/kitty/kitty/${MODPY_PYCACHE}os_window_size.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kitty/${MODPY_PYCACHE}os_window_size.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kitty/${MODPY_PYCACHE}os_window_size.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kitty/${MODPY_PYCACHE}prewarm.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kitty/${MODPY_PYCACHE}prewarm.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kitty/${MODPY_PYCACHE}prewarm.${MODPY_PYC_MAGIC_TAG}pyc
lib/kitty/kitty/${MODPY_PYCACHE}remote_control.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kitty/${MODPY_PYCACHE}remote_control.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kitty/${MODPY_PYCACHE}remote_control.${MODPY_PYC_MAGIC_TAG}pyc
lib/kitty/kitty/${MODPY_PYCACHE}rgb.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kitty/${MODPY_PYCACHE}rgb.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kitty/${MODPY_PYCACHE}rgb.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kitty/${MODPY_PYCACHE}search_query_parser.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kitty/${MODPY_PYCACHE}search_query_parser.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kitty/${MODPY_PYCACHE}search_query_parser.${MODPY_PYC_MAGIC_TAG}pyc
lib/kitty/kitty/${MODPY_PYCACHE}session.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kitty/${MODPY_PYCACHE}session.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kitty/${MODPY_PYCACHE}session.${MODPY_PYC_MAGIC_TAG}pyc
@@ -434,6 +480,9 @@ lib/kitty/kitty/${MODPY_PYCACHE}shell.${
lib/kitty/kitty/${MODPY_PYCACHE}shell_integration.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kitty/${MODPY_PYCACHE}shell_integration.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kitty/${MODPY_PYCACHE}shell_integration.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/kitty/${MODPY_PYCACHE}shm.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/kitty/${MODPY_PYCACHE}shm.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/kitty/${MODPY_PYCACHE}shm.${MODPY_PYC_MAGIC_TAG}pyc
lib/kitty/kitty/${MODPY_PYCACHE}short_uuid.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
lib/kitty/kitty/${MODPY_PYCACHE}short_uuid.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
lib/kitty/kitty/${MODPY_PYCACHE}short_uuid.${MODPY_PYC_MAGIC_TAG}pyc
@@ -480,6 +529,7 @@ lib/kitty/kitty/choose_entry.py
lib/kitty/kitty/cli.py
lib/kitty/kitty/cli_stub.py
lib/kitty/kitty/client.py
+lib/kitty/kitty/clipboard.py
lib/kitty/kitty/complete.py
lib/kitty/kitty/conf/
lib/kitty/kitty/conf/__init__.py
@@ -502,6 +552,7 @@ lib/kitty/kitty/conf/utils.py
lib/kitty/kitty/config.py
lib/kitty/kitty/constants.py
lib/kitty/kitty/debug_config.py
+lib/kitty/kitty/entry_points.py
@so lib/kitty/kitty/fast_data_types.so
lib/kitty/kitty/file_transmission.py
lib/kitty/kitty/fonts/
@@ -602,6 +653,7 @@ lib/kitty/kitty/options/parse.py
lib/kitty/kitty/options/types.py
lib/kitty/kitty/options/utils.py
lib/kitty/kitty/os_window_size.py
+lib/kitty/kitty/prewarm.py
lib/kitty/kitty/rc/
lib/kitty/kitty/rc/__init__.py
${MODPY_COMMENT}lib/kitty/kitty/rc/${MODPY_PYCACHE}/
@@ -750,9 +802,11 @@ lib/kitty/kitty/rc/set_window_title.py
lib/kitty/kitty/rc/signal_child.py
lib/kitty/kitty/remote_control.py
lib/kitty/kitty/rgb.py
+lib/kitty/kitty/search_query_parser.py
lib/kitty/kitty/session.py
lib/kitty/kitty/shell.py
lib/kitty/kitty/shell_integration.py
+lib/kitty/kitty/shm.py
lib/kitty/kitty/short_uuid.py
lib/kitty/kitty/tab_bar.py
lib/kitty/kitty/tabs.py
@@ -775,9 +829,21 @@ lib/kitty/shell-integration/bash/
lib/kitty/shell-integration/bash/kitty.bash
lib/kitty/shell-integration/fish/
lib/kitty/shell-integration/fish/vendor_completions.d/
+lib/kitty/shell-integration/fish/vendor_completions.d/clone-in-kitty.fish
+lib/kitty/shell-integration/fish/vendor_completions.d/edit-in-kitty.fish
lib/kitty/shell-integration/fish/vendor_completions.d/kitty.fish
lib/kitty/shell-integration/fish/vendor_conf.d/
lib/kitty/shell-integration/fish/vendor_conf.d/kitty-shell-integration.fish
+lib/kitty/shell-integration/ssh/
+${MODPY_COMMENT}lib/kitty/shell-integration/ssh/${MODPY_PYCACHE}/
+lib/kitty/shell-integration/ssh/${MODPY_PYCACHE}askpass.${MODPY_PYC_MAGIC_TAG}${MODPY_PYOEXTENSION}
+lib/kitty/shell-integration/ssh/${MODPY_PYCACHE}askpass.${MODPY_PYC_MAGIC_TAG}opt-2.pyc
+lib/kitty/shell-integration/ssh/${MODPY_PYCACHE}askpass.${MODPY_PYC_MAGIC_TAG}pyc
+lib/kitty/shell-integration/ssh/askpass.py
+lib/kitty/shell-integration/ssh/bootstrap-utils.sh
+lib/kitty/shell-integration/ssh/bootstrap.py
+lib/kitty/shell-integration/ssh/bootstrap.sh
+lib/kitty/shell-integration/ssh/kitty
lib/kitty/shell-integration/zsh/
lib/kitty/shell-integration/zsh/.zshenv
lib/kitty/shell-integration/zsh/completions/
@@ -785,6 +851,8 @@ lib/kitty/shell-integration/zsh/completi
lib/kitty/shell-integration/zsh/kitty-integration
lib/kitty/shell-integration/zsh/kitty.zsh
lib/kitty/terminfo/
+lib/kitty/terminfo/kitty.termcap
+lib/kitty/terminfo/kitty.terminfo
lib/kitty/terminfo/x/
lib/kitty/terminfo/x/xterm-kitty
@man man/man1/kitty.1
@@ -825,6 +893,7 @@ share/doc/kitty/html/_sources/file-trans
share/doc/kitty/html/_sources/generated/
share/doc/kitty/html/_sources/generated/launch.rst.txt
share/doc/kitty/html/_sources/generated/rc.rst.txt
+share/doc/kitty/html/_sources/generated/ssh-copy.rst.txt
share/doc/kitty/html/_sources/glossary.rst.txt
share/doc/kitty/html/_sources/graphics-protocol.rst.txt
share/doc/kitty/html/_sources/index.rst.txt
@@ -842,6 +911,7 @@ share/doc/kitty/html/_sources/kittens/ic
share/doc/kitty/html/_sources/kittens/panel.rst.txt
share/doc/kitty/html/_sources/kittens/query_terminal.rst.txt
share/doc/kitty/html/_sources/kittens/remote_file.rst.txt
+share/doc/kitty/html/_sources/kittens/ssh.rst.txt
share/doc/kitty/html/_sources/kittens/themes.rst.txt
share/doc/kitty/html/_sources/kittens/transfer.rst.txt
share/doc/kitty/html/_sources/kittens/unicode_input.rst.txt
@@ -863,6 +933,7 @@ share/doc/kitty/html/_sources/support.rs
share/doc/kitty/html/_sources/underlines.rst.txt
share/doc/kitty/html/_sources/unscroll.rst.txt
share/doc/kitty/html/_static/
+share/doc/kitty/html/_static/_sphinx_javascript_frameworks_compat.js
share/doc/kitty/html/_static/basic.css
share/doc/kitty/html/_static/check-solid.svg
share/doc/kitty/html/_static/clipboard.min.js
@@ -872,10 +943,12 @@ share/doc/kitty/html/_static/copybutton.
share/doc/kitty/html/_static/copybutton_funcs.js
share/doc/kitty/html/_static/custom.css
share/doc/kitty/html/_static/custom.js
+share/doc/kitty/html/_static/debug.css
share/doc/kitty/html/_static/doctools.js
share/doc/kitty/html/_static/documentation_options.js
share/doc/kitty/html/_static/file.png
share/doc/kitty/html/_static/jquery-3.5.1.js
+share/doc/kitty/html/_static/jquery-3.6.0.js
share/doc/kitty/html/_static/jquery.js
share/doc/kitty/html/_static/kitty.svg
share/doc/kitty/html/_static/language_data.js
@@ -889,6 +962,8 @@ share/doc/kitty/html/_static/scripts/fur
share/doc/kitty/html/_static/scripts/furo.js.LICENSE.txt
share/doc/kitty/html/_static/scripts/furo.js.map
share/doc/kitty/html/_static/searchtools.js
+share/doc/kitty/html/_static/skeleton.css
+share/doc/kitty/html/_static/sphinx_highlight.js
share/doc/kitty/html/_static/styles/
share/doc/kitty/html/_static/styles/furo-extensions.css
share/doc/kitty/html/_static/styles/furo-extensions.css.map
@@ -911,6 +986,7 @@ share/doc/kitty/html/file-transfer-proto
share/doc/kitty/html/generated/
share/doc/kitty/html/generated/launch.html
share/doc/kitty/html/generated/rc.html
+share/doc/kitty/html/generated/ssh-copy.html
share/doc/kitty/html/genindex.html
share/doc/kitty/html/glossary.html
share/doc/kitty/html/graphics-protocol.html
@@ -929,6 +1005,7 @@ share/doc/kitty/html/kittens/icat.html
share/doc/kitty/html/kittens/panel.html
share/doc/kitty/html/kittens/query_terminal.html
share/doc/kitty/html/kittens/remote_file.html
+share/doc/kitty/html/kittens/ssh.html
share/doc/kitty/html/kittens/themes.html
share/doc/kitty/html/kittens/transfer.html
share/doc/kitty/html/kittens/unicode_input.html