Feature rich application Launcher for Linux
This report presents the forensic synthetic code analysis of Ulauncher/Ulauncher, a Python project with 4,484 GitHub stars. SynthScan v2.0 examined 18,197 lines of code across 237 source files, recording 474 pattern matches distributed across 14 syntactic categories. The overall adjusted score of 29.9 places this repository in the Moderate 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 474 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 | 31 | def test_legacy_terminal_flags_exit_without_python(flag: str, hint: str) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 47 | def test_legacy_rewrite_flags_substitute_and_warn(legacy: str, replacement: str, tmp_path: Path) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 76 | def test_fast_path_execs_gapplication(tmp_path: Path, argv: list[str], expected_lines: list[str]) -> None: | CODE |
| LOW | tests/test_bin_ulauncher.py | 95 | 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 | 39 | def test_wrap__name_and_description_labels_wrap_instead_of_ellipsizing(self) -> None: | CODE |
| LOW | tests/ui/test_result_widget.py | 51 | def test_wrap__defaults_to_single_ellipsized_line(self) -> None: | CODE |
| LOW | tests/ui/test_result_widget.py | 63 | def test_wrap__highlighting_is_skipped(self) -> 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 | 5 | def test_returns_text_unchanged_when_no_code_tags(self) -> None: | CODE |
| LOW⚡ | tests/ui/preferences/utils/test_ext_utils.py | 9 | def test_converts_code_tags_to_pango_markup(self) -> None: | CODE |
| LOW⚡ | tests/ui/preferences/utils/test_ext_utils.py | 14 | def test_converts_code_tags_with_attributes_to_pango_markup(self) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 44 | def test_run__basic_execution__is_called(self, subprocess_launcher: MagicMock) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 75 | def test_handle_exit__signaled(self) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 85 | def test_handle_exit__rapid_exit(self, time: MagicMock) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_runtime.py | 140 | def test_kill__noop_when_already_reaped(self) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_mode.py | 36 | def test_handle_query__transitioning_extension_waits(mocker: MockerFixture) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_mode.py | 55 | def test_handle_query__loading_timeout_shows_empty(mocker: MockerFixture) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_mode.py | 74 | def test_handle_query__unknown_keyword_shows_message(mocker: MockerFixture) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_mode.py | 88 | def test_errored__while_loading_shows_failure(mocker: MockerFixture) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_mode.py | 105 | def test_errored__while_not_loading_drops_pending_callback() -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_mode.py | 117 | def test_errored__ignores_other_extensions() -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_mode.py | 138 | def test_started__reruns_query_for_active_extension(mocker: MockerFixture) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_mode.py | 151 | def test_started__ignores_other_extensions(mocker: MockerFixture) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_mode.py | 163 | def test_handle_response__streamed_batches_keep_callback_until_final() -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_service.py | 11 | def test_preview_is_never_manageable_even_inside_user_extensions_dir(mocker: MockerFixture) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_service.py | 17 | def test_save_user_preferences__saves_and_sends_changed_values(mocker: MockerFixture) -> None: | CODE |
| LOW | tests/modes/extensions/test_extension_dependencies.py | 41 | def test_get_dependencies_path( | CODE |
| LOW | tests/modes/extensions/test_extension_dependencies.py | 80 | def test_install_without_requirements( | CODE |
| LOW | tests/modes/extensions/test_extension_dependencies.py | 98 | def test_install_failure_maps_to_dependency_error( | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 22 | def test_open__manifest_file__is_read(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 27 | def test_validate__name_empty__exception_raised(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 32 | def test_validate__valid_manifest__no_exceptions_raised(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 36 | def test_validate__prefs_incorrect_type__exception_raised(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 41 | def test_validate__type_kw_empty_name__exception_raised(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 46 | def test_validate__raises_error_if_empty_default_value_for_keyword(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 53 | def test_validate__doesnt_raise_if_empty_default_value_for_non_keyword(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 57 | def test_validate__trigger_missing_name__exception_raised(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 62 | def test_validate__pref_missing_name__exception_raised(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 67 | def test_validate__min_on_non_number__exception_raised(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 74 | def test_validate__max_on_non_number__exception_raised(self) -> None: | CODE |
| LOW⚡ | tests/modes/extensions/test_extension_manifest.py | 81 | def test_validate__checkbox_bool_default__no_exception(self) -> None: | CODE |
| 142 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 | 40 | CODE | |
| LOW | tests/ui/test_result_widget.py | 52 | CODE | |
| LOW | tests/ui/test_result_widget.py | 64 | 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_mode.py | 1 | CODE | |
| LOW | tests/modes/extensions/test_extension_dependencies.py | 1 | 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_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 | |
| LOW | ulauncher/modes/mode.py | 1 | CODE | |
| LOW | ulauncher/modes/extensions/extension_registry.py | 1 | CODE | |
| LOW | ulauncher/modes/extensions/extension_remote.py | 1 | CODE | |
| 85 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 | 100 | def set_query(self, query_str: str, callback: ResultsCallback) -> None: | CODE |
| LOW | ulauncher/gi.py | 31 | __all__ = [ | CODE |
| LOW | ulauncher/gi.py | 192 | def _setup_gio_unix() -> None: | CODE |
| LOW | ulauncher/ui/results_view.py | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/results_view.py | 47 | 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 | 26 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/ulauncher_window.py | 403 | 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 | 59 | 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 | 104 | 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 | 17 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/ui/preferences/utils/ext_handlers.py | 106 | def update_ui() -> None: | CODE |
| LOW | ulauncher/ui/preferences/utils/ext_handlers.py | 157 | def update_ui() -> None: | CODE |
| LOW | ulauncher/ui/preferences/utils/ext_handlers.py | 182 | def update_ui() -> None: | CODE |
| LOW⚡ | ulauncher/ui/preferences/utils/ext_handlers.py | 201 | def update_extension(self, ext: ExtensionRecord, callback: Callable[[], None]) -> None: | CODE |
| LOW⚡ | ulauncher/ui/preferences/utils/ext_handlers.py | 209 | def update_async() -> None: | CODE |
| LOW⚡ | ulauncher/ui/preferences/utils/ext_handlers.py | 213 | def update_ui() -> 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 | 28 | 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 | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_manifest.py | 11 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_mode.py | 22 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_runtime.py | 24 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_record.py | 51 | logger = logging.getLogger(__name__) | CODE |
| LOW | ulauncher/modes/extensions/extension_service.py | 24 | 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 | 57 | 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 |
| 22 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ulauncher/core.py | 64 | CODE | |
| LOW | ulauncher/core.py | 241 | CODE | |
| LOW | ulauncher/core.py | 251 | CODE | |
| LOW | ulauncher/ui/app.py | 298 | CODE | |
| LOW | ulauncher/ui/result_widget.py | 132 | CODE | |
| LOW | ulauncher/ui/preferences/utils/ext_handlers.py | 247 | CODE | |
| LOW | ulauncher/ui/preferences/views/extensions.py | 568 | CODE | |
| LOW | ulauncher/ui/helpers/hotkey_controller.py | 21 | CODE | |
| LOW | ulauncher/modes/extensions/extension_remote.py | 303 | CODE | |
| LOW | ulauncher/modes/extensions/extension_manifest.py | 47 | CODE | |
| LOW | ulauncher/modes/extensions/extension_finder.py | 46 | CODE | |
| LOW | ulauncher/modes/extensions/extension_mode.py | 214 | CODE | |
| LOW | ulauncher/modes/extensions/extension_runtime.py | 145 | CODE | |
| LOW | ulauncher/modes/extensions/extension_service.py | 73 | CODE | |
| LOW | ulauncher/modes/extensions/extension_service.py | 85 | 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 | 91 | CODE | |
| LOW | ulauncher/internals/effect_utils.py | 43 | CODE | |
| LOW | ulauncher/data/json_key_value_conf.py | 18 | 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 | 234 | # 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 | 189 | # ─── Deferred setup functions ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | ulauncher/gi.py | 227 | # ─── Lazy loader (PEP 562) ──────────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tests/data/test_json_conf.py | 45 | assert json_stringify(conf, value_blacklist=[]) == '{"a": null, "b": [], "c": {}, "d": 1}' | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cliff.toml | 21 | filter_commits = true | COMMENT |
| 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 |
|---|---|---|---|---|
| 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 | 39 | When a property is written, don't forget to really send the notification by | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ulauncher/utils/migrate.py | 72 | # Check if already migrated | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ulauncher/core.py | 176 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | ulauncher/internals/result.py | 38 | CODE |