:cookie: A full-featured, hackable tiling window manager written and configured in Python (X11 + Wayland)
This report presents the forensic synthetic code analysis of qtile/qtile, a Python project with 5,289 GitHub stars. SynthScan v2.0 examined 84,287 lines of code across 458 source files, recording 712 pattern matches distributed across 16 syntactic categories. The overall adjusted score of 11.1 places this repository in the Low AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 712 distinct pattern matches across 16 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_command.py | 439 | def test_lazy_function_coroutine(manager_nospawn): | CODE |
| LOW | test/test_command.py | 460 | def test_decorators_direct_call(): | CODE |
| LOW | test/test_command.py | 478 | def test_decorators_manager_call(manager): | CODE |
| LOW | test/test_ipc.py | 6 | def test_ipc_json_encoder_supports_sets(): | CODE |
| LOW | test/test_ipc.py | 11 | def test_ipc_json_throws_error_on_unsupported_field(): | CODE |
| LOW | test/test_ipc.py | 25 | def test_ipc_marshall_error_on_unsupported_field(): | CODE |
| LOW | test/test_dgroups.py | 78 | def test_dgroup_spawn_in_group(manager, backend_name): | CODE |
| LOW⚡ | test/test_utils.py | 21 | def test_rgb_from_hex_number_with_alpha(): | CODE |
| LOW⚡ | test/test_utils.py | 25 | def test_rgb_from_hex_string_with_alpha(): | CODE |
| LOW⚡ | test/test_utils.py | 29 | def test_rgb_from_hex_number_with_hex_alpha(): | CODE |
| LOW⚡ | test/test_utils.py | 33 | def test_rgb_from_hex_string_with_hex_alpha(): | CODE |
| LOW⚡ | test/test_utils.py | 94 | def test_guess_terminal_accepts_a_preference(path): | CODE |
| LOW⚡ | test/test_utils.py | 100 | def test_guess_terminal_accepts_a_list_of_preferences(path): | CODE |
| LOW⚡ | test/test_utils.py | 106 | def test_guess_terminal_falls_back_to_defaults(path): | CODE |
| LOW | test/test_utils.py | 152 | async def test_acall_process_pid_tracking(): | CODE |
| LOW | test/test_utils.py | 191 | async def test_acall_process_adds_removes_pid(): | CODE |
| LOW | test/test_utils.py | 201 | async def test_concurrent_acall_processes(): | CODE |
| LOW | test/test_images.py | 76 | def test_get_cairo_surface_bad_input(): | CODE |
| LOW | test/test_images.py | 141 | def test_setting_negative_size(self, png_img): | CODE |
| LOW | test/test_images.py | 180 | def test_resize_rasterization(self, png_img_24): | CODE |
| LOW | test/test_images.py | 231 | def test_copy_operations_independent(self, png_img): | CODE |
| LOW | test/test_images.py | 239 | def test_copy_resources_independent(self, png_img_24, rgba_pixel_data): | CODE |
| LOW | test/test_images.py | 252 | def test_operations_applied_after_cache(self, png_img): | CODE |
| LOW | test/test_images.py | 304 | def test_scale_less_than_one_width(self, png_img, width_factor): | CODE |
| LOW | test/test_images.py | 309 | def test_scale_less_than_one_height(self, png_img, height_factor): | CODE |
| LOW⚡ | test/test_images.py | 339 | def test_resize_less_than_one(self, png_img, width, height): | CODE |
| LOW⚡ | test/test_images.py | 345 | def test_resize_less_than_one_width(self, png_img, width): | CODE |
| LOW⚡ | test/test_images.py | 350 | def test_resize_less_than_one_height(self, png_img, height): | CODE |
| LOW | test/test_images.py | 368 | def test_audio_volume_muted_png(self, loader): | CODE |
| LOW | test/test_group.py | 94 | def test_non_persistent_groups(manager): | CODE |
| LOW⚡ | test/test_hook.py | 34 | def test_cannot_fire_unknown_event(): | CODE |
| LOW⚡ | test/test_hook.py | 40 | def test_hook_calls_subscriber(): | CODE |
| LOW⚡ | test/test_hook.py | 48 | def test_hook_calls_subscriber_async(): | CODE |
| LOW | test/test_hook.py | 62 | def test_hook_calls_subscriber_async_co(): | CODE |
| LOW | test/test_hook.py | 76 | def test_hook_calls_subscriber_async_in_existing_loop(): | CODE |
| LOW | test/test_hook.py | 93 | def test_subscribers_can_be_added_removed(): | CODE |
| LOW | test/test_hook.py | 102 | def test_can_unsubscribe_from_hook(): | CODE |
| LOW | test/test_hook.py | 114 | def test_can_subscribe_to_startup_hooks(manager_nospawn): | CODE |
| LOW | test/test_hook.py | 131 | def inc_startup_complete_calls(): | CODE |
| LOW | test/test_hook.py | 152 | def test_can_update_by_selection_change(manager): | CODE |
| LOW | test/test_hook.py | 160 | def test_can_call_by_selection_notify(manager): | CODE |
| LOW | test/test_hook.py | 184 | def test_custom_hook_registry(): | CODE |
| LOW | test/test_hook.py | 565 | def test_client_focus_by_click(manager_nospawn): | CODE |
| LOW | test/test_hook.py | 595 | def test_client_urgent_hint_changed(manager_nospawn): | CODE |
| LOW | test/test_hook.py | 687 | def test_screens_reconfigured(manager_nospawn): | CODE |
| LOW | test/test_hook.py | 692 | def inc_screens_reconfigured_calls(): | CODE |
| LOW | test/test_hook.py | 705 | def test_current_screen_change(manager_nospawn): | CODE |
| LOW | test/test_hook.py | 710 | def inc_current_screen_change_calls(): | CODE |
| LOW | test/test_hook.py | 731 | def test_transient_hooks_syncronous(): | CODE |
| LOW | test/test_hook.py | 752 | def test_transient_hooks_asyncronous(): | CODE |
| LOW | test/test_hook.py | 773 | def test_transient_hooks_coroutine(): | CODE |
| LOW | test/test_configurable.py | 24 | def test_use_fallback_if_set_to_none(): | CODE |
| LOW | test/test_configurable.py | 37 | def test_dont_use_fallback_if_set(): | CODE |
| LOW | test/test_check.py | 41 | def test_check_default_config(): | CODE |
| LOW | test/test_check.py | 85 | def test_check_bad_config_type(): | CODE |
| LOW | test/test_config.py | 90 | def test_screen_underbar_methods(): | CODE |
| LOW | test/test_config.py | 100 | def test_screen_serial_ordering_the_order(manager_nospawn, minimal_conf_noscreen, monkeypatch): | CODE |
| LOW | test/test_config.py | 123 | def test_generate_screens_too_few(manager_nospawn, minimal_conf_noscreen, monkeypatch): | CODE |
| LOW | test/test_config.py | 153 | def test_generate_screens_too_many(manager_nospawn, minimal_conf_noscreen, monkeypatch): | CODE |
| LOW | test/test_config.py | 182 | def test_generate_screens_serial_matching(manager_nospawn, minimal_conf_noscreen, monkeypatch): | CODE |
| 296 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | libqtile/widget/systray.py | 50 | name = self.qtile.core.conn.atoms.get_name(e.atom) | CODE |
| CRITICAL | libqtile/widget/prompt.py | 635 | self.qtile.core.conn.conn.core.Bell(0) | CODE |
| CRITICAL | libqtile/backend/wayland/cffi/build.py | 501 | tmpdir=Path(__file__).parent.parent.parent.parent.parent.as_posix(), | CODE |
| CRITICAL | libqtile/backend/x11/window.py | 777 | self.qtile.core.conn.conn.core.GrabButton( | CODE |
| CRITICAL | libqtile/backend/x11/window.py | 791 | self.qtile.core.conn.conn.core.UngrabButton( | CODE |
| CRITICAL | libqtile/backend/x11/window.py | 1527 | self.qtile.core.conn.conn.core.DestroyWindow(self.window.wid) | CODE |
| CRITICAL | libqtile/backend/x11/window.py | 1668 | name = self.qtile.core.conn.atoms.get_name(e.atom) | CODE |
| CRITICAL | libqtile/backend/x11/window.py | 1689 | qtile.core.conn.conn.core.ChangeSaveSet(SetMode.Insert, self.window.wid) | CODE |
| CRITICAL | libqtile/backend/x11/window.py | 2059 | self.qtile.core.conn.conn.core.AllowEvents(xcffib.xproto.Allow.ReplayPointer, e.time) | CODE |
| CRITICAL | libqtile/backend/x11/window.py | 2172 | name = self.qtile.core.conn.atoms.get_name(e.atom) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/layouts/test_ratiotile.py | 31 | CODE | |
| LOW | test/layouts/test_ratiotile.py | 151 | CODE | |
| LOW | test/layouts/test_ratiotile.py | 268 | CODE | |
| LOW | libqtile/scratchpad.py | 277 | CODE | |
| LOW | libqtile/scratchpad.py | 396 | CODE | |
| LOW | libqtile/config.py | 631 | CODE | |
| LOW | libqtile/config.py | 645 | CODE | |
| LOW | libqtile/config.py | 1076 | CODE | |
| LOW | libqtile/dgroups.py | 129 | CODE | |
| LOW | libqtile/hook.py | 147 | CODE | |
| LOW | libqtile/utils.py | 465 | CODE | |
| LOW | libqtile/utils.py | 555 | CODE | |
| LOW | libqtile/images.py | 334 | CODE | |
| LOW | libqtile/images.py | 335 | CODE | |
| LOW | libqtile/bar.py | 215 | CODE | |
| LOW | libqtile/bar.py | 361 | CODE | |
| LOW | libqtile/bar.py | 393 | CODE | |
| LOW | libqtile/bar.py | 415 | CODE | |
| LOW | libqtile/bar.py | 535 | CODE | |
| LOW | libqtile/group.py | 110 | CODE | |
| LOW | libqtile/group.py | 304 | CODE | |
| LOW | libqtile/core/manager.py | 127 | CODE | |
| LOW | libqtile/core/manager.py | 541 | CODE | |
| LOW | libqtile/core/manager.py | 762 | CODE | |
| LOW | libqtile/core/manager.py | 821 | CODE | |
| LOW | libqtile/core/manager.py | 909 | CODE | |
| LOW | libqtile/core/manager.py | 962 | CODE | |
| LOW | libqtile/core/manager.py | 1003 | CODE | |
| LOW | libqtile/core/manager.py | 1026 | CODE | |
| LOW | libqtile/core/manager.py | 1361 | CODE | |
| LOW | libqtile/core/manager.py | 1883 | CODE | |
| LOW | libqtile/core/state.py | 42 | CODE | |
| LOW | libqtile/widget/wlaniw.py | 31 | CODE | |
| LOW | libqtile/widget/wlaniw.py | 57 | CODE | |
| LOW | libqtile/widget/launchbar.py | 162 | CODE | |
| LOW | libqtile/widget/currentlayout.py | 119 | CODE | |
| LOW | libqtile/widget/sensors.py | 39 | CODE | |
| LOW | libqtile/widget/vertical_clock.py | 45 | CODE | |
| LOW | libqtile/widget/battery.py | 224 | CODE | |
| LOW | libqtile/widget/battery.py | 307 | CODE | |
| LOW | libqtile/widget/battery.py | 515 | CODE | |
| LOW | libqtile/widget/windowname.py | 57 | CODE | |
| LOW | libqtile/widget/import_error.py | 9 | CODE | |
| LOW | libqtile/widget/volume.py | 60 | CODE | |
| LOW | libqtile/widget/windowtabs.py | 39 | CODE | |
| LOW | libqtile/widget/tasklist.py | 201 | CODE | |
| LOW | libqtile/widget/tasklist.py | 513 | CODE | |
| LOW | libqtile/widget/bluetooth.py | 428 | CODE | |
| LOW | libqtile/widget/bluetooth.py | 482 | CODE | |
| LOW | libqtile/widget/nvidia_sensors.py | 55 | CODE | |
| LOW | libqtile/widget/widgetbox.py | 101 | CODE | |
| LOW | libqtile/widget/prompt.py | 254 | CODE | |
| LOW | libqtile/widget/prompt.py | 367 | CODE | |
| LOW | libqtile/widget/prompt.py | 514 | CODE | |
| LOW | libqtile/widget/prompt.py | 655 | CODE | |
| LOW | libqtile/widget/groupbox.py | 311 | CODE | |
| LOW | libqtile/widget/open_weather.py | 244 | CODE | |
| LOW | libqtile/widget/base.py | 260 | CODE | |
| LOW | libqtile/layout/tile.py | 109 | CODE | |
| LOW | libqtile/layout/floating.py | 90 | CODE | |
| 39 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | builder.py | 46 | f.write("# This file is generated at build time by builder.py\n") | CODE |
| MEDIUM | test/shell_scripts/test_repl_client.py | 12 | # Create a mock socket with recv method | COMMENT |
| MEDIUM | test/widgets/test_widgetbox.py | 15 | # Create a bar and set attributes needed to run widget | COMMENT |
| MEDIUM⚡ | test/widgets/test_keyboardkbdd.py | 51 | # Create a message with the index of the active keyboard | COMMENT |
| MEDIUM⚡ | test/widgets/test_keyboardkbdd.py | 81 | # Create a message with the index of the active keyboard | COMMENT |
| MEDIUM⚡ | test/widgets/test_keyboardkbdd.py | 86 | # Create a message with the index of the active keyboard | COMMENT |
| MEDIUM | test/widgets/test_hdd.py | 41 | # Create a fake stat file | COMMENT |
| MEDIUM | test/widgets/docs_screenshots/conftest.py | 59 | # Define the target folder and check it exists | COMMENT |
| MEDIUM | test/widgets/docs_screenshots/conftest.py | 185 | # Create a function to generate filename | COMMENT |
| MEDIUM | test/widgets/docs_screenshots/ss_hdd.py | 20 | # Create a fake stat file | COMMENT |
| MEDIUM | docs/conf.py | 5 | # This file is execfile()d with the current directory set to its containing dir. | COMMENT |
| MEDIUM | docs/conf.py | 327 | # Define the canonical URL if you are using a custom domain on Read the Docs | COMMENT |
| MEDIUM | libqtile/utils.py | 37 | # Create a list to collect references to tasks so they're not garbage collected | COMMENT |
| MEDIUM | libqtile/bar.py | 305 | # Create a mirror if this widget is already configured but isn't a Mirror | COMMENT |
| MEDIUM | libqtile/core/manager.py | 1464 | # Create the group matching rule | COMMENT |
| MEDIUM | libqtile/extension/dmenu.py | 41 | # Create a clone of dmenu_command, don't use it directly since | COMMENT |
| MEDIUM | libqtile/widget/swaync.py | 84 | # Create a single instance of the reader. | COMMENT |
| MEDIUM | libqtile/widget/notify.py | 71 | # Create a tuple of our default timeouts. Urgency is an integer of 0-2 | COMMENT |
| MEDIUM | libqtile/widget/bluetooth.py | 461 | # Create an object to represent this device and add to our list | COMMENT |
| MEDIUM | …qtile/widget/helpers/status_notifier/statusnotifier.py | 129 | # Create a proxy object connecting for the item. | STRING |
| MEDIUM | …qtile/widget/helpers/status_notifier/statusnotifier.py | 412 | # Create a blank image to hold the icon | COMMENT |
| MEDIUM | libqtile/layout/tree.py | 700 | # Create a new drawer object if the screen is a different height | COMMENT |
| MEDIUM | libqtile/layout/xmonad.py | 1286 | # Create a temporary margin list for the client | COMMENT |
| MEDIUM | libqtile/backend/wayland/core.py | 3 | # This file contains code copied or adapted from pywlroots, | COMMENT |
| MEDIUM | libqtile/backend/wayland/ffi_stub.py | 1 | # This module is used to allow the documentation to build properly | COMMENT |
| MEDIUM | libqtile/backend/x11/drawer.py | 29 | # Create an XCBSurface and pixmap | COMMENT |
| MEDIUM | libqtile/scripts/repl.py | 104 | # Create the objects needed for the client | COMMENT |
| MEDIUM | libqtile/scripts/repl.py | 138 | # Create a session instance | COMMENT |
| MEDIUM | libqtile/scripts/repl.py | 148 | # Create a handler for the Enter key so we can deal with multiline input | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | builder.py | 4 | CODE | |
| LOW | test/backend/wayland/test_window.py | 16 | CODE | |
| LOW | test/widgets/test_check_updates.py | 2 | CODE | |
| LOW | test/widgets/docs_screenshots/ss_bluetooth.py | 3 | CODE | |
| LOW | docs/qtile_docs/templates/__init__.py | 1 | CODE | |
| LOW | docs/qtile_docs/templates/__init__.py | 2 | CODE | |
| LOW | docs/qtile_docs/templates/__init__.py | 3 | CODE | |
| LOW | docs/qtile_docs/templates/__init__.py | 4 | CODE | |
| LOW | docs/qtile_docs/templates/__init__.py | 4 | CODE | |
| LOW | docs/qtile_docs/templates/__init__.py | 8 | CODE | |
| LOW | docs/qtile_docs/templates/__init__.py | 9 | CODE | |
| LOW | libqtile/confreader.py | 1 | CODE | |
| LOW | libqtile/scratchpad.py | 1 | CODE | |
| LOW | libqtile/config.py | 1 | CODE | |
| LOW | libqtile/utils.py | 1 | CODE | |
| LOW | libqtile/images.py | 1 | CODE | |
| LOW | libqtile/bar.py | 1 | CODE | |
| LOW | libqtile/lazy.py | 1 | CODE | |
| LOW | libqtile/core/manager.py | 1 | CODE | |
| LOW | libqtile/core/state.py | 1 | CODE | |
| LOW | libqtile/widget/base.py | 1 | CODE | |
| LOW | libqtile/widget/helpers/status_notifier/__init__.py | 1 | CODE | |
| LOW | libqtile/widget/helpers/status_notifier/__init__.py | 1 | CODE | |
| LOW | libqtile/widget/helpers/status_notifier/__init__.py | 1 | CODE | |
| LOW | libqtile/layout/bsp.py | 1 | CODE | |
| LOW | libqtile/layout/__init__.py | 22 | CODE | |
| LOW | libqtile/layout/__init__.py | 23 | CODE | |
| LOW | libqtile/layout/__init__.py | 24 | CODE | |
| LOW | libqtile/layout/__init__.py | 25 | CODE | |
| LOW | libqtile/layout/__init__.py | 26 | CODE | |
| LOW | libqtile/layout/__init__.py | 27 | CODE | |
| LOW | libqtile/layout/__init__.py | 28 | CODE | |
| LOW | libqtile/layout/__init__.py | 29 | CODE | |
| LOW | libqtile/layout/__init__.py | 30 | CODE | |
| LOW | libqtile/layout/__init__.py | 31 | CODE | |
| LOW | libqtile/layout/__init__.py | 32 | CODE | |
| LOW | libqtile/layout/__init__.py | 33 | CODE | |
| LOW | libqtile/layout/__init__.py | 34 | CODE | |
| LOW | libqtile/layout/__init__.py | 35 | CODE | |
| LOW | libqtile/layout/__init__.py | 36 | CODE | |
| LOW | libqtile/layout/__init__.py | 36 | CODE | |
| LOW | libqtile/layout/__init__.py | 36 | CODE | |
| LOW | libqtile/layout/__init__.py | 37 | CODE | |
| LOW | libqtile/layout/screensplit.py | 1 | CODE | |
| LOW | libqtile/layout/base.py | 1 | CODE | |
| LOW | libqtile/backend/__init__.py | 1 | CODE | |
| LOW | libqtile/backend/wayland/drawer.py | 1 | CODE | |
| LOW | libqtile/backend/wayland/window.py | 1 | CODE | |
| LOW | libqtile/backend/wayland/idle_inhibit.py | 1 | CODE | |
| LOW | libqtile/backend/wayland/__init__.py | 3 | CODE | |
| LOW | libqtile/backend/x11/drawer.py | 1 | CODE | |
| LOW | libqtile/backend/base/drawer.py | 1 | CODE | |
| LOW | libqtile/backend/base/window.py | 1 | CODE | |
| LOW | libqtile/backend/base/idle_inhibit.py | 1 | CODE | |
| LOW | libqtile/backend/base/__init__.py | 1 | CODE | |
| LOW | libqtile/backend/base/__init__.py | 2 | CODE | |
| LOW | libqtile/backend/base/__init__.py | 3 | CODE | |
| LOW | libqtile/backend/base/__init__.py | 4 | CODE | |
| LOW | libqtile/backend/base/__init__.py | 4 | CODE | |
| LOW | libqtile/backend/base/__init__.py | 4 | CODE | |
| 9 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | builder.py | 33 | except Exception as e: | CODE |
| LOW | test/helpers.py | 248 | except Exception: | CODE |
| MEDIUM | test/helpers.py | 221 | def run_qtile(): | CODE |
| LOW | test/scripts/window.py | 71 | except Exception as e: | CODE |
| MEDIUM | test/scripts/window.py | 62 | def line_notify(line): | CODE |
| LOW | libqtile/config.py | 515 | except Exception: | STRING |
| LOW | libqtile/notify.py | 119 | except Exception: | CODE |
| LOW | libqtile/notify.py | 181 | except Exception: | CODE |
| LOW | libqtile/notify.py | 193 | except Exception: | CODE |
| LOW | libqtile/bar.py | 353 | except Exception: | CODE |
| LOW | libqtile/bar.py | 703 | except Exception: | CODE |
| LOW | libqtile/group.py | 131 | except Exception: | CODE |
| LOW | libqtile/lazy.py | 148 | except Exception: | CODE |
| LOW | libqtile/core/manager.py | 131 | except Exception as e: | CODE |
| LOW | libqtile/core/manager.py | 302 | except Exception as error: | CODE |
| LOW | libqtile/core/manager.py | 336 | except Exception as error: | CODE |
| LOW | libqtile/core/manager.py | 1355 | except Exception as error: | CODE |
| MEDIUM | libqtile/core/manager.py | 649 | def update_desktops(self) -> None: | CODE |
| LOW | libqtile/widget/swaync.py | 69 | except Exception: | CODE |
| LOW | libqtile/widget/gen_poll_url.py | 73 | except Exception: | CODE |
| LOW | libqtile/widget/nvidia_sensors.py | 72 | except Exception: | CODE |
| LOW | libqtile/widget/base.py | 159 | except Exception: | CODE |
| LOW | libqtile/widget/base.py | 860 | except Exception: | CODE |
| LOW | …qtile/widget/helpers/status_notifier/statusnotifier.py | 672 | except Exception as err: | CODE |
| MEDIUM | …qtile/widget/helpers/status_notifier/statusnotifier.py | 669 | def item_added(self, item, service, future): | CODE |
| LOW | libqtile/backend/x11/core.py | 369 | except Exception: | CODE |
| LOW | libqtile/backend/base/idle_notify.py | 35 | except Exception: | CODE |
| LOW | libqtile/scripts/check.py | 107 | except Exception: | CODE |
| LOW | libqtile/scripts/start.py | 65 | except Exception: | CODE |
| LOW | libqtile/scripts/start.py | 102 | except Exception: | CODE |
| MEDIUM | libqtile/scripts/start.py | 83 | def start(options): | CODE |
| LOW | libqtile/interactive/repl.py | 80 | except Exception: | CODE |
| LOW | libqtile/interactive/repl.py | 111 | except Exception: | CODE |
| LOW | libqtile/command/interface.py | 427 | except Exception: | CODE |
| LOW | libqtile/command/base.py | 291 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/qtile_docs/templates/__init__.py | 11 | __all__ = [ | CODE |
| LOW | libqtile/config.py | 738 | def set_wallpaper(self, path: str, mode: str | None = None) -> None: | CODE |
| LOW | libqtile/popup.py | 88 | def set_border(self, color: ColorType) -> None: | CODE |
| LOW | libqtile/bar.py | 800 | def set_layer(self) -> None: | CODE |
| LOW | libqtile/core/lifecycle.py | 8 | __all__ = [ | CODE |
| LOW | libqtile/core/manager.py | 649 | def update_desktops(self) -> None: | CODE |
| LOW | libqtile/widget/memory.py | 5 | __all__ = ["Memory"] | CODE |
| LOW | libqtile/widget/graph.py | 12 | __all__ = [ | CODE |
| LOW | libqtile/widget/volume.py | 11 | __all__ = [ | CODE |
| LOW | libqtile/widget/keyboardlayout.py | 28 | def set_keyboard(self, layout: str, options: str | None) -> None: | CODE |
| LOW | libqtile/widget/keyboardlayout.py | 59 | def set_keyboard(self, layout: str, options: str | None) -> None: | CODE |
| LOW | libqtile/widget/keyboardlayout.py | 90 | def set_keyboard(self, layout: str, options: str | None) -> None: | CODE |
| LOW | libqtile/layout/__init__.py | 1 | __all__ = [ | CODE |
| LOW | libqtile/layout/screensplit.py | 160 | def _set_hooks(self) -> None: | CODE |
| LOW | libqtile/backend/wayland/window.py | 316 | def set_buffer_with_damage(self, offsetx: int, offsety: int, width: int, height: int) -> None: | CODE |
| LOW | libqtile/backend/wayland/window.py | 384 | def set_title_cb(title: ffi.CData, userdata: ffi.CData) -> None: | CODE |
| LOW | libqtile/backend/wayland/window.py | 390 | def set_app_id_cb(app_id: ffi.CData, userdata: ffi.CData) -> None: | CODE |
| LOW | libqtile/backend/wayland/window.py | 753 | def _update_fullscreen(self, do_full: bool, old_state: FloatStates) -> None: | CODE |
| LOW | libqtile/backend/wayland/window.py | 794 | def _update_maximized(self, do_max: bool, old_state: FloatStates) -> None: | CODE |
| LOW | libqtile/backend/wayland/window.py | 811 | def _update_minimized(self, do_min: bool, old_state: FloatStates) -> None: | CODE |
| LOW | libqtile/backend/wayland/window.py | 890 | def set_position_floating(self, x: int, y: int) -> None: | CODE |
| LOW | libqtile/backend/wayland/window.py | 894 | def set_position(self, x: int, y: int) -> None: | CODE |
| LOW | libqtile/backend/wayland/window.py | 913 | def set_size_floating(self, w: int, h: int) -> None: | CODE |
| LOW | libqtile/backend/wayland/core.py | 292 | def update_backend_log_level(self) -> None: | CODE |
| LOW | libqtile/backend/wayland/core.py | 766 | def set_locked(self, locked: bool) -> None: | CODE |
| LOW | libqtile/backend/x11/window.py | 581 | def update_wm_class(self) -> None: | CODE |
| LOW | libqtile/backend/x11/core.py | 465 | def update_client_lists(self) -> None: | CODE |
| LOW | libqtile/backend/x11/core.py | 488 | def update_desktops(self, groups, index: int) -> None: | CODE |
| LOW⚡ | libqtile/backend/base/window.py | 359 | def set_position_floating(self, x: int, y: int) -> None: | CODE |
| LOW⚡ | libqtile/backend/base/window.py | 364 | def set_position(self, x: int, y: int) -> None: | CODE |
| LOW⚡ | libqtile/backend/base/window.py | 372 | def set_size_floating(self, w: int, h: int) -> None: | CODE |
| LOW | libqtile/backend/base/window.py | 471 | def set_opacity(self, opacity: float) -> None: | CODE |
| LOW | libqtile/backend/base/idle_inhibit.py | 98 | def set_hooks(self) -> None: | CODE |
| LOW | libqtile/backend/base/idle_inhibit.py | 148 | def update_user_inhibitors(self) -> None: | CODE |
| LOW | libqtile/backend/base/core.py | 55 | def update_desktops(self, groups: list[_Group], index: int) -> None: | CODE |
| LOW | libqtile/backend/base/core.py | 129 | def update_backend_log_level(self) -> None: | CODE |
| LOW | libqtile/backend/base/core.py | 147 | def set_idle_inhibitor(self) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | libqtile/extension/command_set.py | 14 | 'play/pause': '[ $(mocp -i | wc -l) -lt 2 ] && mocp -p || mocp -G', | STRING |
| HIGH | libqtile/widget/graph.py | 219 | self.push(push_value) | CODE |
| HIGH | libqtile/widget/graph.py | 221 | self.push(self.values[0]) | CODE |
| HIGH | libqtile/widget/graph.py | 255 | self.push(val["MemTotal"] - val["MemFree"] - val["Buffers"] - val["Cached"]) | CODE |
| HIGH | libqtile/widget/graph.py | 292 | self.push(swap) | CODE |
| HIGH | libqtile/widget/graph.py | 335 | self.push(change) | CODE |
| HIGH | libqtile/widget/graph.py | 377 | self.push(val) | CODE |
| HIGH | libqtile/widget/graph.py | 410 | self.push(val) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_window.py | 307 | # Check if the position matches | COMMENT |
| LOW | test/helpers.py | 425 | # Set GDK_BACKEND to x11, since in wayland, the window requieres | COMMENT |
| LOW | test/test_when.py | 49 | # Check if the test window is alive and tiled | COMMENT |
| LOW | test/widgets/docs_screenshots/conftest.py | 48 | # Check if widget is in the key dict | COMMENT |
| LOW | docs/qtile_docs/commands.py | 58 | # Check if method has been exposed to the command graph | COMMENT |
| LOW | libqtile/confreader.py | 105 | # Check if the module is in the config folder or subfolder | COMMENT |
| LOW | libqtile/utils.py | 523 | # Check if message sent successfully | COMMENT |
| LOW | libqtile/bar.py | 207 | # Check if colours are valid but don't convert to rgba here | COMMENT |
| LOW | libqtile/core/manager.py | 816 | # Check if any user-defined inhibitor rules match the window | COMMENT |
| LOW | libqtile/widget/bluetooth.py | 453 | # Check if object is a valid bluetooth device and ignore it if not | COMMENT |
| LOW | libqtile/widget/check_updates.py | 93 | # Check if distro name is valid. | STRING |
| LOW | libqtile/widget/mpris2widget.py | 222 | # Check if the current player has closed | COMMENT |
| LOW | libqtile/widget/pulse_volume.py | 52 | # Check if we were previously connected to the server and, | COMMENT |
| LOW | …qtile/widget/helpers/status_notifier/statusnotifier.py | 550 | # Check if one of our registered items or hosts has been removed. | COMMENT |
| LOW | …qtile/widget/helpers/status_notifier/statusnotifier.py | 701 | # Check if the interface is in out list of items and, if so, | COMMENT |
| LOW | libqtile/backend/x11/window.py | 937 | # Check if this window is focused | COMMENT |
| LOW | libqtile/backend/x11/window.py | 1327 | # Check if we need to restack a previously focused fullscreen window | COMMENT |
| LOW | libqtile/scripts/launch.py | 13 | # Open the file descriptor | COMMENT |
| LOW | libqtile/command/interface.py | 416 | # Check if method is bound, if itis, insert magic self | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/widgets/docs_screenshots/ss_gmail_checker.py | 41 | # display_fmt="unseen[{0}]", | COMMENT |
| LOW | docs/conf.py | 1 | # | COMMENT |
| LOW | docs/conf.py | 101 | master_doc = "index" | COMMENT |
| LOW | docs/conf.py | 121 | # non-false value, then it is used: | COMMENT |
| LOW | docs/conf.py | 141 | # output. They are ignored by default. | COMMENT |
| LOW | docs/conf.py | 161 | # further. For a list of options available for each theme, see the | COMMENT |
| LOW | docs/conf.py | 181 | # pixels large. | COMMENT |
| LOW | docs/conf.py | 201 | smartquotes = False | COMMENT |
| LOW | docs/conf.py | 221 | COMMENT | |
| LOW | docs/conf.py | 241 | COMMENT | |
| LOW | docs/conf.py | 261 | # For "manual" documents, if this is true, then toplevel headings are parts, | COMMENT |
| LOW | libqtile/config.py | 441 | self.qtile: Qtile | None = None | COMMENT |
| LOW | libqtile/widget/base.py | 21 | # will have to be adapted too, in general. ORIENTATION_NONE is only added for | COMMENT |
| LOW | libqtile/resources/default_config.py | 101 | layouts = [ | COMMENT |
| LOW | libqtile/backend/wayland/core.py | 1 | # Copyright (c) 2018 Sean Vig | COMMENT |
| LOW | libqtile/backend/wayland/core.py | 21 | # used to endorse or promote products derived from this Software without | COMMENT |
| LOW | libqtile/backend/wayland/qw/util.c | 1 | #include "util.h" | COMMENT |
| LOW | libqtile/backend/wayland/qw/server.c | 1 | #include <libinput.h> | COMMENT |
| LOW | libqtile/backend/wayland/qw/server.c | 21 | #include "output.h" | COMMENT |
| LOW | libqtile/backend/wayland/qw/xdg-view.c | 1 | #include "xdg-view.h" | COMMENT |
| LOW | libqtile/backend/wayland/qw/internal-view.c | 1 | #include "internal-view.h" | COMMENT |
| LOW | libqtile/backend/wayland/qw/server.h | 1 | #ifndef SERVER_H | COMMENT |
| LOW | libqtile/backend/wayland/qw/server.h | 21 | #include <wlr/types/wlr_export_dmabuf_v1.h> | COMMENT |
| LOW | libqtile/backend/wayland/qw/server.h | 41 | #include <wlr/types/wlr_session_lock_v1.h> | COMMENT |
| LOW | libqtile/backend/wayland/qw/xwayland-view.c | 1 | #include "xwayland-view.h" | COMMENT |
| LOW | libqtile/backend/wayland/qw/output.c | 1 | #include "output.h" | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/test_utils.py | 170 | # For P_PID calls (specific PID), just return None (handled) | COMMENT |
| LOW | test/widgets/test_stock_ticker.py | 53 | # We don't know what locale is on the testing system but we can just use | COMMENT |
| LOW | test/widgets/docs_screenshots/ss_widgetbox.py | 32 | # As there are no other widgets here, we can just add up the length of all widgets. | COMMENT |
| LOW | libqtile/__init__.py | 36 | # Otherwise, just use ctypes. | COMMENT |
| LOW | libqtile/widget/graph.py | 340 | # so I'll just return the interface that has received the most traffic. | COMMENT |
| LOW | libqtile/widget/tasklist.py | 285 | # if no windows present for current group just return empty list | COMMENT |
| LOW | libqtile/widget/tasklist.py | 443 | # Rather than dealing with alpha blending issues, we just set border width | COMMENT |
| LOW | libqtile/widget/groupbox.py | 86 | # Rather than dealing with alpha blending issues, we just set border width | COMMENT |
| LOW | libqtile/widget/stock_ticker.py | 58 | # since there are only two and one is "Meta Data", we can just use the | COMMENT |
| LOW | libqtile/interactive/iqshell_kernel.py | 24 | # if no command sent, just return | COMMENT |
| LOW | libqtile/command/interface.py | 345 | # lists/dicts of types out of strings; just pass on whatever we | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | test/helpers.py | 0 | get a list of all windows in ascending order of z position | STRING |
| HIGH | test/backend/wayland/conftest.py | 0 | get a list of all windows in ascending order of z position | STRING |
| HIGH | test/backend/x11/conftest.py | 0 | get a list of all windows in ascending order of z position | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | libqtile/config.py | 418 | CODE | |
| LOW | libqtile/config.py | 785 | CODE | |
| LOW | libqtile/config.py | 1010 | CODE | |
| LOW | libqtile/utils.py | 465 | CODE | |
| LOW | libqtile/backend/wayland/window.py | 841 | CODE | |
| LOW | libqtile/backend/wayland/cffi/build.py | 49 | CODE | |
| LOW | libqtile/backend/x11/window.py | 1895 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/backend/wayland/test_window.py | 101 | # TODO: Add test for bring_front_click | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | libqtile/bar.py | 706 | # We need to check if there is any unoccupied space in the bar | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | libqtile/lazy.py | 41 | def my_function(qtile, pos_arg, keyword_arg=False): | STRING |