trcc-linux 9.7.0__tar.gz → 9.7.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/.gitignore +9 -26
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/PKG-INFO +8 -5
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/README.md +4 -4
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/pyproject.toml +12 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/__main__.py +1 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/__version__.py +1 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/_boot.py +8 -8
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/device/bulk_lcd.py +46 -5
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/device/ly_lcd.py +16 -2
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/diagnostics/health.py +64 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/infra/logging.py +27 -4
- trcc_linux-9.7.2/src/trcc/adapters/infra/send_scheduler.py +111 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/render/qt.py +41 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/aggregator.py +56 -18
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/nvml.py +55 -2
- trcc_linux-9.7.2/src/trcc/adapters/system/_elevate.py +48 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/system/_hotplug.py +58 -13
- trcc_linux-9.7.2/src/trcc/adapters/system/_selinux.py +107 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/system/_udev.py +12 -24
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/system/linux.py +10 -3
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/theme/cloud.py +28 -13
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/app.py +252 -19
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/commands/__init__.py +6 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/commands/_helpers.py +75 -4
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/commands/device.py +67 -11
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/commands/led.py +71 -29
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/commands/system.py +156 -104
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/commands/theme.py +86 -37
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/events.py +29 -4
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/led_models.py +43 -10
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/models.py +88 -15
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/ports.py +187 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/protocol.py +62 -30
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/registry.py +0 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/results.py +30 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/variants.py +18 -20
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/daemon.py +35 -5
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ipc.py +1 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/proxy.py +2 -2
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/_dc.py +36 -7
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/cloud_theme.py +8 -5
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/data_install.py +5 -0
- trcc_linux-9.7.2/src/trcc/services/device_sender.py +248 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/display.py +154 -51
- trcc_linux-9.7.2/src/trcc/services/led_animation_loop.py +105 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/led_segment.py +30 -112
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/metrics_loop.py +21 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/metrics_personalize.py +56 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/overlay.py +63 -16
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/settings.py +25 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/api/_shared.py +0 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/api/display.py +21 -7
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/api/main.py +3 -3
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/api/schemas.py +0 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/cli/_ctx.py +5 -5
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/cli/main.py +38 -10
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/cli/shell.py +1 -1
- trcc_linux-9.7.2/src/trcc/ui/gui/__init__.py +202 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1LC10.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1LC10a.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1LC13.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1LC13a.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1LC15.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1LC15a.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1LD11.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1LD11a.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1LF014.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1LF014a.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1RX1.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/assets/A1RX1a.png +0 -0
- trcc_linux-9.7.2/src/trcc/ui/gui/gpu_reader_prompt.py +65 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/lcd_handler.py +176 -85
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/led_handler.py +35 -26
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/overlay_grid.py +55 -147
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/trcc_app.py +133 -98
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_led_control.py +125 -136
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_preview.py +13 -52
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_sensor_picker.py +6 -58
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_system_info.py +2 -27
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_theme_local.py +46 -51
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_theme_setting.py +23 -9
- trcc_linux-9.7.2/src/trcc/ui/presentation/__init__.py +18 -0
- trcc_linux-9.7.2/src/trcc/ui/presentation/device_presentation.py +53 -0
- trcc_linux-9.7.2/src/trcc/ui/presentation/lcd_panel.py +106 -0
- trcc_linux-9.7.2/src/trcc/ui/presentation/led_display.py +89 -0
- trcc_linux-9.7.2/src/trcc/ui/presentation/led_metrics_format.py +103 -0
- trcc_linux-9.7.2/src/trcc/ui/presentation/led_panel.py +57 -0
- trcc_linux-9.7.2/src/trcc/ui/presentation/led_zone_model.py +132 -0
- trcc_linux-9.7.2/src/trcc/ui/presentation/overlay_model.py +132 -0
- trcc_linux-9.7.2/src/trcc/ui/presentation/overlay_serialization.py +329 -0
- trcc_linux-9.7.2/src/trcc/ui/presentation/sensor_display.py +78 -0
- trcc_linux-9.7.2/src/trcc/ui/presentation/slideshow_model.py +97 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qapp.py +17 -3
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/app.py +7 -3
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/assets.py +36 -7
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/led/advanced_tab.py +23 -3
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/led_panel.py +10 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/overlay_editor.py +44 -12
- trcc_linux-9.7.2/tests/adapters/system/test_elevate.py +63 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/conftest.py +43 -1
- trcc_linux-9.7.2/tests/mock_platform.py +377 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_api_routes.py +30 -0
- trcc_linux-9.7.2/tests/test_app_senders.py +83 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_backend_finish.py +2 -24
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_bulk_lcd_geometry.py +59 -2
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_cloud_themes.py +25 -0
- trcc_linux-9.7.2/tests/test_daemon.py +82 -0
- trcc_linux-9.7.2/tests/test_data_install.py +66 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_dc_reader.py +29 -1
- trcc_linux-9.7.2/tests/test_device_catalog_smoke.py +132 -0
- trcc_linux-9.7.2/tests/test_device_sender.py +264 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_diagnostics.py +139 -1
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_display_rotation.py +215 -13
- trcc_linux-9.7.2/tests/test_gpu_preference.py +88 -0
- trcc_linux-9.7.2/tests/test_gpu_reader_prompt.py +120 -0
- trcc_linux-9.7.2/tests/test_gui_entry_exit.py +45 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_gui_panels.py +145 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_hotplug.py +40 -4
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_ipc_server.py +25 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_ipc_wire.py +38 -1
- trcc_linux-9.7.2/tests/test_lcd_panel_model.py +75 -0
- trcc_linux-9.7.2/tests/test_led_animation_loop.py +48 -0
- trcc_linux-9.7.2/tests/test_led_assets.py +146 -0
- trcc_linux-9.7.2/tests/test_led_display_model.py +89 -0
- trcc_linux-9.7.2/tests/test_led_handler_requires_app.py +21 -0
- trcc_linux-9.7.2/tests/test_led_panel_model.py +74 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_mask_rendering.py +77 -4
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_metrics_personalize.py +76 -1
- trcc_linux-9.7.2/tests/test_mock_reply_override.py +97 -0
- trcc_linux-9.7.2/tests/test_models.py +34 -0
- trcc_linux-9.7.2/tests/test_orientation_cloud_background.py +151 -0
- trcc_linux-9.7.2/tests/test_orientation_reload.py +235 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_overlay_clock.py +49 -0
- trcc_linux-9.7.2/tests/test_overlay_grid_adapter.py +72 -0
- trcc_linux-9.7.2/tests/test_overlay_resolve.py +75 -0
- trcc_linux-9.7.2/tests/test_packaging_entrypoints.py +87 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_quickstart.py +0 -1
- trcc_linux-9.7.2/tests/test_render_led.py +367 -0
- trcc_linux-9.7.2/tests/test_run_setup_order.py +43 -0
- trcc_linux-9.7.2/tests/test_selinux_install.py +47 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_send_color.py +62 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_sensors.py +94 -0
- trcc_linux-9.7.2/tests/test_sensors_nvml.py +110 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_settings_migration.py +11 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_theme_persistence.py +96 -24
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_udev.py +34 -4
- trcc_linux-9.7.2/tests/test_ui_surfaces_smoke.py +104 -0
- trcc_linux-9.7.2/tests/test_variant_presentation_audit.py +54 -0
- trcc_linux-9.7.2/tests/ui/presentation/test_device_presentation.py +42 -0
- trcc_linux-9.7.2/tests/ui/presentation/test_led_metrics_format.py +117 -0
- trcc_linux-9.7.2/tests/ui/presentation/test_led_zone_model.py +116 -0
- trcc_linux-9.7.2/tests/ui/presentation/test_overlay_model.py +200 -0
- trcc_linux-9.7.2/tests/ui/presentation/test_overlay_view_binding.py +36 -0
- trcc_linux-9.7.2/tests/ui/presentation/test_sensor_display.py +86 -0
- trcc_linux-9.7.2/tests/ui/presentation/test_slideshow_model.py +82 -0
- trcc_linux-9.7.2/tests/ui/presentation/test_theme_local_binding.py +31 -0
- trcc_linux-9.7.0/src/trcc/services/keepalive.py +0 -68
- trcc_linux-9.7.0/src/trcc/ui/gui/__init__.py +0 -158
- trcc_linux-9.7.0/src/trcc/ui/gui/_overlay_grid_adapter.py +0 -146
- trcc_linux-9.7.0/tests/test_models.py +0 -21
- trcc_linux-9.7.0/tests/test_render_led.py +0 -226
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/LICENSE +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/_entry.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/device/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/device/hid_lcd.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/device/led.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/device/scsi_lcd.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/device/transport.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/device/usb_bot_scsi.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/diagnostics/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/diagnostics/debug_report.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/diagnostics/doctor.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/infra/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/infra/network.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/infra/sysinfo_config.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/render/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/repo/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/repo/data_install.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/repo/github_releases.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/repo/http.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/screencast/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/screencast/qt.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/_hwinfo.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/_lhm.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/_macos_hid.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/_msacpi.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/_powermetrics.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/_smc.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/_sysctl.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/bsd.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/chain.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/gpu_detect.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/hwmon.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/macos.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/psutil_sources.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/sensors/windows.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/system/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/system/_autostart.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/system/_devd.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/system/_macos_setup.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/system/_winusb.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/system/bsd.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/system/macos.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/system/windows.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/adapters/theme/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/LibreHardwareMonitor.config +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/com.github.lexonight1.trcc.policy +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/fonts/MSYH.TTC +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/fonts/MSYHBD.TTC +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/fonts/README.md +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/icons/app.ico +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/icons/trcc.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/icons/trcc_128x128.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/icons/trcc_16x16.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/icons/trcc_24x24.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/icons/trcc_256x256.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/icons/trcc_32x32.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/icons/trcc_48x48.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/icons/trcc_64x64.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/trcc-linux.desktop +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/assets/trcc-quirk-fix.service +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/_colors.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/_safe.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/_version.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/commands/_base.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/device_recovery.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/errors.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/i18n.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/core/led_protocol.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/data/trcc_usb.te +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/_ansi.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/_clock.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/audio.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/first_run.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/led_effects.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/media.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/migration.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/quickstart.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/slideshow.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/theme.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/video_cache.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/services/video_export.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/api/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/api/config.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/api/devices.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/api/led.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/api/system.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/api/theme.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/api/trcc.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/cli/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/cli/config.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/cli/device.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/cli/display.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/cli/led.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/cli/system.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/cli/theme.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/_ui_state.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/240240.gif +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/240320.gif +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/320240.gif +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/320320.gif +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AK120 Digital.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AK120 Digitala.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AK120_Digital.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AK120_Digitala.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AS120 VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AS120 VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AS120_VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AS120_VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AX120 DIGITAL.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AX120 DIGITALa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AX120_DIGITAL.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1AX120_DIGITALa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1BA120 VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1BA120 VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1BA120_VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1BA120_VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1CORE VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1CORE VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1CORE_VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1CORE_VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1CZ1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1CZ1a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1CZ2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1CZ2a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1CZTV.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1CZTVa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1ELITE VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1ELITE VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1ELITE_VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1ELITE_VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN HORIZON PRO.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN HORIZON PROa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN MAGIC PRO.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN MAGIC PROa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN VISION V2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN VISION V2a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN WARFRAME PRO.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN WARFRAME PROa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN WARFRAME SE.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN WARFRAME SEa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN WARFRAME.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN WARFRAMEa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_HORIZON_PRO.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_HORIZON_PROa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_MAGIC_PRO.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_MAGIC_PROa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_VISION_V2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_VISION_V2a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAME.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAME_PRO.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAME_PROa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAME_SE.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAME_SEa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAMEa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1GRAND VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1GRAND VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1GRAND_VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1GRAND_VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1HR10 2280 PRO DIGITAL.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1HR10 2280 PRO DIGITALa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1HYPER VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1HYPER VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1HYPER_VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1HYPER_VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1KVMALEDC6.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1KVMALEDC6a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC1a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC2JD.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC2JDa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC2a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC3a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC5.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC5a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC7.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC7a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC8.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC8a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC9.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LC9a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LD10.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LD10a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LD6.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LD6a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LD7.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LD7a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LD8.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LD8a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LD9.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LD9a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF10.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF10V.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF10Va.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF10a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF11.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF11a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF12.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF12a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF13.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF13a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF14.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF14a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF15.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF15a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF16.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF167.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF16a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF17a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF18.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF18a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF19.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF19a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF20.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF20a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF21.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF21a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF22.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF22a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF25.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF25a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF8.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LF8a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM16SE.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM16SEa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM19SE.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM19SEa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM22.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM22a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM24.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM24a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM26.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM26a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM27.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM27a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM30.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1LM30a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Mjolnir VISION PRO.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Mjolnir VISION PROa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Mjolnir VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Mjolnir VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Mjolnir_VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Mjolnir_VISION_PRO.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Mjolnir_VISION_PROa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Mjolnir_VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1PA120 DIGITAL.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1PA120 DIGITALa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1PA120_DIGITAL.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1PA120_DIGITALa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1PC1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1PC1a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1RK120 DIGITAL.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1RK120 DIGITALa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1RK120_DIGITAL.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1RK120_DIGITALa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1RP130 VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1RP130 VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1RP130_VISION.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1RP130_VISIONa.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Stream Vision.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Stream Visiona.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Stream_Vision.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/A1Stream_Visiona.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/about_dropdown.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/about_dropdown_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/about_dropdown_select.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/about_update.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/about_update_overlay.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_about_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_brightness_0.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_brightness_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_brightness_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_brightness_3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_export.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_form_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_help.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_import.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_main_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_power.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_power_hover.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_save.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_sysinfo_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_tab_cloud.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_tab_cloud_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_tab_local.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_tab_local_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_tab_mask.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_tab_mask_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_tab_mask_lower.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_tab_settings.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_tab_settings_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_theme_base_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_theme_gallery_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/app_theme_settings_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/carousel_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/carousel_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/carousel_3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/carousel_4.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/carousel_5.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/carousel_6.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/carousel_btn.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/carousel_btn_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/carousel_select_frame.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/color_panel_eyedropper.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/color_panel_picker.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/color_panel_selector_ring.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/color_panel_slider_thumb.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/color_wheel_knob.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/color_wheel_knob_0.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/color_wheel_toggle_hover.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/color_wheel_toggle_off.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/color_wheel_toggle_on.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_12h.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_24h.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_border.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_border_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_crop.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_date_dm.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_date_dmy.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_date_md.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_date_ymd.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_digit_font.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_fit_height.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_fit_width.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_function.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_function_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_icon.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_icon_gif.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_icon_image.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_icon_livestream.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_icon_mask.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_icon_network.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_icon_video.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m1_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m2_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m3_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m4.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m4_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m5.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m5_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m6.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_m6_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_minus.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_network_btn.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_plus.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_rotate.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_slider_thumb.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_text_font.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_unit_c.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/display_mode_unit_f.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/frozen_warframe_ultra.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/frozen_warframe_ultra_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_110x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_116x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_1280x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_160x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_180x400.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_180x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_240x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_240x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_240x400.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_240x427.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_270x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_320x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_320x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_320x86.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_360x360.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_400x180.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_400x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_427x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_480x110.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_480x116.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_480x160.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_480x180.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_480x270.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_480x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/image_cut_86x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_aggregate.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_aggregate_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_cz1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_kvma.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_lc1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_lc2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_lf10.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_lf11.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_lf12.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_lf13.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_lf15.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_lf8.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_rgb_lf13.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_segment.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_bg_segment_4zone.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_dropdown.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_dropdown_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_dropdown_highlight.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_dropdown_highlight_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_dropdown_menu.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_dropdown_menu_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_external.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_external_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_helmet_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_helmet_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_helmet_3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_helmet_4.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_helmet_5.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bar_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bar_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bar_3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bar_4.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bar_5.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bar_6.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bg_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bg_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bg_3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bg_4.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bg_5.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bg_5_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_meter_bg_6.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_10.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_10_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_11.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_11_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_12.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_12_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_1_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_2_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_3_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_4.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_4_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_5.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_5_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_6.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_6_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_7.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_7_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_8.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_8_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_9.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_mode_9_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_power.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_power_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preset_blue.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preset_cyan.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preset_green.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preset_orange.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preset_purple.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preset_red.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preset_white.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preset_yellow.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_ak120.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_ax120.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_cz1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_frozen_horizon_pro.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_frozen_magic_pro.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_lc1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_lc2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_lf10.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_lf11.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_lf12.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_lf13.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_lf15.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_lf8.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_pa120.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_preview_pa120_space.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_show_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_show_1_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_show_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_show_2_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_show_3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_show_3_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_slider_thumb.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_btn_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_btn_1_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_btn_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_btn_2_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_btn_3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_btn_3_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_btn_4.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_btn_4_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_1_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_2_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_3_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_4.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_4_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_5.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_5_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_6.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/led_zone_mode_6_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_label_sysinfo.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_label_sysinfo_1_en.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_label_sysinfo_1_tc.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_label_sysinfo_en.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_label_sysinfo_tc.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_label_text.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_label_text_en.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_label_text_tc.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_label_time.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_label_time_en.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_label_time_tc.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_mode_date.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_mode_hardware.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_mode_text.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_mode_time.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_mode_weekday.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/overlay_select.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_110x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_116x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_160x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_180x400.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_180x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_240x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_240x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_240x400.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_240x427.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_270x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_320x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_320x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_320x320_round.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_320x86.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_360x360_round.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_400x180.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_400x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_427x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_480x110.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_480x116.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_480x160.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_480x180.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_480x270.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_480x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_480x480_round.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_86x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_animation.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_btn.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_btn_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_pause.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_play.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_player_control_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_1280x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_1920x440.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_1920x462.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_320x960.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_360x800.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_440x1920.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_462x1920.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_480x1280.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_480x800.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_480x854.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_540x960.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_800x360.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_800x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_854x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_960x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_popup_960x540.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_res_240x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_res_240x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_res_320x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_res_320x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_round_mask_320x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_round_mask_360x360.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_round_mask_480x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_video_controls_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/preview_video_controls_bg_alt.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/screen_led_deco_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/screen_led_deco_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/screen_led_deco_3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/screen_led_deco_4.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/screen_led_deco_cz1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/secondary_screen_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/secondary_screen_bg_d.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/secondary_screen_bg_e.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/secondary_screen_bg_en.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/secondary_screen_bg_f.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/secondary_screen_bg_h.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/secondary_screen_bg_p.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/secondary_screen_bg_r.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/secondary_screen_bg_tc.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/secondary_screen_bg_x.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_content.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_content_btn.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_content_mask.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_date.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_date_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_icon.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_link_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_text.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_text_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_time.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_time_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_weekday.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_add_weekday_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_anim_sync.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_background.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_brightness.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_keyboard_sync_1.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_keyboard_sync_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_keyboard_sync_3.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_module.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_overlay.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_overlay_add_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_overlay_color_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_overlay_grid_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_overlay_table_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/settings_params.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_brightness_bar.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_checkbox_off.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_checkbox_on.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_clip_a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_clip_b.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_close.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_close_2.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_dropdown.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_dropdown_bg_2x.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_dropdown_bg_4x.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_dropdown_highlight.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_loading_animation.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_progress_bar.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_round_close.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_round_confirm.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_scrollbar_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_scrollbar_thumb.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_shortcut_size_slider.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_thread_multi.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_thread_single.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_toggle_off.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shared_toggle_on.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shortcuts_panel.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shortcuts_panel_d.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shortcuts_panel_e.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shortcuts_panel_en.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shortcuts_panel_f.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shortcuts_panel_p.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shortcuts_panel_r.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shortcuts_panel_tc.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/shortcuts_panel_x.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sidebar_about.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sidebar_about_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sidebar_about_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sidebar_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sidebar_no_device.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sidebar_sensor.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sidebar_sensor_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sidebar_splash.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sidebar_sysinfo_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_a.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_a_180.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_a_270.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_a_90.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_b.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_b_180.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_b_270.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_b_90.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_c.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_c_180.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_c_270.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/split_overlay_c_90.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_add_group.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_cpu.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_custom.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_dram.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_fan.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_gpu.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_hdd.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_net.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_next_page.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_prev_page.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_scrollbar.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/sysinfo_select.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_browser_filter.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_browser_filter_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_cloud_label.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_cloud_label_d.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_cloud_label_e.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_cloud_label_en.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_cloud_label_f.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_cloud_label_h.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_cloud_label_p.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_cloud_label_r.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_cloud_label_tc.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_cloud_label_x.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_local_carousel.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_local_carousel_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_local_export_all.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_local_multi_select.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_local_multi_select_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_local_select_frame.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_local_select_frame_active.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/theme_mask_label.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_110x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_116x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_1280x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_160x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_180x400.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_180x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_240x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_240x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_240x400.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_240x427.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_270x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_320x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_320x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_320x86.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_360x360.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_400x180.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_400x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_427x240.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_480x110.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_480x116.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_480x160.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_480x180.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_480x270.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_480x480.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_86x320.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_bg.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets/video_cut_bg_alt.png +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/assets.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/base.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/base_handler.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/bus_bridge.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/color_and_add_panels.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/constants.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/display_mode_panels.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/eyedropper.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/overlay_element.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/pipewire_capture.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/screen_capture.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/splash.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_about.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_activity_sidebar.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_color_wheel.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_device.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_image_cut.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_info_module.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_screen_led.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_theme_mask.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_theme_web.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/gui/uc_video_cut.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/base.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/bus_bridge.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/color_wheel.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/device_picker.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/eyedropper.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/image_crop.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/about_panel.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/cloud_theme_browser.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/configuration_panel.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/device_panel.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/display_panel.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/led/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/led/_base.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/led/color_tab.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/led/mode_tab.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/led/segment_tab.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/led/zone_tab.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/local_theme_browser.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/mask_browser.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/preview_panel.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/screencast_panel.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/sidebar.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/status_panel.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/panels/system_panel.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/region_overlay.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/screen_overlay.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/sensor_picker.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/splash.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/src/trcc/ui/qtgui/video_crop.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/__init__.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_autostart.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_autostart_macos.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_autostart_windows.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_boot_animation_command.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_boot_animation_device.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_cli_commands.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_clock.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_commands.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_control_center.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_dc_codec.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_display_tweaks.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_first_run_and_migration.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_hid_lcd_geometry.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_hotplug_bsd.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_hotplug_polling.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_hotplug_windows.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_i18n.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_integration_pipeline.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_led_effects.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_led_pm_registry.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_led_remap.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_led_send.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_led_settings_commands.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_library_migration.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_ly_lcd_geometry.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_mask_commands.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_platform_hw_probes.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_scsi_lcd_geometry.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_sensor_chain.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_sensors_bsd.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_sensors_lhm_subprocess.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_sensors_macos.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_sensors_windows.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_shell.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_theme_service.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_transports.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_video_cache.py +0 -0
- {trcc_linux-9.7.0 → trcc_linux-9.7.2}/tests/test_video_playback.py +0 -0
|
@@ -77,33 +77,16 @@ src/trcc/data/settings.json
|
|
|
77
77
|
src/trcc/data/ui_*.json
|
|
78
78
|
|
|
79
79
|
# ──────────────────────────────────────────────
|
|
80
|
-
# Dev / reference files
|
|
80
|
+
# Dev / reference files
|
|
81
81
|
# ──────────────────────────────────────────────
|
|
82
|
-
#
|
|
83
|
-
#
|
|
84
|
-
#
|
|
85
|
-
#
|
|
86
|
-
/dev
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
!/dev/mock_api.py
|
|
91
|
-
!/dev/mock_gui.py
|
|
92
|
-
!/dev/_mock_bootstrap.py
|
|
93
|
-
!/dev/_mock_daemon.py
|
|
94
|
-
!/dev/smoke_rotation_mask.py
|
|
95
|
-
!/dev/smoke_daemon_gui.py
|
|
96
|
-
!/dev/smoke_sleep_cycle.py
|
|
97
|
-
!/dev/smoke_linux.py
|
|
98
|
-
!/dev/smoke_windows.py
|
|
99
|
-
!/dev/smoke_macos.py
|
|
100
|
-
!/dev/smoke_macos_parsers.py
|
|
101
|
-
!/dev/smoke_platforms.py
|
|
102
|
-
!/dev/smoke_variant_resolution.py
|
|
103
|
-
!/dev/smoke_bsd.py
|
|
104
|
-
!/dev/_smoke_runtime.py
|
|
105
|
-
!/dev/parity_smoke.py
|
|
106
|
-
!/dev/smoke_full_pipeline.py
|
|
82
|
+
# dev/ is SHARED contributor tooling — track it ALL by default so a new dev
|
|
83
|
+
# script is never silently hidden behind a whitelist. Ignore ONLY the runtime
|
|
84
|
+
# artifacts the mock writes (dev/.trcc*, bytecode) and each developer's LOCAL
|
|
85
|
+
# fleet config (devices.json — seed it from the committed devices.json.example).
|
|
86
|
+
/dev/.trcc/
|
|
87
|
+
/dev/.trcc-user/
|
|
88
|
+
/dev/__pycache__/
|
|
89
|
+
/dev/devices.json
|
|
107
90
|
/dev_*
|
|
108
91
|
# Dev scripts at root
|
|
109
92
|
/test_*.py
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: trcc-linux
|
|
3
|
-
Version: 9.7.
|
|
3
|
+
Version: 9.7.2
|
|
4
4
|
Summary: Linux implementation of Thermalright LCD Control Center
|
|
5
5
|
Project-URL: Homepage, https://github.com/Lexonight1/thermalright-trcc-linux
|
|
6
6
|
Project-URL: Documentation, https://github.com/Lexonight1/thermalright-trcc-linux#readme
|
|
@@ -32,6 +32,7 @@ Requires-Dist: prompt-toolkit>=3.0.0
|
|
|
32
32
|
Requires-Dist: psutil>=5.9.0
|
|
33
33
|
Requires-Dist: pyside6>=6.5.0
|
|
34
34
|
Requires-Dist: python-multipart>=0.0.6
|
|
35
|
+
Requires-Dist: pyudev>=0.24.1; sys_platform == 'linux'
|
|
35
36
|
Requires-Dist: pyusb>=1.2.0
|
|
36
37
|
Requires-Dist: sounddevice>=0.4.6
|
|
37
38
|
Requires-Dist: typer>=0.9.0
|
|
@@ -45,6 +46,7 @@ Requires-Dist: httpx>=0.24.0; extra == 'all'
|
|
|
45
46
|
Requires-Dist: nvidia-ml-py>=11.0.0; extra == 'all'
|
|
46
47
|
Requires-Dist: pygobject>=3.42.0; extra == 'all'
|
|
47
48
|
Requires-Dist: pytest-cov>=4.0.0; extra == 'all'
|
|
49
|
+
Requires-Dist: pytest-qt>=4.0.0; extra == 'all'
|
|
48
50
|
Requires-Dist: pytest>=7.0.0; extra == 'all'
|
|
49
51
|
Requires-Dist: qrcode>=7.0; extra == 'all'
|
|
50
52
|
Requires-Dist: ruff>=0.4.0; extra == 'all'
|
|
@@ -52,6 +54,7 @@ Requires-Dist: types-qrcode>=7.0; extra == 'all'
|
|
|
52
54
|
Provides-Extra: dev
|
|
53
55
|
Requires-Dist: httpx>=0.24.0; extra == 'dev'
|
|
54
56
|
Requires-Dist: pytest-cov>=4.0.0; extra == 'dev'
|
|
57
|
+
Requires-Dist: pytest-qt>=4.0.0; extra == 'dev'
|
|
55
58
|
Requires-Dist: pytest>=7.0.0; extra == 'dev'
|
|
56
59
|
Requires-Dist: ruff>=0.4.0; extra == 'dev'
|
|
57
60
|
Requires-Dist: types-qrcode>=7.0; extra == 'dev'
|
|
@@ -118,7 +121,7 @@ Description-Content-Type: text/markdown
|
|
|
118
121
|
[](https://buymeacoffee.com/Lexonight1)
|
|
119
122
|
[](https://ko-fi.com/lexonight1)
|
|
120
123
|
|
|
121
|
-
> Huge thanks to **[@Xentrino](https://github.com/Xentrino)**, **[@javisaman](https://github.com/javisaman)**, **[@loosethoughts19-hash](https://github.com/loosethoughts19-hash)**, **[@Reborn627](https://github.com/Reborn627)**, **[@Mr-Renegade](https://github.com/Mr-Renegade)**, **[@knappstar](https://github.com/knappstar)**, **[@woebygon](https://github.com/woebygon)**, **[@Smokemic](https://github.com/Smokemic)**, **[@chava-byte](https://github.com/chava-byte)**, **[@nihilistqueen](https://github.com/nihilistqueen)**, **[@rhuggins573-crypto](https://github.com/rhuggins573-crypto)**, **[@unfirthman](https://github.com/unfirthman)**, **Glyn**, **dugalex**, and **
|
|
124
|
+
> Huge thanks to **[@Xentrino](https://github.com/Xentrino)**, **[@javisaman](https://github.com/javisaman)**, **[@loosethoughts19-hash](https://github.com/loosethoughts19-hash)**, **[@Reborn627](https://github.com/Reborn627)**, **[@Mr-Renegade](https://github.com/Mr-Renegade)**, **[@knappstar](https://github.com/knappstar)**, **[@woebygon](https://github.com/woebygon)**, **[@Smokemic](https://github.com/Smokemic)**, **[@chava-byte](https://github.com/chava-byte)**, **[@nihilistqueen](https://github.com/nihilistqueen)**, **[@rhuggins573-crypto](https://github.com/rhuggins573-crypto)**, **[@unfirthman](https://github.com/unfirthman)**, **Glyn**, **dugalex**, **Dunvcpi**, and **RichardK** for the beers — you guys are legends.
|
|
122
125
|
|
|
123
126
|
Native Linux port of the Thermalright LCD Control Center (Windows TRCC 2.1.2). Control and customize the LCD displays and LED segment displays on Thermalright CPU coolers, AIO pump heads, and fan hubs — entirely from Linux.
|
|
124
127
|
|
|
@@ -172,7 +175,7 @@ sudo dnf install pipx libusb-1.0.0 sg3_utils p7zip # Fedora
|
|
|
172
175
|
|
|
173
176
|
# Install trcc-linux
|
|
174
177
|
pipx install trcc-linux
|
|
175
|
-
trcc setup # interactive wizard — udev rules, desktop entry
|
|
178
|
+
trcc system setup # interactive wizard — udev rules, desktop entry
|
|
176
179
|
```
|
|
177
180
|
|
|
178
181
|
Then **unplug and replug the USB cable** and run `trcc gui`.
|
|
@@ -218,7 +221,7 @@ Full desktop app with theme browser, video player, overlay editor, LED control p
|
|
|
218
221
|
```bash
|
|
219
222
|
trcc detect # Show connected devices
|
|
220
223
|
trcc send image.png # Send image to LCD
|
|
221
|
-
trcc color "#ff0000" # Fill LCD with solid color
|
|
224
|
+
trcc display color "#ff0000" # Fill LCD with solid color
|
|
222
225
|
trcc video clip.mp4 # Play video on LCD
|
|
223
226
|
trcc screencast # Live screen capture to LCD
|
|
224
227
|
trcc brightness 2 # Set brightness (1=25%, 2=50%, 3=100%)
|
|
@@ -230,7 +233,7 @@ trcc led-color "#00ff00" # Set LED color
|
|
|
230
233
|
trcc led-mode breathing # Set LED effect mode
|
|
231
234
|
trcc report # Generate diagnostic report
|
|
232
235
|
trcc doctor # Check system dependencies
|
|
233
|
-
trcc setup # Interactive setup wizard
|
|
236
|
+
trcc system setup # Interactive setup wizard
|
|
234
237
|
trcc uninstall # Remove TRCC completely
|
|
235
238
|
```
|
|
236
239
|
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
[](https://buymeacoffee.com/Lexonight1)
|
|
48
48
|
[](https://ko-fi.com/lexonight1)
|
|
49
49
|
|
|
50
|
-
> Huge thanks to **[@Xentrino](https://github.com/Xentrino)**, **[@javisaman](https://github.com/javisaman)**, **[@loosethoughts19-hash](https://github.com/loosethoughts19-hash)**, **[@Reborn627](https://github.com/Reborn627)**, **[@Mr-Renegade](https://github.com/Mr-Renegade)**, **[@knappstar](https://github.com/knappstar)**, **[@woebygon](https://github.com/woebygon)**, **[@Smokemic](https://github.com/Smokemic)**, **[@chava-byte](https://github.com/chava-byte)**, **[@nihilistqueen](https://github.com/nihilistqueen)**, **[@rhuggins573-crypto](https://github.com/rhuggins573-crypto)**, **[@unfirthman](https://github.com/unfirthman)**, **Glyn**, **dugalex**, and **
|
|
50
|
+
> Huge thanks to **[@Xentrino](https://github.com/Xentrino)**, **[@javisaman](https://github.com/javisaman)**, **[@loosethoughts19-hash](https://github.com/loosethoughts19-hash)**, **[@Reborn627](https://github.com/Reborn627)**, **[@Mr-Renegade](https://github.com/Mr-Renegade)**, **[@knappstar](https://github.com/knappstar)**, **[@woebygon](https://github.com/woebygon)**, **[@Smokemic](https://github.com/Smokemic)**, **[@chava-byte](https://github.com/chava-byte)**, **[@nihilistqueen](https://github.com/nihilistqueen)**, **[@rhuggins573-crypto](https://github.com/rhuggins573-crypto)**, **[@unfirthman](https://github.com/unfirthman)**, **Glyn**, **dugalex**, **Dunvcpi**, and **RichardK** for the beers — you guys are legends.
|
|
51
51
|
|
|
52
52
|
Native Linux port of the Thermalright LCD Control Center (Windows TRCC 2.1.2). Control and customize the LCD displays and LED segment displays on Thermalright CPU coolers, AIO pump heads, and fan hubs — entirely from Linux.
|
|
53
53
|
|
|
@@ -101,7 +101,7 @@ sudo dnf install pipx libusb-1.0.0 sg3_utils p7zip # Fedora
|
|
|
101
101
|
|
|
102
102
|
# Install trcc-linux
|
|
103
103
|
pipx install trcc-linux
|
|
104
|
-
trcc setup # interactive wizard — udev rules, desktop entry
|
|
104
|
+
trcc system setup # interactive wizard — udev rules, desktop entry
|
|
105
105
|
```
|
|
106
106
|
|
|
107
107
|
Then **unplug and replug the USB cable** and run `trcc gui`.
|
|
@@ -147,7 +147,7 @@ Full desktop app with theme browser, video player, overlay editor, LED control p
|
|
|
147
147
|
```bash
|
|
148
148
|
trcc detect # Show connected devices
|
|
149
149
|
trcc send image.png # Send image to LCD
|
|
150
|
-
trcc color "#ff0000" # Fill LCD with solid color
|
|
150
|
+
trcc display color "#ff0000" # Fill LCD with solid color
|
|
151
151
|
trcc video clip.mp4 # Play video on LCD
|
|
152
152
|
trcc screencast # Live screen capture to LCD
|
|
153
153
|
trcc brightness 2 # Set brightness (1=25%, 2=50%, 3=100%)
|
|
@@ -159,7 +159,7 @@ trcc led-color "#00ff00" # Set LED color
|
|
|
159
159
|
trcc led-mode breathing # Set LED effect mode
|
|
160
160
|
trcc report # Generate diagnostic report
|
|
161
161
|
trcc doctor # Check system dependencies
|
|
162
|
-
trcc setup # Interactive setup wizard
|
|
162
|
+
trcc system setup # Interactive setup wizard
|
|
163
163
|
trcc uninstall # Remove TRCC completely
|
|
164
164
|
```
|
|
165
165
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "trcc-linux"
|
|
7
|
-
version = "9.7.
|
|
7
|
+
version = "9.7.2"
|
|
8
8
|
description = "Linux implementation of Thermalright LCD Control Center"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "GPL-3.0-or-later"
|
|
@@ -51,6 +51,12 @@ dependencies = [
|
|
|
51
51
|
"sounddevice>=0.4.6",
|
|
52
52
|
"wmi>=1.5.1; sys_platform == 'win32'",
|
|
53
53
|
"certifi>=2023.7.22",
|
|
54
|
+
# Linux hotplug: live device attach/detach + boot-time coldplug. Without
|
|
55
|
+
# it the udev monitor can't start, so a device plugged in after launch (or
|
|
56
|
+
# missed at the boot discover) never connects — hotplug silently no-ops.
|
|
57
|
+
# Core feature, not optional; the graceful-None fallback only covers exotic
|
|
58
|
+
# environments that strip libudev (#139).
|
|
59
|
+
"pyudev>=0.24.1; sys_platform == 'linux'",
|
|
54
60
|
]
|
|
55
61
|
|
|
56
62
|
[project.optional-dependencies]
|
|
@@ -74,6 +80,7 @@ remote = [
|
|
|
74
80
|
dev = [
|
|
75
81
|
"pytest>=7.0.0",
|
|
76
82
|
"pytest-cov>=4.0.0",
|
|
83
|
+
"pytest-qt>=4.0.0",
|
|
77
84
|
"ruff>=0.4.0",
|
|
78
85
|
"httpx>=0.24.0",
|
|
79
86
|
"types-qrcode>=7.0",
|
|
@@ -129,6 +136,10 @@ artifacts = [
|
|
|
129
136
|
"**/assets/**/*.service",
|
|
130
137
|
"**/assets/**/*.policy",
|
|
131
138
|
"**/assets/**/*.svg",
|
|
139
|
+
# SELinux policy source — `trcc system setup` builds + loads it on Fedora
|
|
140
|
+
# so source/pip installs can pass the USB/SCSI ioctls (packages ship the
|
|
141
|
+
# compiled .pp via the rpm).
|
|
142
|
+
"**/data/trcc_usb.te",
|
|
132
143
|
]
|
|
133
144
|
|
|
134
145
|
[tool.pytest.ini_options]
|
|
@@ -42,7 +42,7 @@ _early_handler = _rotating_handler_cls(
|
|
|
42
42
|
# Tag the early shim so ``adapters.infra.logging.configure_logging`` knows
|
|
43
43
|
# to swap it out when it runs. Without the tag, both handlers stay
|
|
44
44
|
# attached and every log line gets written twice.
|
|
45
|
-
_early_handler.
|
|
45
|
+
_early_handler._trcc_handler = True # type: ignore[attr-defined]
|
|
46
46
|
logging.basicConfig(
|
|
47
47
|
level=logging.DEBUG,
|
|
48
48
|
format='%(asctime)s [%(levelname)s] %(name)s.%(funcName)s: %(message)s',
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
Routes to one of two backends based on the environment::
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
|
|
5
|
+
TRCC_DAEMON unset → real App, in-process
|
|
6
|
+
TRCC_DAEMON=1 → AppProxy, talks to daemon over Unix socket
|
|
7
7
|
(auto-spawns the daemon if not running)
|
|
8
8
|
|
|
9
9
|
On Windows < build 17063 ``AF_UNIX`` is not available; the factory
|
|
@@ -27,10 +27,10 @@ if TYPE_CHECKING:
|
|
|
27
27
|
log = logging.getLogger(__name__)
|
|
28
28
|
|
|
29
29
|
|
|
30
|
-
_ENV_FLAG = "
|
|
30
|
+
_ENV_FLAG = "TRCC_DAEMON"
|
|
31
31
|
|
|
32
32
|
|
|
33
|
-
def
|
|
33
|
+
def trcc(
|
|
34
34
|
*,
|
|
35
35
|
platform: Platform | None = None,
|
|
36
36
|
renderer: Renderer | None = None,
|
|
@@ -39,9 +39,9 @@ def trcc_next(
|
|
|
39
39
|
|
|
40
40
|
Three modes:
|
|
41
41
|
|
|
42
|
-
* ``
|
|
42
|
+
* ``TRCC_DAEMON=1`` + ``AF_UNIX`` available → ``AppProxy``
|
|
43
43
|
(auto-spawn daemon on first request).
|
|
44
|
-
* ``
|
|
44
|
+
* ``TRCC_DAEMON=1`` on a platform without ``AF_UNIX`` →
|
|
45
45
|
warn once and fall back to in-process.
|
|
46
46
|
* Default → in-process ``App`` built from ``platform`` /
|
|
47
47
|
``renderer`` (auto-detected when omitted).
|
|
@@ -50,7 +50,7 @@ def trcc_next(
|
|
|
50
50
|
owns both. Pass them when forcing in-process construction (tests,
|
|
51
51
|
composition roots).
|
|
52
52
|
"""
|
|
53
|
-
log.info("
|
|
53
|
+
log.info("trcc: env_flag=%s platform=%s renderer=%s",
|
|
54
54
|
os.environ.get(_ENV_FLAG), platform is not None,
|
|
55
55
|
renderer is not None)
|
|
56
56
|
if os.environ.get(_ENV_FLAG) == "1":
|
|
@@ -79,7 +79,7 @@ def _build_local_app(
|
|
|
79
79
|
platform: Platform | None = None,
|
|
80
80
|
renderer: Renderer | None = None,
|
|
81
81
|
) -> App:
|
|
82
|
-
"""Construct an in-process App. Used by ``
|
|
82
|
+
"""Construct an in-process App. Used by ``trcc`` and the daemon."""
|
|
83
83
|
log.info("_build_local_app: platform=%s renderer=%s",
|
|
84
84
|
platform is not None, renderer is not None)
|
|
85
85
|
from .adapters.system import PlatformFactory
|
|
@@ -21,7 +21,13 @@ from ...core.errors import (
|
|
|
21
21
|
)
|
|
22
22
|
from ...core.models import HandshakeResult, ProductInfo, Wire
|
|
23
23
|
from ...core.ports import BulkTransport, Device
|
|
24
|
-
from ...core.protocol import
|
|
24
|
+
from ...core.protocol import (
|
|
25
|
+
DeviceProfile,
|
|
26
|
+
get_profile,
|
|
27
|
+
pm_to_fbl,
|
|
28
|
+
resolve_encode_base,
|
|
29
|
+
resolve_encode_sub,
|
|
30
|
+
)
|
|
25
31
|
from . import DeviceFactory
|
|
26
32
|
|
|
27
33
|
log = logging.getLogger(__name__)
|
|
@@ -50,6 +56,17 @@ _WRITE_CHUNK_SIZE = 16 * 1024
|
|
|
50
56
|
# PM values that use raw RGB565 (cmd=3); everything else uses JPEG (cmd=2).
|
|
51
57
|
_RGB565_PMS: set[int] = {32}
|
|
52
58
|
|
|
59
|
+
# Bulk base FBL is 72 (480x480, hardcoded by USBLCDNew.exe). C#
|
|
60
|
+
# FormCZTVInit (myDeviceMode==2) overrides it only for this known PM set
|
|
61
|
+
# (plus PM=1 with SUB 48/49); every other PM stays 480x480. pm_to_fbl()
|
|
62
|
+
# returns the PM itself for unrecognised values, which get_profile would
|
|
63
|
+
# misread as a 320x320 panel — so unknown bulk PMs must clamp to FBL 72.
|
|
64
|
+
# Mirrors legacy ``_bulk_resolution``. (#169)
|
|
65
|
+
_BULK_BASE_FBL = 72
|
|
66
|
+
_BULK_KNOWN_PMS: frozenset[int] = frozenset(
|
|
67
|
+
{5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 32, 50, 63, 64, 65, 66, 68, 69}
|
|
68
|
+
)
|
|
69
|
+
|
|
53
70
|
|
|
54
71
|
@DeviceFactory.register(Wire.BULK)
|
|
55
72
|
class BulkLcd(Device[BulkTransport]):
|
|
@@ -101,15 +118,39 @@ class BulkLcd(Device[BulkTransport]):
|
|
|
101
118
|
|
|
102
119
|
# Build the cached profile. Resolution comes from the FBL tables
|
|
103
120
|
# (mirrors legacy ``_bulk_resolution``); the jpeg flag is the
|
|
104
|
-
# Bulk-specific override (USBLCDNew → JPEG except PM=32).
|
|
105
|
-
|
|
121
|
+
# Bulk-specific override (USBLCDNew → JPEG except PM=32). Unknown
|
|
122
|
+
# bulk PMs stay on the 480x480 base rather than letting pm_to_fbl
|
|
123
|
+
# echo the PM into get_profile as a bogus FBL (C# parity, #169).
|
|
124
|
+
if self._pm in _BULK_KNOWN_PMS or (
|
|
125
|
+
self._pm == 1 and self._sub in (48, 49)
|
|
126
|
+
):
|
|
127
|
+
fbl = pm_to_fbl(self._pm, self._sub)
|
|
128
|
+
else:
|
|
129
|
+
log.info(
|
|
130
|
+
"BulkLcd %s: PM=%d SUB=%d not a known bulk model — "
|
|
131
|
+
"defaulting to FBL %d (480x480)",
|
|
132
|
+
self.info.key, self._pm, self._sub, _BULK_BASE_FBL,
|
|
133
|
+
)
|
|
134
|
+
fbl = _BULK_BASE_FBL
|
|
106
135
|
base = get_profile(fbl, self._pm)
|
|
136
|
+
# Resolve the device-only encode baseline now that PM is known — e.g.
|
|
137
|
+
# the FW360 Ultra (PM=6) mounts 180° rotated and needs its wire frame
|
|
138
|
+
# pre-rotated so it reads upright on the glass. (#137)
|
|
139
|
+
encode_baseline = resolve_encode_base(base, self._pm)
|
|
140
|
+
if encode_baseline:
|
|
141
|
+
log.info("BulkLcd %s: PM=%d encode baseline %d° (wire-only)",
|
|
142
|
+
self.info.key, self._pm, encode_baseline)
|
|
143
|
+
# Fold the sub-byte override into encode_base now that SUB is known, so
|
|
144
|
+
# the render-time resolve_encode_angle only needs the user orientation
|
|
145
|
+
# (C# ImageToJpg mySubMode branch — e.g. FBL 224 sub=2 → 180°). (#169)
|
|
146
|
+
encode_base = resolve_encode_sub(base, self._sub)
|
|
107
147
|
self._profile = DeviceProfile(
|
|
108
148
|
width=base.width, height=base.height,
|
|
109
149
|
jpeg=(self._pm not in _RGB565_PMS),
|
|
110
150
|
big_endian=base.big_endian, rotate=base.rotate,
|
|
111
|
-
|
|
112
|
-
|
|
151
|
+
encode_baseline=encode_baseline,
|
|
152
|
+
encode_base=encode_base, encode_invert=base.encode_invert,
|
|
153
|
+
encode_sub_bases=(), # folded into encode_base above
|
|
113
154
|
encode_pm_bases=base.encode_pm_bases,
|
|
114
155
|
)
|
|
115
156
|
|
|
@@ -15,6 +15,7 @@ ThreadSendDeviceDataLY / ThreadSendDeviceDataLY1.
|
|
|
15
15
|
"""
|
|
16
16
|
from __future__ import annotations
|
|
17
17
|
|
|
18
|
+
import dataclasses
|
|
18
19
|
import logging
|
|
19
20
|
import struct
|
|
20
21
|
|
|
@@ -25,7 +26,12 @@ from ...core.errors import (
|
|
|
25
26
|
)
|
|
26
27
|
from ...core.models import HandshakeResult, ProductInfo, Wire
|
|
27
28
|
from ...core.ports import BulkTransport, Device
|
|
28
|
-
from ...core.protocol import
|
|
29
|
+
from ...core.protocol import (
|
|
30
|
+
DeviceProfile,
|
|
31
|
+
get_profile,
|
|
32
|
+
pm_to_fbl,
|
|
33
|
+
resolve_encode_sub,
|
|
34
|
+
)
|
|
29
35
|
from . import DeviceFactory
|
|
30
36
|
|
|
31
37
|
log = logging.getLogger(__name__)
|
|
@@ -113,7 +119,15 @@ class LyLcd(Device[BulkTransport]):
|
|
|
113
119
|
self._sub = resp[22] if len(resp) > 22 else 0
|
|
114
120
|
|
|
115
121
|
fbl = pm_to_fbl(self._pm, self._sub)
|
|
116
|
-
|
|
122
|
+
# Fold the sub-byte override into encode_base now that SUB is known so
|
|
123
|
+
# render-time resolve_encode_angle only needs the user orientation
|
|
124
|
+
# (C# ImageToJpg mySubMode branch — FBL 192 sub 2/3/4 → 0°). (#169)
|
|
125
|
+
base = get_profile(fbl, self._pm)
|
|
126
|
+
self._profile = dataclasses.replace(
|
|
127
|
+
base,
|
|
128
|
+
encode_base=resolve_encode_sub(base, self._sub),
|
|
129
|
+
encode_sub_bases=(),
|
|
130
|
+
)
|
|
117
131
|
|
|
118
132
|
result = HandshakeResult(
|
|
119
133
|
resolution=self._profile.resolution,
|
|
@@ -26,6 +26,7 @@ from pathlib import Path
|
|
|
26
26
|
from typing import Literal
|
|
27
27
|
|
|
28
28
|
from ...core.ports import Paths, Platform
|
|
29
|
+
from ..sensors.nvml import NVML_RELOAD_HINT, nvml_init_state
|
|
29
30
|
|
|
30
31
|
log = logging.getLogger(__name__)
|
|
31
32
|
|
|
@@ -175,6 +176,68 @@ def check_sensors_enumerable(platform: Platform) -> HealthCheckResult:
|
|
|
175
176
|
)
|
|
176
177
|
|
|
177
178
|
|
|
179
|
+
def nvidia_gpu_present() -> bool:
|
|
180
|
+
"""Cheap probe: is a discrete NVIDIA (PCI vendor ``0x10de``) GPU present?
|
|
181
|
+
|
|
182
|
+
Reads ``/sys/bus/pci/devices/*/vendor`` — no subprocess, and works even
|
|
183
|
+
when the driver / pynvml are absent. That's the point: detect the card
|
|
184
|
+
independently of the reader so we can advise *installing* the reader.
|
|
185
|
+
Non-Linux falls back to the driver proc node.
|
|
186
|
+
"""
|
|
187
|
+
if sys.platform != "linux":
|
|
188
|
+
return Path("/proc/driver/nvidia/version").exists()
|
|
189
|
+
pci_root = Path("/sys/bus/pci/devices")
|
|
190
|
+
if not pci_root.is_dir():
|
|
191
|
+
return False
|
|
192
|
+
for dev in pci_root.iterdir():
|
|
193
|
+
try:
|
|
194
|
+
if dev.joinpath("vendor").read_text().strip().lower() != "0x10de":
|
|
195
|
+
continue
|
|
196
|
+
# PCI class 0x03xxxx == display controller (skip non-GPU NVIDIA
|
|
197
|
+
# functions like the bundled HDMI-audio device).
|
|
198
|
+
if dev.joinpath("class").read_text().strip().lower().startswith("0x03"):
|
|
199
|
+
return True
|
|
200
|
+
except OSError:
|
|
201
|
+
continue
|
|
202
|
+
return False
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def check_gpu_sensors(platform: Platform) -> HealthCheckResult:
|
|
206
|
+
"""NVIDIA GPU present but no metrics → guide the user to the fix.
|
|
207
|
+
|
|
208
|
+
The foolproof-install check: a discrete NVIDIA card with empty GPU
|
|
209
|
+
readings is almost always (a) the pynvml reader not installed, or (b) an
|
|
210
|
+
NVML version mismatch after a driver update without reboot. Both are
|
|
211
|
+
actionable, so this WARNs (not FAILs) with a distro-specific hint. No
|
|
212
|
+
NVIDIA card → OK (AMD reads via hwmon, no extra package needed).
|
|
213
|
+
"""
|
|
214
|
+
log.info("check_gpu_sensors: called")
|
|
215
|
+
reader_available, initialized, last_error = nvml_init_state()
|
|
216
|
+
if initialized:
|
|
217
|
+
return HealthCheckResult(
|
|
218
|
+
name="gpu-sensors", severity="OK",
|
|
219
|
+
message="NVIDIA GPU sensors available (NVML initialized)",
|
|
220
|
+
)
|
|
221
|
+
if not nvidia_gpu_present():
|
|
222
|
+
return HealthCheckResult(
|
|
223
|
+
name="gpu-sensors", severity="OK",
|
|
224
|
+
message="No discrete NVIDIA GPU detected (NVML check not applicable)",
|
|
225
|
+
)
|
|
226
|
+
if not reader_available:
|
|
227
|
+
return HealthCheckResult(
|
|
228
|
+
name="gpu-sensors", severity="WARN",
|
|
229
|
+
message="NVIDIA GPU detected but the pynvml reader is not installed "
|
|
230
|
+
"— GPU metrics will be empty",
|
|
231
|
+
fix_hint=package_install_hint("python3-pynvml")
|
|
232
|
+
+ " (the trcc-linux package should pull this in)",
|
|
233
|
+
)
|
|
234
|
+
return HealthCheckResult(
|
|
235
|
+
name="gpu-sensors", severity="WARN",
|
|
236
|
+
message=f"NVIDIA GPU detected but NVML init failed: {last_error}",
|
|
237
|
+
fix_hint=NVML_RELOAD_HINT,
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
|
|
178
241
|
def check_ffmpeg_present() -> HealthCheckResult:
|
|
179
242
|
"""ffmpeg is required for video themes; absence is WARN (still usable
|
|
180
243
|
for image-only themes)."""
|
|
@@ -267,6 +330,7 @@ def run_health_checks(platform: Platform) -> HealthReport:
|
|
|
267
330
|
check_config_writable(paths),
|
|
268
331
|
check_devices_visible(platform),
|
|
269
332
|
check_sensors_enumerable(platform),
|
|
333
|
+
check_gpu_sensors(platform),
|
|
270
334
|
check_ffmpeg_present(),
|
|
271
335
|
check_qt_importable(),
|
|
272
336
|
check_udev_rules_linux(),
|
|
@@ -5,6 +5,10 @@ block with a focused configurator that:
|
|
|
5
5
|
|
|
6
6
|
* writes to ``Paths.log_file()`` with rotation at 1 MB × 5 backups so
|
|
7
7
|
long-lived daemons don't fill the disk;
|
|
8
|
+
* also writes a sibling ``<stem>.latest.log`` truncated fresh on every
|
|
9
|
+
process start, so "what did THIS launch do" is always the whole file
|
|
10
|
+
with no rotation/offset math — the rotating log keeps cross-run
|
|
11
|
+
history, the latest log isolates the current run;
|
|
8
12
|
* mirrors WARNING+ to stderr so terminal users see issues without
|
|
9
13
|
digging into the log file;
|
|
10
14
|
* uses a single timestamped format every TRCC logger inherits.
|
|
@@ -23,7 +27,7 @@ from pathlib import Path
|
|
|
23
27
|
|
|
24
28
|
log = logging.getLogger(__name__)
|
|
25
29
|
|
|
26
|
-
_HANDLER_TAG = "
|
|
30
|
+
_HANDLER_TAG = "_trcc_handler"
|
|
27
31
|
# ``name`` is the module logger; ``classname`` is injected by
|
|
28
32
|
# ClassContextFilter; ``funcName``/``lineno`` come free on every record.
|
|
29
33
|
# Result per line: ``trcc.core.commands.device:SetBrightness.execute:208``
|
|
@@ -78,6 +82,7 @@ def configure_logging(
|
|
|
78
82
|
level: int = logging.INFO,
|
|
79
83
|
max_bytes: int = 1_000_000,
|
|
80
84
|
backup_count: int = 5,
|
|
85
|
+
latest_max_bytes: int = 10_000_000,
|
|
81
86
|
stderr_level: int = logging.WARNING,
|
|
82
87
|
) -> None:
|
|
83
88
|
"""Wire the root logger to log_file + stderr. Idempotent.
|
|
@@ -110,6 +115,24 @@ def configure_logging(
|
|
|
110
115
|
setattr(file_handler, _HANDLER_TAG, True)
|
|
111
116
|
root.addHandler(file_handler)
|
|
112
117
|
|
|
118
|
+
# Per-run log: a SECOND file truncated fresh on open (mode="w").
|
|
119
|
+
# ``configure_logging`` runs once per process (CLI root callback /
|
|
120
|
+
# launch entry point), so the truncate happens exactly once per app
|
|
121
|
+
# init and the file holds this run alone. Still a RotatingFileHandler
|
|
122
|
+
# so a long-lived ``-v`` session (video DEBUG can emit ~30–90 lines/s)
|
|
123
|
+
# can't grow the file without bound — it rolls at ``latest_max_bytes``
|
|
124
|
+
# keeping one backup (worst case 2× the cap on disk).
|
|
125
|
+
latest_file = log_file.with_name(f"{log_file.stem}.latest{log_file.suffix}")
|
|
126
|
+
latest_handler = RotatingFileHandler(
|
|
127
|
+
latest_file, mode="w", maxBytes=latest_max_bytes, backupCount=1,
|
|
128
|
+
encoding="utf-8",
|
|
129
|
+
)
|
|
130
|
+
latest_handler.setLevel(level)
|
|
131
|
+
latest_handler.setFormatter(formatter)
|
|
132
|
+
latest_handler.addFilter(context_filter)
|
|
133
|
+
setattr(latest_handler, _HANDLER_TAG, True)
|
|
134
|
+
root.addHandler(latest_handler)
|
|
135
|
+
|
|
113
136
|
stderr_handler = logging.StreamHandler(stream=sys.stderr)
|
|
114
137
|
stderr_handler.setLevel(stderr_level)
|
|
115
138
|
stderr_handler.setFormatter(formatter)
|
|
@@ -118,9 +141,9 @@ def configure_logging(
|
|
|
118
141
|
root.addHandler(stderr_handler)
|
|
119
142
|
|
|
120
143
|
log.info(
|
|
121
|
-
"configure_logging: file=%s level=%s rotate=%d×%d stderr=%s",
|
|
122
|
-
log_file, logging.getLevelName(level),
|
|
123
|
-
logging.getLevelName(stderr_level),
|
|
144
|
+
"configure_logging: file=%s latest=%s level=%s rotate=%d×%d stderr=%s",
|
|
145
|
+
log_file, latest_file, logging.getLevelName(level),
|
|
146
|
+
max_bytes, backup_count, logging.getLevelName(stderr_level),
|
|
124
147
|
)
|
|
125
148
|
|
|
126
149
|
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"""SendScheduler implementations — the execution behind the send worker.
|
|
2
|
+
|
|
3
|
+
``ThreadSendScheduler`` runs one daemon thread per :class:`SendTask` (the
|
|
4
|
+
production driver — single consumer per device ⇒ serialized writes).
|
|
5
|
+
``SyncSendScheduler`` does nothing on its own; tests call :meth:`tick` to drive
|
|
6
|
+
every task deterministically with a controlled clock — no threads, no sleeps.
|
|
7
|
+
|
|
8
|
+
Both are injected at the composition root; the tasks (``DeviceSender``) never
|
|
9
|
+
name a thread. See ``doc/SEND_FOUNDATION.md``.
|
|
10
|
+
"""
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
import logging
|
|
14
|
+
import threading
|
|
15
|
+
import time
|
|
16
|
+
|
|
17
|
+
from ...core.ports import SendScheduler, SendTask
|
|
18
|
+
|
|
19
|
+
log = logging.getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
class _TaskThread:
|
|
23
|
+
"""A daemon thread that drives one task: ``wait(delay) → run_once``."""
|
|
24
|
+
|
|
25
|
+
__slots__ = ("_stop", "_task", "_thread")
|
|
26
|
+
|
|
27
|
+
def __init__(self, task: SendTask) -> None:
|
|
28
|
+
self._task = task
|
|
29
|
+
self._stop = threading.Event()
|
|
30
|
+
self._thread = threading.Thread(
|
|
31
|
+
target=self._run, name=f"trcc-send-{task.key}", daemon=True,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
def start(self) -> None:
|
|
35
|
+
self._thread.start()
|
|
36
|
+
|
|
37
|
+
def _run(self) -> None:
|
|
38
|
+
# First pass establishes the initial delay (e.g. a volatile task wants
|
|
39
|
+
# to keepalive even if no frame has been submitted yet).
|
|
40
|
+
delay = self._task.run_once(time.monotonic())
|
|
41
|
+
while not self._stop.is_set():
|
|
42
|
+
self._task.wait(delay)
|
|
43
|
+
if self._stop.is_set():
|
|
44
|
+
break
|
|
45
|
+
delay = self._task.run_once(time.monotonic())
|
|
46
|
+
|
|
47
|
+
def stop(self, *, join_timeout: float = 2.0) -> None:
|
|
48
|
+
self._stop.set()
|
|
49
|
+
self._task.wake() # interrupt a long-idle wait so the join is prompt
|
|
50
|
+
self._thread.join(timeout=join_timeout)
|
|
51
|
+
if self._thread.is_alive():
|
|
52
|
+
log.warning("ThreadSendScheduler: task %s did not stop within %.1fs",
|
|
53
|
+
self._task.key, join_timeout)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class ThreadSendScheduler(SendScheduler):
|
|
57
|
+
"""One daemon thread per task — the production execution model."""
|
|
58
|
+
|
|
59
|
+
def __init__(self) -> None:
|
|
60
|
+
self._threads: dict[str, _TaskThread] = {}
|
|
61
|
+
self._lock = threading.Lock()
|
|
62
|
+
|
|
63
|
+
def add(self, task: SendTask) -> None:
|
|
64
|
+
log.info("ThreadSendScheduler: add %s", task.key)
|
|
65
|
+
with self._lock:
|
|
66
|
+
existing = self._threads.pop(task.key, None)
|
|
67
|
+
if existing is not None:
|
|
68
|
+
log.warning("ThreadSendScheduler: replacing existing task %s",
|
|
69
|
+
task.key)
|
|
70
|
+
existing.stop()
|
|
71
|
+
worker = _TaskThread(task)
|
|
72
|
+
self._threads[task.key] = worker
|
|
73
|
+
worker.start()
|
|
74
|
+
|
|
75
|
+
def remove(self, key: str) -> None:
|
|
76
|
+
log.info("ThreadSendScheduler: remove %s", key)
|
|
77
|
+
with self._lock:
|
|
78
|
+
worker = self._threads.pop(key, None)
|
|
79
|
+
if worker is not None:
|
|
80
|
+
worker.stop()
|
|
81
|
+
|
|
82
|
+
def shutdown(self) -> None:
|
|
83
|
+
with self._lock:
|
|
84
|
+
workers = list(self._threads.values())
|
|
85
|
+
self._threads.clear()
|
|
86
|
+
log.info("ThreadSendScheduler: shutdown (%d task(s))", len(workers))
|
|
87
|
+
for worker in workers:
|
|
88
|
+
worker.stop()
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
class SyncSendScheduler(SendScheduler):
|
|
92
|
+
"""Deterministic driver — tests call :meth:`tick(now)`; no threads."""
|
|
93
|
+
|
|
94
|
+
def __init__(self) -> None:
|
|
95
|
+
self._tasks: dict[str, SendTask] = {}
|
|
96
|
+
|
|
97
|
+
def add(self, task: SendTask) -> None:
|
|
98
|
+
log.debug("SyncSendScheduler: add %s", task.key)
|
|
99
|
+
self._tasks[task.key] = task
|
|
100
|
+
|
|
101
|
+
def remove(self, key: str) -> None:
|
|
102
|
+
log.debug("SyncSendScheduler: remove %s", key)
|
|
103
|
+
self._tasks.pop(key, None)
|
|
104
|
+
|
|
105
|
+
def shutdown(self) -> None:
|
|
106
|
+
self._tasks.clear()
|
|
107
|
+
|
|
108
|
+
def tick(self, now: float) -> None:
|
|
109
|
+
"""Drive every registered task once with clock *now* (seconds)."""
|
|
110
|
+
for task in list(self._tasks.values()):
|
|
111
|
+
task.run_once(now)
|