Feature rich application Launcher for Linux
This report presents the forensic synthetic code analysis of Ulauncher/Ulauncher, a Python project with 4,502 GitHub stars. SynthScan v2.0 examined 20,474 lines of code across 248 source files, recording 556 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 31.2 places this repository in the Strong 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).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
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 556 distinct pattern matches across 14 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 | tests/test_core.py | 18 | def test_streamed_render_stamps_query_and_pick(self, mocker: MockerFixture) -> None: | CODE |
| LOW | tests/test_core.py | 34 | def test_activating_drops_pending_stream_paint(self, mocker: MockerFixture) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 52 | def test_legacy_terminal_flags_exit_without_python(flag: str, hint: str) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 68 | def test_legacy_rewrite_flags_substitute_and_warn(legacy: str, replacement: str, tmp_path: Path) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 97 | def test_fast_path_execs_gapplication(tmp_path: Path, argv: list[str], expected_lines: list[str]) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 116 | def test_service_unknown_reports_that_ulauncher_is_not_running(tmp_path: Path, argv: list[str], error: str) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 127 | def test_other_gapplication_errors_pass_through_unchanged(tmp_path: Path) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 136 | def test_bare_invocation_from_a_checkout_starts_it_rather_than_the_installed_ulauncher(tmp_path: Path) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 148 | def test_explicit_show_and_toggle_never_start_ulauncher(tmp_path: Path, argv: list[str]) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 159 | def test_installed_ulauncher_activates_without_asking_dbus_for_the_name_owner(tmp_path: Path) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 192 | def test_fast_path_defers_to_python(tmp_path: Path, argv: list[str]) -> None: | CODE |
| LOW | tests/test_cli.py | 74 | def test_parse_command_aliases( | CODE |
| LOW | tests/test_cli.py | 101 | def test_run_command_dispatches_handler_with_expected_bootstrap_mode( | CODE |
| LOW | tests/test_cli.py | 128 | def test_run_command_warns_when_verbose_set_on_runtimeless_command( | CODE |
| LOW | tests/test_cli.py | 141 | def test_groups_top_level_commands_in_help_output(self) -> None: | CODE |
| LOW | tests/test_cli.py | 159 | def test_subcommand_help_does_not_repeat_top_level_command_groups(self, capsys: pytest.CaptureFixture[str]) -> None: | CODE |
| LOW | tests/test_bootstrap_flags.py | 18 | def test_first_run_flags_are_snapshotted_at_import(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/test_bootstrap_flags.py | 38 | def test_first_run_flags_capture_config_and_state_independently(self, monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | tests/ui/test_result_widget.py | 45 | def test_wrap__name_and_description_labels_wrap_instead_of_ellipsizing(self) -> None: | CODE |
| LOW | tests/ui/test_result_widget.py | 57 | def test_wrap__defaults_to_single_ellipsized_line(self) -> None: | CODE |
| LOW | tests/ui/test_result_widget.py | 69 | def test_wrap__highlighting_is_skipped(self) -> None: | CODE |
| LOW | tests/ui/test_theme.py | 16 | def test_load_legacy_theme__valid__returns_theme(tmp_path: Path) -> None: | CODE |
| LOW | tests/ui/test_theme.py | 21 | def test_load_legacy_theme__null_extend_theme__is_dropped(tmp_path: Path) -> None: | CODE |
| LOW | tests/ui/test_theme.py | 32 | def test_load_legacy_theme__unusable_manifest__returns_none(tmp_path: Path, content: object) -> None: | CODE |
| LOW | tests/ui/test_theme.py | 36 | def test_load_legacy_theme__missing_file__returns_none(tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/ui/test_theme.py | 49 | def test_get_themes__manifest_in_the_user_themes_root__wins_over_the_css_glob(user_themes: Path) -> None: | CODE |
| LOW⚡ | tests/ui/test_theme.py | 59 | def test_get_themes__css_the_root_manifest_does_not_describe__is_still_a_theme(user_themes: Path) -> None: | CODE |
| LOW⚡ | tests/ui/test_theme.py | 67 | def test_get_themes__unusable_root_manifest__leaves_the_css_themes_alone(user_themes: Path) -> None: | CODE |
| LOW | tests/ui/test_results_view.py | 92 | def test_out_of_bounds_select_falls_back_to_first(self, view: ResultsView, items: list[MagicMock]) -> None: | CODE |
| LOW | tests/ui/test_results_view.py | 99 | def test_go_up_from_start_wraps_to_last(self, view: ResultsView, items: list[MagicMock]) -> None: | CODE |
| LOW | tests/ui/test_results_view.py | 113 | def test_go_down_from_last_wraps_to_first(self, view: ResultsView, items: list[MagicMock]) -> None: | CODE |
| LOW | tests/ui/test_results_view.py | 118 | def test_navigation_on_empty_is_noop(self) -> None: | CODE |
| LOW⚡ | tests/ui/test_results_view.py | 134 | def test_select_marks_user_selected(self, view: ResultsView) -> None: | CODE |
| LOW⚡ | tests/ui/test_results_view.py | 140 | def test_apply_selection_uses_default_name_without_marking_user_selected(self, view: ResultsView) -> None: | CODE |
| LOW⚡ | tests/ui/test_results_view.py | 146 | def test_apply_selection_preserves_user_pick(self, view: ResultsView) -> None: | CODE |
| LOW⚡ | tests/ui/test_results_view.py | 155 | def test_apply_selection_falls_back_when_user_pick_gone(self, view: ResultsView) -> None: | CODE |
| LOW⚡ | tests/ui/test_results_view.py | 185 | def test_replace_preserves_user_pick_within_same_query(self, view: ResultsView) -> None: | CODE |
| LOW⚡ | tests/ui/test_results_view.py | 194 | def test_append_grows_list_and_keeps_selection(self, view: ResultsView) -> None: | CODE |
| LOW⚡ | tests/ui/test_results_view.py | 203 | def test_new_query_resets_user_selection(self, view: ResultsView) -> None: | CODE |
| LOW⚡ | tests/ui/preferences/utils/test_ext_utils.py | 21 | def test_report_link_prefers_the_tracker_and_is_omitted_without_urls( | CODE |
| LOW⚡ | tests/ui/preferences/utils/test_ext_utils.py | 27 | def test_missing_module_links_the_issue_tracker(self) -> None: | CODE |
| LOW⚡ | tests/ui/preferences/utils/test_ext_utils.py | 33 | def test_terminated_links_the_issue_tracker(self) -> None: | CODE |
| LOW⚡ | tests/ui/preferences/utils/test_ext_utils.py | 39 | def test_url_is_escaped_into_the_markup(self) -> None: | CODE |
| LOW⚡ | tests/ui/preferences/utils/test_ext_utils.py | 47 | def test_returns_text_unchanged_when_no_code_tags(self) -> None: | CODE |
| LOW⚡ | tests/ui/preferences/utils/test_ext_utils.py | 51 | def test_converts_code_tags_to_pango_markup(self) -> None: | CODE |
| LOW⚡ | tests/ui/preferences/utils/test_ext_utils.py | 56 | def test_converts_code_tags_with_attributes_to_pango_markup(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_record.py | 13 | def test_seed_default_state__applies_the_bundled_defaults(tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_record.py | 21 | def test_seed_default_state__ignores_keys_the_state_rejects(tmp_path: Path) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_record.py | 29 | def test_reload_state__resets_to_the_defaults_when_the_file_is_gone(tmp_path: Path) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_record.py | 101 | def test_display_manifest__unreadable__falls_back_without_raising(tmp_path: Path) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 49 | def test_run__basic_execution__is_called(self, subprocess_launcher: MagicMock) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 60 | def test_handle_output__stderr__records_recent_errors(self) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 84 | def test_read_stdout_line__is_not_treated_as_an_error(self) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 95 | def test_emit_output__wire_encoded__restores_the_extensions_record(self, caplog: LogCaptureFixture) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 109 | def test_emit_output__extensions_own_logger__is_nested_under_the_ext_id(self, caplog: LogCaptureFixture) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 121 | def test_emit_output__extensions_sub_logger__keeps_its_name(self, caplog: LogCaptureFixture) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 133 | def test_handle_exit__signaled(self) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 143 | def test_handle_exit__rapid_exit(self, time: MagicMock) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 198 | def test_kill__noop_when_already_reaped(self) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_mode.py | 25 | def test_handle_query__transitioning_extension_waits(mocker: MockerFixture) -> None: | CODE |
| 216 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | setup.py | 2 | CODE | |
| LOW | tests/test_core.py | 1 | CODE | |
| LOW | tests/test_bin_ulauncher.py | 1 | CODE | |
| LOW | tests/test_cli.py | 1 | CODE | |
| LOW | tests/test_bootstrap_flags.py | 1 | CODE | |
| LOW | tests/ui/test_result_widget.py | 46 | CODE | |
| LOW | tests/ui/test_result_widget.py | 58 | CODE | |
| LOW | tests/ui/test_result_widget.py | 70 | CODE | |
| LOW | tests/ui/test_results_view.py | 1 | CODE | |
| LOW | tests/ui/test_results_view.py | 4 | CODE | |
| LOW | tests/modes/extensions/test_extension_record.py | 1 | CODE | |
| LOW | tests/modes/extensions/test_extension_mode.py | 1 | CODE | |
| LOW | tests/modes/extensions/test_extension_dependencies.py | 1 | CODE | |
| LOW | tests/modes/extensions/test_extension_lifecycle.py | 10 | CODE | |
| LOW | tests/modes/extensions/test_extension_manifest.py | 1 | CODE | |
| LOW | tests/modes/extensions/test_extension_remote.py | 1 | CODE | |
| LOW | tests/modes/extensions/test_extension/main.py | 1 | CODE | |
| LOW | tests/modes/calc/test_calc_mode.py | 1 | CODE | |
| LOW | tests/modes/file_browser/test_file_browser_mode.py | 1 | CODE | |
| LOW | tests/modes/shortcuts/test_shortcut_mode.py | 1 | CODE | |
| LOW | tests/modes/shortcuts/test_shortcuts.py | 1 | CODE | |
| LOW | tests/modes/shortcuts/test_run_script.py | 1 | CODE | |
| LOW | tests/modes/apps/test_app_rankings.py | 1 | CODE | |
| LOW | tests/modes/apps/test_app_result.py | 1 | CODE | |
| LOW | tests/utils/test_json_utils.py | 1 | CODE | |
| LOW | tests/utils/test_subprocess_utils.py | 1 | CODE | |
| LOW | tests/utils/test_socket_msg_controller.py | 1 | CODE | |
| LOW | tests/internals/test_result_buffer.py | 1 | CODE | |
| LOW | tests/internals/test_effect_utils.py | 1 | CODE | |
| LOW | tests/api/test_extension.py | 1 | CODE | |
| LOW | tests/data/test_json_key_value_conf.py | 1 | CODE | |
| LOW | tests/data/test_json_conf.py | 1 | CODE | |
| LOW | ulauncher/init_helpers.py | 1 | CODE | |
| LOW | ulauncher/__init__.py | 4 | CODE | |
| LOW | ulauncher/core.py | 1 | CODE | |
| LOW | ulauncher/gi.py | 12 | CODE | |
| LOW | ulauncher/gi.py | 25 | CODE | |
| LOW | ulauncher/ui/results_view.py | 1 | CODE | |
| LOW | ulauncher/ui/hotkey_dialog.py | 1 | CODE | |
| LOW | ulauncher/ui/load_icon_surface.py | 1 | CODE | |
| LOW | ulauncher/ui/ulauncher_window.py | 1 | CODE | |
| LOW | ulauncher/ui/app.py | 1 | CODE | |
| LOW | ulauncher/ui/result_widget.py | 1 | CODE | |
| LOW | ulauncher/ui/get_icon_path.py | 1 | CODE | |
| LOW | ulauncher/ui/preferences/preferences_window.py | 1 | CODE | |
| LOW | ulauncher/ui/preferences/utils/ext_utils.py | 1 | CODE | |
| LOW | ulauncher/ui/preferences/utils/ext_handlers.py | 1 | CODE | |
| LOW | ulauncher/ui/preferences/utils/sidebar_layout.py | 1 | CODE | |
| LOW | ulauncher/ui/preferences/views/shortcuts.py | 1 | CODE | |
| LOW | ulauncher/ui/preferences/views/preferences.py | 1 | CODE | |
| LOW | ulauncher/ui/preferences/views/__init__.py | 1 | CODE | |
| LOW | ulauncher/ui/preferences/views/about.py | 1 | CODE | |
| LOW | ulauncher/ui/preferences/views/extensions.py | 1 | CODE | |
| LOW | ulauncher/ui/preferences/views/help.py | 1 | CODE | |
| LOW | ulauncher/ui/helpers/tray_icon.py | 4 | CODE | |
| LOW | ulauncher/ui/helpers/monitor.py | 1 | CODE | |
| LOW | ulauncher/ui/helpers/system_theme.py | 1 | CODE | |
| LOW | ulauncher/ui/helpers/theme.py | 1 | CODE | |
| LOW | ulauncher/ui/helpers/text_highlighter.py | 1 | CODE | |
| LOW | ulauncher/ui/helpers/hotkey_controller.py | 1 | CODE | |
| 93 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ulauncher/__init__.py | 6 | __all__ = ["version"] | CODE |
| LOW | ulauncher/core.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/core.py | 104 | def set_query(self, query_str: str, callback: ResultsCallback) -> None: | CODE |
| LOW | ulauncher/gi.py | 31 | __all__ = [ | CODE |
| LOW | ulauncher/gi.py | 195 | def _setup_gio_unix() -> None: | CODE |
| LOW | ulauncher/ui/results_view.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/results_view.py | 53 | def set_max_height(self, height: int) -> None: | CODE |
| LOW | ulauncher/ui/hotkey_dialog.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/hotkey_dialog.py | 43 | def set_hotkey(self, key_name: str = "") -> None: | CODE |
| LOW | ulauncher/ui/load_icon_surface.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/ulauncher_window.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/ulauncher_window.py | 367 | def update_results_max_height(self) -> None: | CODE |
| LOW | ulauncher/ui/ulauncher_window.py | 418 | def set_input(self, query_str: str) -> None: | CODE |
| LOW | ulauncher/ui/app.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/app.py | 60 | def set_query(self, value: str, update_input: bool = True) -> None: | CODE |
| LOW | ulauncher/ui/result_widget.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/result_widget.py | 114 | def set_index(self, index: int) -> None: | CODE |
| LOW | ulauncher/ui/get_icon_path.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/preferences/preferences_window.py | 109 | def _setup_keybindings(self) -> None: | CODE |
| LOW | ulauncher/ui/preferences/preferences_window.py | 125 | def _setup_custom_styling(self) -> None: | CODE |
| LOW | ulauncher/ui/preferences/utils/ext_handlers.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/preferences/utils/ext_handlers.py | 157 | def update_extension(self, ext: ExtensionRecord, callback: Callable[[], None]) -> None: | CODE |
| LOW | ulauncher/ui/preferences/utils/sidebar_layout.py | 81 | def set_items(self, items: Sequence[SidebarItem], active_item_id: str | None = None) -> None: | CODE |
| LOW | ulauncher/ui/preferences/utils/sidebar_layout.py | 118 | def set_empty_placeholder_builder(self, builder: Callable[[], Gtk.Widget] | None) -> None: | CODE |
| LOW | ulauncher/ui/preferences/utils/sidebar_layout.py | 253 | def set_content(self, widget: Gtk.Widget) -> None: | CODE |
| LOW | ulauncher/ui/preferences/views/shortcuts.py | 361 | def _update_icon_button(self) -> None: | CODE |
| LOW | ulauncher/ui/preferences/views/preferences.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/preferences/views/__init__.py | 78 | def set_text(self, text: str) -> None: | CODE |
| LOW | ulauncher/ui/preferences/views/extensions.py | 29 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/helpers/tray_icon.py | 20 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/helpers/monitor.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/helpers/theme.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/helpers/hotkey_controller.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/helpers/hotkey_controller.py | 21 | def _set_hotkey(hotkey: str) -> None: | CODE |
| LOW | ulauncher/ui/helpers/layer_shell.py | 46 | def set_vertical_position(window: Gtk.Window, pos_y: float) -> None: | CODE |
| LOW | ulauncher/modes/extensions/extension_registry.py | 15 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_remote.py | 25 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_manifest.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_mode.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_runtime.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_record.py | 67 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_service.py | 36 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_dependencies.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/calc/calc_mode.py | 84 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/file_browser/file_browser_mode.py | 18 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/file_browser/open_with.py | 8 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/shortcuts/run_script.py | 9 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/shortcuts/shortcut_mode.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/apps/app_result.py | 12 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/apps/launch_app.py | 14 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/apps/try_raise_app.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/apps/app_mode.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/utils/dbus.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/utils/launch_detached.py | 10 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/utils/v5_killer.py | 7 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/utils/environment.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/utils/scheduling.py | 13 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/utils/eventbus.py | 16 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/utils/eventbus.py | 31 | def set_self(self, self_arg: Any) -> None: | CODE |
| LOW | ulauncher/utils/systemd_controller.py | 7 | logger = logging.getLogger(__name__) | CODE |
| 20 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ulauncher/core.py | 68 | CODE | |
| LOW | ulauncher/core.py | 240 | CODE | |
| LOW | ulauncher/core.py | 250 | CODE | |
| LOW | ulauncher/ui/app.py | 296 | CODE | |
| LOW | ulauncher/ui/result_widget.py | 142 | CODE | |
| LOW | ulauncher/ui/preferences/utils/ext_handlers.py | 194 | CODE | |
| LOW | ulauncher/ui/preferences/views/extensions.py | 579 | CODE | |
| LOW | ulauncher/ui/helpers/hotkey_controller.py | 21 | CODE | |
| LOW | ulauncher/modes/extensions/extension_remote.py | 308 | CODE | |
| LOW | ulauncher/modes/extensions/extension_manifest.py | 72 | CODE | |
| LOW | ulauncher/modes/extensions/extension_finder.py | 46 | CODE | |
| LOW | ulauncher/modes/extensions/extension_mode.py | 220 | CODE | |
| LOW | ulauncher/modes/extensions/extension_runtime.py | 179 | CODE | |
| LOW | ulauncher/modes/extensions/extension_record.py | 54 | CODE | |
| LOW | ulauncher/modes/file_browser/file_browser_mode.py | 51 | CODE | |
| LOW | ulauncher/modes/file_browser/file_browser_mode.py | 97 | CODE | |
| LOW | ulauncher/modes/apps/launch_app.py | 47 | CODE | |
| LOW | ulauncher/modes/apps/try_raise_app.py | 10 | CODE | |
| LOW | ulauncher/utils/migrate.py | 86 | CODE | |
| LOW | ulauncher/internals/effect_utils.py | 61 | CODE | |
| LOW | ulauncher/data/json_key_value_conf.py | 20 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ulauncher/ui/preferences/preferences_window.py | 43 | # Create the main UI | COMMENT |
| MEDIUM | ulauncher/ui/preferences/preferences_window.py | 53 | # Create main container | COMMENT |
| MEDIUM | ulauncher/ui/preferences/views/preferences.py | 33 | # Create main container - centers on wide screens, fills on narrow screens | COMMENT |
| MEDIUM | ulauncher/ui/preferences/views/extensions.py | 238 | # Create a vertical box for authors and updated date | COMMENT |
| MEDIUM | ulauncher/ui/preferences/views/help.py | 65 | # Create a horizontal box for each link | COMMENT |
| MEDIUM | ulauncher/utils/untar.py | 9 | # This function is the same as Path.is_relative_to in 3.9, but we can't use that yet | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/modes/calc/test_calc_mode.py | 0 | helper to collect results from callback-based handle_query. | STRING |
| HIGH | tests/modes/file_browser/test_file_browser_mode.py | 0 | helper to collect results from callback-based handle_query. | STRING |
| HIGH | tests/modes/shortcuts/test_shortcut_mode.py | 0 | helper to collect results from callback-based handle_query. | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | ulauncher/gi.py | 37 | # ─── GioUnix compatibility namespace ────────────────────────────────────────── | COMMENT |
| MEDIUM | ulauncher/gi.py | 95 | # ─── DesktopAppInfo wrapper ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ulauncher/gi.py | 192 | # ─── Deferred setup functions ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ulauncher/gi.py | 230 | # ─── Lazy loader (PEP 562) ──────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/data/test_json_conf.py | 44 | assert json_stringify(conf) == '{"a": null, "b": [], "c": {}, "d": 1}' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ulauncher/core.py | 175 | except Exception: | CODE |
| LOW | ulauncher/modes/extensions/extension_service.py | 200 | except Exception: | CODE |
| LOW | ulauncher/utils/scheduling.py | 49 | except Exception: | CODE |
| LOW | ulauncher/utils/eventbus.py | 55 | except Exception: | CODE |
| LOW | ulauncher/utils/json_utils.py | 90 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/modes/extensions/test_extension_lifecycle.py | 165 | # rebind the event bus to the module singleton; the harness service took over the binding | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/api/test_extension.py | 89 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/draft-release.yml | 33 | # make sure to run make sdist after make deb because make deb overwrites the tarball | COMMENT |
| LOW | ulauncher/utils/ewmh.py | 38 | When a property is written, don't forget to really send the notification by | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ulauncher/gi.py | 41 | # * GioUnix was originally a namespace for aliases to Unix-specific functionality in the Gio namespace. | COMMENT |
| LOW | ulauncher/gi.py | 61 | # | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ulauncher/utils/migrate.py | 67 | # Check if already migrated | COMMENT |