If you live in the terminal, kitty is made for you! Cross-platform, fast, feature-rich, GPU based.
This report summarizes scanner evidence for kovidgoyal/kitty, a Python project with 35,228 GitHub stars. SynthScan examined 337,787 lines of code across 906 source files, recording 1962 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 6.0 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 1509 finding(s).
Are imports declared and package/API names verified? 92 finding(s).
Are wrappers, guards, and repeated structures necessary? 1177 finding(s).
Which changes need focused human review? 1962 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1962 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 904 | def get_source_specific_defines(env: Env, src: str) -> Tuple[str, List[str], Optional[List[str]]]: | CODE |
| LOW | setup.py | 929 | def get_source_specific_cflags(env: Env, src: str) -> List[str]: | CODE |
| LOW | setup.py | 1170 | def wayland_protocol_file_name(base: str, ext: str = 'c') -> str: | CODE |
| LOW | setup.py | 1447 | def update_go_generated_files(args: Options, kitty_exe: str) -> None: | CODE |
| LOW | setup.py | 2036 | def create_quick_access_bundle(kapp: str, quake_desc: str = 'Quick access to kitty') -> None: | STRING |
| LOW | setup.py | 2054 | def create_minimal_macos_bundle(args: Options, launcher_dir: str, relocate: bool = False) -> None: | STRING |
| LOW | publish.py | 301 | def make_request_with_retries( | STRING |
| LOW | publish.py | 342 | def update_nightly_description(self, release_id: int) -> None: | STRING |
| LOW⚡ | publish.py | 402 | def print_failed_response_details(self, r: HTTPResponse, msg: str) -> None: | STRING |
| LOW⚡ | publish.py | 416 | def existing_assets_for_release(self, release: Dict[str, Any]) -> List[Dict[str, Any]]: | STRING |
| LOW | publish.py | 529 | def remove_pycache_only_folders() -> None: | STRING |
| LOW | kittens/runner.py | 53 | def import_kitten_main_module(config_dir: str, kitten: str) -> dict[str, Any]: | CODE |
| LOW | kittens/runner.py | 221 | def get_kitten_extra_cli_parsers(kitten: str) -> dict[str, str]: | CODE |
| LOW | kittens/panel/main.py | 45 | def panel_kitten_options_spec() -> str: | CODE |
| LOW | kittens/panel/main.py | 108 | def cli_option_to_lsc_configs_map() -> MappingProxyType[str, tuple[str, ...]]: | CODE |
| LOW | kittens/panel/main.py | 128 | def incrementally_update_layer_shell_config(existing: dict[str, Any], cli_options: Iterable[str]) -> LayerShellConfig: | CODE |
| LOW | kittens/panel/main.py | 153 | def have_config_files_been_updated(config_files: Iterable[str]) -> bool: | CODE |
| LOW | kittens/panel/main.py | 179 | def handle_single_instance_command( | CODE |
| LOW | kittens/tui/handler.py | 91 | def allow_indiscriminate_remote_control(self, enable: bool = True) -> None: | CODE |
| LOW | kittens/tui/handler.py | 241 | def perform_default_key_action(self, key_event: KeyEventType) -> bool: | CODE |
| LOW | kittens/tui/handler.py | 296 | def on_file_transfer_response(self, ftc: 'FileTransmissionCommand') -> None: | CODE |
| LOW | kittens/tui/loop.py | 356 | def total_pending_bytes_to_write(self) -> int: | CODE |
| LOW | kittens/choose_files/main.py | 240 | def relative_path_if_possible(path: str, base: str) -> str: | STRING |
| LOW | kittens/choose_files/main.py | 253 | def format_selection_for_paste(paths: list[str], cwd: str | None, at_prompt: bool) -> str: | STRING |
| LOW | kittens/ssh/utils.py | 121 | def remove_env_var_from_cmdline(key: str, argv: list[str]) -> None: | CODE |
| LOW⚡ | kittens/ssh/utils.py | 134 | def set_single_env_var_in_cmdline(key: str, val: str, argv: list[str]) -> None: | CODE |
| LOW | kittens/ssh/utils.py | 160 | def read_data_from_shared_memory(shm_name: str) -> Any: | CODE |
| LOW | kittens/ssh/utils.py | 257 | def set_server_args_in_cmdline(server_args: list[str], argv: list[str], extra_args: tuple[str, ...] = ('--kitten',), all | CODE |
| LOW | kittens/command_palette/main.py | 129 | def collect_keyboard_bindings( | CODE |
| LOW | kittens/command_palette/main.py | 161 | def relocate_mode_entry_bindings(modes: dict[str, dict[str, list[dict[str, str]]]]) -> None: | CODE |
| LOW | docs/conf.py | 382 | def write_remote_control_protocol_docs() -> None: # {{{ | STRING |
| LOW | docs/notifications.py | 21 | def on_notification_activated(nc: NotificationCommand, which: int) -> None: | CODE |
| LOW | gen/go_code.py | 253 | def generate_kittens_completion() -> None: | CODE |
| LOW | gen/go_code.py | 286 | def completion_for_launch_wrappers(*names: str) -> None: | CODE |
| LOW | gen/go_code.py | 292 | def generate_completions_for_kitty() -> None: | CODE |
| LOW | gen/go_code.py | 412 | def go_code_for_remote_command(name: str, cmd: RemoteCommand, template: str) -> str: | CODE |
| LOW | gen/go_code.py | 515 | def generate_extra_cli_parser(name: str, spec: str) -> None: | CODE |
| LOW | gen/go_code.py | 535 | def kittens_needing_cli_parsers() -> Iterator[str]: | CODE |
| LOW | gen/go_code.py | 847 | def generate_readline_actions() -> str: | STRING |
| LOW | gen/go_code.py | 929 | def generate_textual_mimetypes() -> str: | STRING |
| LOW | gen/wcwidth.py | 209 | def parse_flag_emoji_sequence(spec: str) -> None: | CODE |
| LOW | gen/wcwidth.py | 226 | def parse_emoji_modifier_sequence(spec: str) -> None: | CODE |
| LOW | gen/wcwidth.py | 275 | def parse_grapheme_segmentation() -> None: | CODE |
| LOW | gen/wcwidth.py | 690 | def bitfield_declaration_as_c(name: str, fields: dict[str, int], *alternate_fields: dict[str, int]) -> str: | STRING |
| LOW | gen/wcwidth.py | 835 | def split_into_graphemes_with_table( | STRING |
| LOW | gen/wcwidth.py | 852 | def test_grapheme_segmentation(split_into_graphemes: Callable[[str], Iterator[str]]) -> None: | STRING |
| LOW | gen/key_constants.py | 374 | def generate_functional_table() -> None: | STRING |
| LOW | gen/key_constants.py | 416 | def generate_legacy_text_key_maps() -> None: | STRING |
| LOW | .github/workflows/macos_crash_report.py | 451 | def application_specific_information(self) -> Optional[str]: | CODE |
| LOW | .github/workflows/macos_crash_report.py | 517 | def get_crash_report_from_file(crash_report_file: IO[str]) -> CrashReportBase: | CODE |
| LOW | glad/generate.py | 30 | def strip_trailing_whitespace(c: str) -> str: | CODE |
| LOW | shell-integration/ssh/bootstrap.py | 243 | def exec_zsh_with_integration(): | CODE |
| LOW⚡ | shell-integration/ssh/bootstrap.py | 258 | def exec_fish_with_integration(): | CODE |
| LOW⚡ | shell-integration/ssh/bootstrap.py | 267 | def exec_bash_with_integration(): | CODE |
| LOW⚡ | shell-integration/ssh/bootstrap.py | 276 | def exec_with_shell_integration(): | CODE |
| LOW | kitty/config.py | 20 | def option_names_for_completion() -> tuple[str, ...]: | CODE |
| LOW⚡ | kitty/config.py | 67 | def commented_out_default_config() -> str: | CODE |
| LOW⚡ | kitty/config.py | 73 | def prepare_config_file_for_editing() -> str: | CODE |
| LOW | kitty/config.py | 175 | def add_effective_config_line(key: str, line: str) -> None: | CODE |
| LOW⚡ | kitty/window.py | 1704 | def on_color_scheme_preference_change(self, via_escape_code: bool = False) -> None: | CODE |
| 735 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | dev.sh | 1 | #!/bin/sh | COMMENT |
| LOW | kittens/tui/dircolors.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | kittens/tui/dircolors.py | 41 | TERM vt100 | COMMENT |
| LOW | kittens/diff/diff.go | 21 | // Diff returns an anchored diff of the two texts old and new | COMMENT |
| LOW | kittens/diff/diff.go | 181 | // tgs returns the pairs of indexes of the longest common subsequence | COMMENT |
| LOW | kittens/hints/hints_generator.go | 1 | // License: GPLv3 Copyright: 2026, Kovid Goyal, <kovid at kovidgoyal.net> | COMMENT |
| LOW | kittens/hints/hints_generator.go | 21 | n = 2 | COMMENT |
| LOW | kittens/hints/hints_generator.go | 61 | func rune_to_index_map(alphabet string) *map[rune]int { | COMMENT |
| LOW | tools/rsync/api.go | 1 | // License: GPLv3 Copyright: 2023, Kovid Goyal, <kovid at kovidgoyal.net> | COMMENT |
| LOW | tools/utils/file_at_fd.go | 461 | COMMENT | |
| LOW | tools/utils/file_at_fd_test.go | 461 | // base/ | COMMENT |
| LOW | tools/utils/humanize/times.go | 21 | // Time formats a time into a relative string. | COMMENT |
| LOW | tools/simdstring/generate.sh | 1 | #!/bin/sh | COMMENT |
| LOW | tools/simdstring/benchmark.sh | 1 | #!/bin/sh | COMMENT |
| LOW | tools/simdstring/test.sh | 1 | #!/bin/sh | COMMENT |
| LOW | tools/fzf/types.go | 121 | COMMENT | |
| LOW | gen/rowcolumn-diacritics.txt | 1 | # This file lists the diacritics used to indicate row/column numbers for | COMMENT |
| LOW | 3rdparty/verstable.h | 261 | KEY_TY, and (optionally) VAL_TY, CTX_TY, and header guards, and including the library, e.g.: | COMMENT |
| LOW | 3rdparty/verstable.h | 441 | #define VT_CAT( a, b ) VT_CAT_( a, b ) | COMMENT |
| LOW | 3rdparty/verstable.h | 601 | // In summary, instantiating a template also defines wrappers for the template's types and functions with names in the | COMMENT |
| LOW | 3rdparty/verstable.h | 621 | COMMENT | |
| LOW | 3rdparty/verstable.h | 641 | #define VT_R3_0( ty, fn ) | COMMENT |
| LOW | 3rdparty/verstable.h | 741 | // indicating whether the key in this bucket begins a chain associated with the bucket (Y), and | COMMENT |
| LOW | 3rdparty/verstable.h | 841 | COMMENT | |
| LOW | 3rdparty/verstable.h | 861 | #else | COMMENT |
| LOW | 3rdparty/verstable.h | 881 | _Pragma( "warning( pop )" ) | COMMENT |
| LOW | 3rdparty/verstable.h | 921 | #endif | COMMENT |
| LOW | 3rdparty/verstable.h | 1461 | } | COMMENT |
| LOW | 3rdparty/verstable.h | 1861 | #elif VT_TEMPLATE_COUNT_D1 == 2 | COMMENT |
| LOW | 3rdparty/verstable.h | 1881 | #define VT_TEMPLATE_COUNT_D2 1 | COMMENT |
| LOW | 3rdparty/verstable.h | 1901 | #undef VT_TEMPLATE_COUNT_D2 | COMMENT |
| LOW | 3rdparty/verstable.h | 1921 | #elif VT_TEMPLATE_COUNT_D3 == 6 | COMMENT |
| LOW | 3rdparty/verstable.h | 1941 | #undef CTX_TY | COMMENT |
| LOW | 3rdparty/base64/include/libbase64.h | 1 | #ifndef LIBBASE64_H | COMMENT |
| LOW | 3rdparty/base64/include/libbase64.h | 21 | #endif | COMMENT |
| LOW | 3rdparty/base64/lib/env.h | 1 | #ifndef BASE64_ENV_H | COMMENT |
| LOW | 3rdparty/base64/lib/env.h | 21 | #endif | COMMENT |
| LOW | 3rdparty/base64/lib/env.h | 41 | # define BASE64_HTOBE32(x) (x) | COMMENT |
| LOW | 3rdparty/base64/lib/env.h | 61 | #define BASE64_AEOF 1 | COMMENT |
| LOW | 3rdparty/base64/lib/lib.c | 1 | #include <stdint.h> | COMMENT |
| LOW | 3rdparty/base64/lib/codec_choose.c | 1 | #include <stdbool.h> | COMMENT |
| LOW | 3rdparty/base64/lib/codec_choose.c | 41 | return ((uint64_t)edx << 32) | eax; | COMMENT |
| LOW | 3rdparty/base64/lib/codec_choose.c | 61 | #ifndef bit_SSE41 | COMMENT |
| LOW | 3rdparty/base64/lib/lib_openmp.c | 1 | // This code makes some assumptions on the implementation of | COMMENT |
| LOW | 3rdparty/base64/lib/arch/avx2/codec.c | 1 | #include <stdint.h> | COMMENT |
| LOW | 3rdparty/base64/lib/arch/avx2/codec.c | 21 | #endif | COMMENT |
| LOW | 3rdparty/base64/lib/arch/avx2/enc_reshuffle.c | 21 | 5, 6, 4, 5)); | COMMENT |
| LOW | 3rdparty/base64/lib/arch/avx2/enc_reshuffle.c | 41 | // 0000eeee FF000000 DDDDDD00 00000000 | COMMENT |
| LOW | 3rdparty/base64/lib/arch/avx2/enc_reshuffle.c | 61 | // 00000000 00ffffff 000000dd EEEE0000 | COMMENT |
| LOW | 3rdparty/base64/lib/arch/avx2/enc_loop_asm.c | 1 | // Apologies in advance for combining the preprocessor with inline assembly, | COMMENT |
| LOW | 3rdparty/base64/lib/arch/avx2/enc_loop_asm.c | 41 | LOAD("a", 0, -4) \ | COMMENT |
| LOW | 3rdparty/base64/lib/arch/avx2/enc_loop_asm.c | 101 | COMMENT | |
| LOW | 3rdparty/base64/lib/arch/avx2/dec_reshuffle.c | 1 | static inline __m256i | COMMENT |
| LOW | 3rdparty/base64/lib/arch/sse41/codec.c | 1 | #include <stdint.h> | COMMENT |
| LOW | 3rdparty/base64/lib/arch/sse41/codec.c | 21 | #endif | COMMENT |
| LOW | 3rdparty/base64/lib/arch/neon32/codec.c | 1 | #include <stdint.h> | COMMENT |
| LOW | 3rdparty/base64/lib/arch/neon32/codec.c | 41 | COMMENT | |
| LOW | 3rdparty/base64/lib/arch/neon32/enc_reshuffle.c | 1 | static inline uint8x16x4_t | COMMENT |
| LOW | 3rdparty/base64/lib/arch/sse42/codec.c | 1 | #include <stdint.h> | COMMENT |
| LOW | 3rdparty/base64/lib/arch/sse42/codec.c | 21 | #endif | COMMENT |
| 321 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | benchmark.py | 92 | CODE | |
| LOW | setup.py | 374 | CODE | |
| LOW | setup.py | 424 | CODE | |
| LOW | setup.py | 476 | CODE | |
| LOW | setup.py | 854 | CODE | |
| LOW | setup.py | 929 | CODE | |
| LOW | setup.py | 982 | CODE | |
| LOW | setup.py | 1003 | CODE | |
| LOW | setup.py | 1052 | CODE | |
| LOW | setup.py | 1175 | CODE | |
| LOW | setup.py | 1573 | CODE | |
| LOW | setup.py | 1596 | CODE | |
| LOW | setup.py | 2387 | CODE | |
| LOW | setup.py | 2462 | CODE | |
| LOW | publish.py | 151 | CODE | |
| LOW | publish.py | 301 | CODE | |
| LOW | kittens/tui/handler.py | 257 | CODE | |
| LOW | kittens/tui/dircolors.py | 293 | CODE | |
| LOW | kittens/tui/operations.py | 287 | CODE | |
| LOW | kittens/tui/utils.py | 18 | CODE | |
| LOW | kittens/tui/images.py | 490 | CODE | |
| LOW | kittens/tui/loop.py | 260 | CODE | |
| LOW | kittens/tui/loop.py | 279 | CODE | |
| LOW | kittens/tui/loop.py | 296 | CODE | |
| LOW | kittens/ssh/utils.py | 121 | CODE | |
| LOW | kittens/ssh/utils.py | 257 | CODE | |
| LOW | kittens/ssh/utils.py | 317 | CODE | |
| LOW | kittens/choose_fonts/backend.py | 156 | CODE | |
| LOW | kittens/choose_fonts/backend.py | 211 | CODE | |
| LOW | kittens/hints/main.py | 296 | CODE | |
| LOW | kittens/hints/main.py | 352 | CODE | |
| LOW | kittens/command_palette/main.py | 161 | CODE | |
| LOW | docs/conf.py | 240 | CODE | |
| LOW | docs/conf.py | 382 | CODE | |
| LOW | docs/conf.py | 799 | CODE | |
| LOW | docs/conf.py | 387 | CODE | |
| LOW | docs/conf.py | 450 | CODE | |
| LOW | docs/extract-rst-targets.py | 23 | CODE | |
| LOW | gen/go_code.py | 103 | CODE | |
| LOW | gen/go_code.py | 412 | CODE | |
| LOW | gen/go_code.py | 546 | CODE | |
| LOW | gen/wcwidth.py | 102 | CODE | |
| LOW | gen/wcwidth.py | 235 | CODE | |
| LOW | gen/wcwidth.py | 766 | CODE | |
| LOW | gen/cursors.py | 61 | CODE | |
| LOW | gen/key_constants.py | 416 | CODE | |
| LOW | gen/key_constants.py | 421 | CODE | |
| LOW | gen/__main__.py | 9 | CODE | |
| LOW | .github/workflows/ci.py | 52 | CODE | |
| LOW | .github/workflows/ci.py | 224 | CODE | |
| LOW | .github/workflows/ci.py | 328 | CODE | |
| LOW | .github/workflows/macos_crash_report.py | 59 | CODE | |
| LOW | .github/workflows/macos_crash_report.py | 354 | CODE | |
| LOW | .github/workflows/macos_crash_report.py | 395 | CODE | |
| LOW | .github/workflows/macos_crash_report.py | 451 | CODE | |
| LOW | bypy/macos/__main__.py | 255 | CODE | |
| LOW | bypy/macos/__main__.py | 365 | CODE | |
| LOW | bypy/linux/__main__.py | 79 | CODE | |
| LOW | bypy/linux/__main__.py | 95 | CODE | |
| LOW | shell-integration/ssh/bootstrap.py | 115 | CODE | |
| 244 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 418 | except Exception: | CODE |
| LOW | setup.py | 459 | except Exception: | CODE |
| LOW | setup.py | 872 | except Exception as e: | CODE |
| LOW | setup.py | 1006 | except Exception: | CODE |
| LOW | publish.py | 331 | except Exception as e: | STRING |
| LOW⚡ | publish.py | 406 | except Exception: | STRING |
| LOW | kittens/runner.py | 233 | except Exception: | CODE |
| MEDIUM | kittens/runner.py | 229 | def main() -> None: | CODE |
| LOW | kittens/panel/main.py | 137 | except Exception as e: | CODE |
| LOW | kittens/tui/images.py | 25 | except Exception: | CODE |
| LOW | kittens/tui/images.py | 268 | except Exception: | CODE |
| LOW | kittens/tui/images.py | 498 | except Exception: | CODE |
| LOW | kittens/tui/images.py | 534 | except Exception as e: | CODE |
| LOW | kittens/tui/images.py | 550 | except Exception as e: | CODE |
| LOW | kittens/tui/loop.py | 228 | except Exception: | CODE |
| LOW | kittens/tui/loop.py | 253 | except Exception: | CODE |
| LOW | kittens/tui/loop.py | 292 | except Exception: | CODE |
| LOW | kittens/tui/loop.py | 303 | except Exception: | CODE |
| LOW | kittens/tui/loop.py | 316 | except Exception: | CODE |
| LOW | kittens/tui/loop.py | 449 | except Exception: | CODE |
| LOW | kittens/ssh/utils.py | 183 | except Exception: | CODE |
| LOW | kittens/ssh/utils.py | 193 | except Exception as e: | CODE |
| MEDIUM | kittens/ssh/utils.py | 17 | def ssh_options() -> dict[str, str]: | CODE |
| LOW | kittens/choose_fonts/backend.py | 41 | except Exception: | CODE |
| LOW | kittens/hints/main.py | 374 | except Exception: | STRING |
| LOW | docs/conf.py | 225 | except Exception: | STRING |
| LOW | .github/workflows/ci.py | 81 | except Exception as err: | CODE |
| LOW | bypy/macos/__main__.py | 218 | except Exception as e: | CODE |
| LOW | shell-integration/ssh/bootstrap.py | 315 | except Exception as err: | CODE |
| LOW | kitty/config.py | 42 | except Exception as err: | CODE |
| LOW⚡ | kitty/config.py | 55 | except Exception as err: | CODE |
| LOW⚡ | kitty/config.py | 63 | except Exception as err: | CODE |
| LOW | kitty/config.py | 91 | except Exception as err: | CODE |
| LOW | kitty/config.py | 131 | except Exception as err: | CODE |
| LOW | kitty/os_window_size.py | 63 | except Exception: | CODE |
| LOW | kitty/window.py | 239 | except Exception: | CODE |
| LOW | kitty/window.py | 503 | except Exception as e: | CODE |
| LOW | kitty/window.py | 564 | except Exception: | CODE |
| LOW | kitty/window.py | 982 | except Exception: | CODE |
| LOW | kitty/window.py | 1399 | except Exception: | CODE |
| LOW | kitty/window.py | 1479 | except Exception: | CODE |
| LOW | kitty/window.py | 1491 | except Exception: | CODE |
| LOW | kitty/window.py | 1561 | except Exception: | CODE |
| LOW | kitty/window.py | 1737 | except Exception: | CODE |
| LOW | kitty/window.py | 1759 | except Exception: | CODE |
| LOW | kitty/window.py | 1793 | except Exception: | CODE |
| LOW | kitty/window.py | 1874 | except Exception as err: | CODE |
| LOW | kitty/window.py | 1955 | except Exception: | CODE |
| LOW | kitty/window.py | 2118 | except Exception: | CODE |
| LOW | kitty/update_check.py | 45 | except Exception: | CODE |
| LOW | kitty/update_check.py | 65 | except Exception: | CODE |
| LOW | kitty/update_check.py | 111 | except Exception as e: | CODE |
| MEDIUM | kitty/update_check.py | 42 | def get_released_version() -> str: | CODE |
| MEDIUM | kitty/update_check.py | 106 | def update_check() -> bool: | CODE |
| LOW | kitty/tabs.py | 965 | except Exception: | CODE |
| LOW | kitty/tabs.py | 1539 | except Exception: | CODE |
| LOW | kitty/tabs.py | 1547 | except Exception: | CODE |
| LOW | kitty/tabs.py | 1636 | except Exception: | CODE |
| LOW | kitty/tabs.py | 1855 | except Exception: | CODE |
| LOW | kitty/guess_mime_type.py | 107 | except Exception: | CODE |
| 159 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | benchmark.py | 149 | except OSError: | CODE |
| HIGH | publish.py | 406 | except Exception: | CODE |
| HIGH | kittens/tui/utils.py | 32 | except (KeyboardInterrupt, EOFError): | CODE |
| HIGH | kittens/tui/loop.py | 303 | except Exception: | CODE |
| HIGH | kittens/tui/loop.py | 316 | except Exception: | CODE |
| HIGH | .github/workflows/ci.py | 65 | except ValueError: | CODE |
| HIGH | .github/workflows/macos_crash_report.py | 93 | except (OSError, subprocess.SubprocessError): | CODE |
| HIGH | .github/workflows/macos_crash_report.py | 298 | except json.decoder.JSONDecodeError: | CODE |
| HIGH | bypy/macos/__main__.py | 501 | except FileNotFoundError: | CODE |
| HIGH | shell-integration/ssh/bootstrap.py | 27 | except KeyError: | CODE |
| HIGH | shell-integration/ssh/bootstrap.py | 122 | except EnvironmentError: | CODE |
| HIGH | kitty/shm.py | 134 | except OSError: | CODE |
| HIGH | kitty/shm.py | 199 | except FileNotFoundError: | CODE |
| HIGH | kitty/config.py | 53 | except FileNotFoundError: | CODE |
| HIGH | kitty/config.py | 40 | except FileNotFoundError: | CODE |
| HIGH | kitty/tabs.py | 816 | except OSError: | CODE |
| HIGH | kitty/tabs.py | 821 | except OSError: | CODE |
| HIGH | kitty/constants.py | 60 | except ImportError: | CODE |
| HIGH | kitty/constants.py | 70 | except OSError: | CODE |
| HIGH | kitty/entry_points.py | 107 | except KeyError: | CODE |
| HIGH | kitty/file_transmission.py | 145 | except OSError: | CODE |
| HIGH | kitty/file_transmission.py | 150 | except OSError: | CODE |
| HIGH | kitty/boss.py | 815 | except Exception: | CODE |
| HIGH | kitty/remote_control.py | 512 | except OSError: | CODE |
| HIGH | kitty/remote_control.py | 503 | except OSError: | CODE |
| HIGH | kitty/utils.py | 1067 | except Exception: | CODE |
| HIGH | kitty/window_list.py | 653 | except ValueError: | CODE |
| HIGH | kitty/child.py | 527 | except NotImplementedError: | CODE |
| HIGH | kitty/child.py | 703 | except OSError: | CODE |
| HIGH | kitty/notifications.py | 308 | except ValueError: | CODE |
| HIGH | kitty/options/types.py | 843 | except AttributeError: | CODE |
| HIGH | kitty/shaders/slang.py | 1396 | except FileNotFoundError: | CODE |
| HIGH | kitty/shaders/slang.py | 1408 | except FileNotFoundError: | CODE |
| HIGH | kitty/rc/launch.py | 159 | except ValueError: | CODE |
| HIGH | kitty_tests/atexit.py | 98 | except ChildProcessError: | CODE |
| HIGH | kitty_tests/slang.py | 637 | except (OSError, json.JSONDecodeError, KeyError): | CODE |
| HIGH | kitty_tests/main.py | 367 | except OSError: # already a session leader | CODE |
| HIGH | kitty_tests/main.py | 351 | except OSError: | CODE |
| HIGH | kitty_tests/main.py | 162 | except (OSError, subprocess.TimeoutExpired): | CODE |
| HIGH | kitty_tests/main.py | 345 | except OSError: | CODE |
| HIGH | kitty_tests/panels.py | 14 | except KeyboardInterrupt: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 583 | def set_arches(flags: List[str], *arches: str) -> None: | CODE |
| LOW | setup.py | 1360 | def update_if_changed(path: str, text: str) -> None: | CODE |
| LOW | setup.py | 1447 | def update_go_generated_files(args: Options, kitty_exe: str) -> None: | CODE |
| LOW | publish.py | 342 | def update_nightly_description(self, release_id: int) -> None: | STRING |
| LOW | kittens/runner.py | 106 | def set_debug(kitten: str) -> None: | CODE |
| LOW | kittens/tui/loop.py | 71 | def set_state_for_loop(self, set_raw: bool = True) -> None: | CODE |
| LOW⚡ | kittens/ssh/utils.py | 134 | def set_single_env_var_in_cmdline(key: str, val: str, argv: list[str]) -> None: | CODE |
| LOW⚡ | kittens/ssh/utils.py | 140 | def set_cwd_in_cmdline(cwd: str, argv: list[str]) -> None: | CODE |
| LOW | kittens/ssh/utils.py | 213 | def set_env_in_cmdline(env: dict[str, str], argv: list[str], clone: bool = True) -> None: | CODE |
| LOW | gen/go_code.py | 775 | def update_at_commands() -> None: | STRING |
| LOW | gen/go_code.py | 807 | def update_completion() -> None: | STRING |
| LOW | .github/workflows/ci.py | 171 | def set_slangc() -> None: | CODE |
| LOW | bypy/site.py | 10 | def set_quit() -> None: | CODE |
| LOW | bypy/site.py | 16 | def set_helper() -> None: | CODE |
| LOW | bypy/macos/__main__.py | 237 | def set_id(self, path_to_lib, new_id) -> None: | CODE |
| LOW⚡ | kitty/window.py | 1717 | def set_color_table_color(self, code: int, bvalue: memoryview | None = None) -> None: | CODE |
| LOW | kitty/window.py | 715 | def set_extra(self, extra: str) -> None: | CODE |
| LOW | kitty/window.py | 882 | def update_effective_padding(self) -> None: | CODE |
| LOW | kitty/window.py | 1030 | def set_visible_in_layout(self, val: bool) -> None: | CODE |
| LOW | kitty/window.py | 1073 | def set_geometry(self, new_geometry: WindowGeometry) -> None: | CODE |
| LOW | kitty/window.py | 1178 | def update_title_bar(self, is_active: bool = False) -> None: | CODE |
| LOW | kitty/window.py | 1318 | def set_title(self, title: str | None) -> None: | CODE |
| LOW | kitty/window.py | 1343 | def set_window_title(self, title: str | None = None) -> None: | CODE |
| LOW | kitty/window.py | 1360 | def set_user_var(self, key: str, val: str | bytes | None) -> None: | CODE |
| LOW | kitty/window.py | 1663 | def set_dynamic_color(self, code: int, value: str | bytes | memoryview = '') -> None: | CODE |
| LOW | kitty/window.py | 2204 | def set_logo(self, path: str, position: str = '', alpha: float = -1, png_data: bytes = b'') -> None: | CODE |
| LOW | kitty/window.py | 2860 | def set_marker(self, spec: str | Sequence[str]) -> None: | CODE |
| LOW | kitty/update_check.py | 119 | def update_check_callback(timer_id: int | None) -> None: | CODE |
| LOW | kitty/tabs.py | 273 | def update_progress(self) -> None: | CODE |
| LOW | kitty/tabs.py | 304 | def set_enabled_layouts(self, val: Iterable[str]) -> None: | CODE |
| LOW | kitty/tabs.py | 338 | def _set_current_layout(self, layout_name: str) -> None: | CODE |
| LOW | kitty/tabs.py | 598 | def set_title(self, title: str) -> None: | CODE |
| LOW | kitty/tabs.py | 602 | def update_window_title_bars(self) -> None: | CODE |
| LOW | kitty/tabs.py | 1111 | def set_active_window(self, x: Window | int, for_keep_focus: Window | None = None) -> None: | CODE |
| LOW | kitty/tabs.py | 1579 | def _set_active_tab(self, idx: int, store_in_history: bool = True) -> None: | CODE |
| LOW | kitty/tabs.py | 1608 | def update_tab_bar_data(self) -> None: | CODE |
| LOW | kitty/tabs.py | 1625 | def set_active_tab_idx(self, idx: int) -> None: | CODE |
| LOW | kitty/tabs.py | 2150 | def _set_drag_target_tab(self, tab_id: int) -> None: | CODE |
| LOW | kitty/tabs.py | 2198 | def _update_drag_hover(self, tab_id: int, source_id: int, source_is_window: bool) -> None: | CODE |
| LOW | kitty/tabs.py | 2213 | def _set_window_drop_tab_target(self, target: WindowDropTarget | None = None, window_id: int = 0) -> None: | CODE |
| LOW | kitty/tabs.py | 2280 | def set_drag_over_me(self, over: bool) -> None: | CODE |
| LOW | kitty/tabs.py | 2291 | def _set_drag_target_window(self, window_id: int, quadrant: int = 0, direction: DropDirection | None = None) -> None | CODE |
| LOW | kitty/tabs.py | 2422 | def update_progress(self) -> None: | CODE |
| LOW⚡ | kitty/client.py | 26 | def set_title(*args: Any) -> None: | CODE |
| LOW⚡ | kitty/client.py | 30 | def set_icon(*args: Any) -> None: | CODE |
| LOW | kitty/client.py | 256 | def set_dynamic_color(payload: str) -> None: | CODE |
| LOW | kitty/tab_bar.py | 932 | def update_blank_rects(self, central: Region, tab_bar: Region, vw: int, vh: int) -> None: | CODE |
| LOW⚡ | kitty/session.py | 109 | def set_next_title(self, title: str) -> None: | CODE |
| LOW⚡ | kitty/session.py | 112 | def set_layout(self, val: str) -> None: | CODE |
| LOW⚡ | kitty/session.py | 117 | def set_layout_state(self, val: str) -> None: | CODE |
| LOW | kitty/session.py | 177 | def set_enabled_layouts(self, raw: str) -> None: | CODE |
| LOW | kitty/session.py | 182 | def set_cwd(self, val: str, session_base_dir: str) -> None: | CODE |
| LOW | kitty/keys.py | 104 | def update_keymap(self, global_shortcuts: dict[str, SingleKey] | None = None) -> None: | CODE |
| LOW | kitty/keys.py | 311 | def set_ignore_os_keyboard_processing(self, on: bool) -> None: | CODE |
| LOW | kitty/boss.py | 1681 | def set_font_size(self, new_size: float) -> None: # legacy | CODE |
| LOW | kitty/boss.py | 1755 | def _set_os_window_background_opacity(self, os_window_id: int, opacity: float) -> None: | CODE |
| LOW | kitty/boss.py | 1770 | def set_background_opacity(self, opacity: str) -> None: | CODE |
| LOW | kitty/boss.py | 2144 | def update_tab_bar_data(self, os_window_id: int) -> None: | CODE |
| LOW | kitty/boss.py | 2158 | def _update_drag_over(self, tm: TabManager | None) -> None: | CODE |
| LOW | kitty/boss.py | 2764 | def set_tab_title(self, title: str | None = None) -> None: | CODE |
| 37 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | setup.py | 1691 | make && make docs | CODE |
| HIGH | setup.py | 1709 | make && make docs | CODE |
| HIGH | logo/make.py | 122 | run('ssh', 'ox', 'zsh', '-ilc', '~/bin/update-kitty && python3 ~/kitty-src/logo/make.py remote-macos') | CODE |
| HIGH | kitty/options/types.py | 806 | val = options_dict.get(key, null) | CODE |
| HIGH | kitty/conf/generate.py | 225 | a(' val = options_dict.get(key, null)') | CODE |
| HIGH | kitty/rc/set_spacing.py | 68 | settings+/dict.spacing: An object mapping margins/paddings using canonical form {'margin-top': 50, 'padding-left': n | CODE |
| HIGH⚡ | kitty_tests/dnd.py | 892 | """URI file request for a non-regular file (e.g. /dev/null) returns EINVAL.""" | STRING |
| HIGH⚡ | kitty_tests/datatypes.py | 922 | hb.push(lb.line(1)) | CODE |
| HIGH⚡ | kitty_tests/datatypes.py | 923 | hb.push(lb.line(2)) | CODE |
| HIGH⚡ | kitty_tests/datatypes.py | 930 | hb.push(lb.line(2)) | CODE |
| HIGH⚡ | kitty_tests/datatypes.py | 939 | hb.push(line) | CODE |
| HIGH | kitty_tests/multicell.py | 418 | # Erase characters (aka replace with null) | COMMENT |
| HIGH | kitty_tests/base.py | 252 | ans.push(lb.line(i)) | CODE |
| HIGH | kitty_tests/shell_integration.py | 272 | pty.send_cmd_to_child('mkdir test && ls -a') | STRING |
| HIGH | kitty_tests/shell_integration.py | 275 | self.ae(pty.callbacks.titlebuf[-2:], ['mkdir test && ls -a', '~']) | STRING |
| HIGH | kitty_tests/shell_integration.py | 447 | cmd = 'mkdir test && ls -a' | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | kittens/tui/handler.py | 33 | CODE | |
| LOW | kittens/tui/utils.py | 15 | CODE | |
| LOW | kittens/tui/images.py | 17 | CODE | |
| LOW | kittens/choose_fonts/backend.py | 34 | CODE | |
| LOW | docs/conf.py | 31 | CODE | |
| LOW | kitty/window.py | 141 | CODE | |
| LOW | kitty/window.py | 143 | CODE | |
| LOW | kitty/render_cache.py | 6 | CODE | |
| LOW | kitty/constants.py | 14 | CODE | |
| LOW | kitty/session.py | 22 | CODE | |
| LOW | kitty/session.py | 27 | CODE | |
| LOW | kitty/file_transmission.py | 17 | CODE | |
| LOW | kitty/file_transmission.py | 23 | CODE | |
| LOW | kitty/keys.py | 30 | CODE | |
| LOW | kitty/boss.py | 158 | CODE | |
| LOW | kitty/boss.py | 185 | CODE | |
| LOW | kitty/boss.py | 186 | CODE | |
| LOW | kitty/types.py | 10 | CODE | |
| LOW | kitty/remote_control.py | 39 | CODE | |
| LOW | kitty/marks.py | 6 | CODE | |
| LOW | kitty/cli.py | 9 | CODE | |
| LOW | kitty/utils.py | 13 | CODE | |
| LOW | kitty/utils.py | 13 | CODE | |
| LOW | kitty/utils.py | 51 | CODE | |
| LOW | kitty/utils.py | 51 | CODE | |
| LOW | kitty/utils.py | 54 | CODE | |
| LOW | kitty/utils.py | 56 | CODE | |
| LOW | kitty/child.py | 21 | CODE | |
| LOW | kitty/notifications.py | 12 | CODE | |
| LOW | kitty/notifications.py | 13 | CODE | |
| LOW | kitty/open_actions.py | 11 | CODE | |
| LOW | kitty/options/parse.py | 5 | CODE | |
| LOW | kitty/conf/types.py | 11 | CODE | |
| LOW | kitty/rc/set_os_window_title.py | 11 | CODE | |
| LOW | kitty/rc/get_colors.py | 13 | CODE | |
| LOW | kitty/rc/new_window.py | 9 | CODE | |
| LOW | kitty/rc/run.py | 26 | CODE | |
| LOW | kitty/rc/set_font_size.py | 9 | CODE | |
| LOW | kitty/rc/detach_window.py | 9 | CODE | |
| LOW | kitty/rc/send_key.py | 20 | CODE | |
| LOW | kitty/rc/remove_marker.py | 10 | CODE | |
| LOW | kitty/rc/get_text.py | 10 | CODE | |
| LOW | kitty/rc/set_window_logo.py | 28 | CODE | |
| LOW | kitty/rc/set_tab_color.py | 12 | CODE | |
| LOW | kitty/rc/kitten.py | 9 | CODE | |
| LOW | kitty/rc/last_used_layout.py | 10 | CODE | |
| LOW | kitty/rc/close_tab.py | 10 | CODE | |
| LOW | kitty/rc/scroll_window.py | 10 | CODE | |
| LOW | kitty/rc/create_marker.py | 11 | CODE | |
| LOW | kitty/rc/disable_ligatures.py | 10 | CODE | |
| LOW | kitty/rc/resize_os_window.py | 20 | CODE | |
| LOW | kitty/rc/goto_layout.py | 10 | CODE | |
| LOW | kitty/rc/detach_tab.py | 9 | CODE | |
| LOW | kitty/rc/resize_window.py | 10 | CODE | |
| LOW | kitty/rc/focus_tab.py | 10 | CODE | |
| LOW | kitty/rc/set_background_image.py | 28 | CODE | |
| LOW | kitty/rc/ls.py | 13 | CODE | |
| LOW | kitty/rc/set_user_vars.py | 9 | CODE | |
| LOW | kitty/rc/action.py | 21 | CODE | |
| LOW | kitty/rc/select_window.py | 11 | CODE | |
| 16 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 595 | CODE | |
| LOW | setup.py | 138 | CODE | |
| LOW | publish.py | 301 | CODE | |
| LOW | kittens/tui/operations.py | 203 | CODE | |
| LOW | gen/go_code.py | 669 | CODE | |
| LOW | bypy/macos/__main__.py | 196 | CODE | |
| LOW | kitty/tabs.py | 162 | CODE | |
| LOW | kitty/tabs.py | 782 | CODE | |
| LOW | kitty/tabs.py | 882 | CODE | |
| LOW | kitty/boss.py | 490 | CODE | |
| LOW | kitty/boss.py | 3218 | CODE | |
| LOW | kitty/cli.py | 687 | CODE | |
| LOW | kitty/child.py | 331 | CODE | |
| LOW | kitty/conf/types.py | 724 | CODE | |
| LOW | kitty/rc/send_key.py | 62 | CODE | |
| LOW | kitty_tests/graphics.py | 130 | CODE | |
| LOW | kitty_tests/keys.py | 68 | CODE | |
| LOW | kitty_tests/mouse.py | 20 | CODE | |
| LOW | kitty_tests/notifications.py | 15 | CODE | |
| LOW | kitty_tests/base.py | 315 | CODE | |
| LOW | kitty_tests/base.py | 373 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | kitty/rc/scroll_window.py | 0 | \ --no-response type=bool-set default=false don't wait for a response indicating the success of the action. note that us | STRING |
| HIGH | kitty/rc/focus_tab.py | 0 | \ --no-response type=bool-set default=false don't wait for a response indicating the success of the action. note that us | STRING |
| HIGH | kitty/rc/signal_child.py | 0 | \ --no-response type=bool-set default=false don't wait for a response indicating the success of the action. note that us | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | kitty/tabs.py | 1078 | # Create the group already in its final position and then let the layout | COMMENT |
| MEDIUM | kitty/shaders/slang.py | 1320 | # Create the specializations | COMMENT |
| MEDIUM | kitty_tests/dnd.py | 3264 | # Create a directory entry (X=2 means directory handle=2) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | kitty/utils.py | 1041 | # platform.mac_ver does not work thanks to Apple's stupid "hardening", so just use sw_vers | COMMENT |
| MEDIUM | glfw/cocoa_init.m | 965 | // avoid killing helpers from other processes. This is obviously not robust | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | kittens/command_palette/main.go | 238 | // sectionHeader returns a separator line like " ── label ─────────". | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | kitty/utils.py | 336 | # WARNING: This only works on X11 on other platforms extra_callback will be called | COMMENT |
| LOW | glfw/glx_context.c | 340 | // NOTE: This function must not call any X11 functions, as it is called | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | kitty_tests/dnd.py | 2262 | # Read file from directory | COMMENT |