trcc-linux 9.8.7__tar.gz → 9.8.9__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.8.7 → trcc_linux-9.8.9}/PKG-INFO +8 -7
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/README.md +7 -6
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/pyproject.toml +1 -1
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/__version__.py +1 -1
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/device/led.py +27 -11
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/diagnostics/debug_report.py +53 -3
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/diagnostics/health.py +58 -3
- trcc_linux-9.8.9/src/trcc/adapters/diagnostics/install.py +206 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/bsd.py +12 -5
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/linux.py +12 -14
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/macos.py +12 -5
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/windows.py +12 -5
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/app.py +41 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/commands/device.py +21 -10
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/commands/system.py +6 -3
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/commands/theme.py +51 -22
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/geometry.py +17 -13
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/led_models.py +12 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/led_protocol.py +62 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/models.py +1 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/ports.py +12 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/protocol.py +10 -4
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/results.py +11 -1
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/led_segment.py +87 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/api/_shared.py +3 -1
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/api/schemas.py +2 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/lcd_handler.py +49 -2
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/splash.py +10 -26
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/trcc_app.py +17 -65
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_about.py +10 -20
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_led_control.py +3 -1
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_screen_led.py +31 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/led_display.py +2 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/theme_directories.py +27 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qapp.py +50 -1
- trcc_linux-9.8.9/src/trcc/ui/qt_tray.py +144 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/app.py +66 -6
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/assets.py +23 -2
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/device_picker.py +20 -1
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/cloud_theme_browser.py +40 -6
- trcc_linux-9.8.9/src/trcc/ui/qtgui/panels/device_panel.py +197 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/local_theme_browser.py +13 -2
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/mask_browser.py +12 -2
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_backend_finish.py +47 -5
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_diagnose_parse_report.py +44 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_display_rotation.py +94 -18
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_geometry.py +13 -11
- trcc_linux-9.8.9/tests/test_install_info.py +295 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_led_pm_registry.py +113 -0
- trcc_linux-9.8.9/tests/test_led_segment.py +119 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_widescreen_rotation.py +17 -3
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/ui/presentation/test_theme_directories.py +58 -0
- trcc_linux-9.8.7/src/trcc/ui/qtgui/panels/device_panel.py +0 -90
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/.gitignore +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/LICENSE +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/__main__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/_boot.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/_entry.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/device/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/device/_pyusb_find.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/device/ali_lcd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/device/bulk_lcd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/device/hid_lcd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/device/ly_lcd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/device/scsi_lcd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/device/transport.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/device/usb_bot_scsi.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/diagnostics/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/diagnostics/adapter.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/diagnostics/doctor.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/infra/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/infra/logging.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/infra/network.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/infra/send_scheduler.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/infra/sysinfo_config.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/render/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/render/qt.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/repo/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/repo/data_install.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/repo/github_releases.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/repo/http.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/screencast/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/screencast/qt.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/_hwinfo.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/_lhm.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/_macos_hid.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/_msacpi.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/_powermetrics.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/_smc.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/_sysctl.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/_wmi_gpu.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/aggregator.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/bsd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/chain.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/gpu_detect.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/hwmon.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/macos.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/nvml.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/psutil_sources.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/sensors/windows.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/_autostart.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/_devd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/_elevate.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/_hotplug.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/_imc_timings.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/_macos_setup.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/_selinux.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/_udev.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/_windows_wmi.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/_winusb.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/system/spd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/theme/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/adapters/theme/cloud.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/LibreHardwareMonitor.config +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/com.github.lexonight1.trcc.policy +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/fonts/MSYH.TTC +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/fonts/MSYHBD.TTC +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/fonts/README.md +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/icons/app.ico +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/icons/trcc.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/icons/trcc_128x128.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/icons/trcc_16x16.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/icons/trcc_24x24.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/icons/trcc_256x256.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/icons/trcc_32x32.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/icons/trcc_48x48.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/icons/trcc_64x64.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/trcc-imc +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/trcc-linux.desktop +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/assets/trcc-quirk-fix.service +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/_colors.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/_safe.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/_version.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/commands/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/commands/_base.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/commands/_helpers.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/commands/led.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/device_recovery.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/diagnostics.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/errors.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/events.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/i18n.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/registry.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/core/variants.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/daemon.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/data/trcc_usb.te +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ipc.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/proxy.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/_ansi.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/_clock.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/_dc.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/audio.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/cloud_theme.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/data_install.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/device_sender.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/display.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/first_run.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/led_animation_loop.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/led_effects.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/media.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/metrics_loop.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/metrics_personalize.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/migration.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/overlay.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/quickstart.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/settings.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/slideshow.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/theme.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/video_cache.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/services/video_export.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/_errors.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/api/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/api/config.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/api/devices.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/api/display.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/api/led.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/api/main.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/api/system.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/api/theme.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/api/trcc.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/cli/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/cli/_ctx.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/cli/config.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/cli/device.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/cli/display.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/cli/led.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/cli/main.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/cli/shell.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/cli/system.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/cli/theme.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/_ui_state.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/240240.gif +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/240320.gif +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/320240.gif +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/320320.gif +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AK120 Digital.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AK120 Digitala.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AK120_Digital.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AK120_Digitala.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AS120 VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AS120 VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AS120_VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AS120_VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AX120 DIGITAL.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AX120 DIGITALa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AX120_DIGITAL.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1AX120_DIGITALa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1BA120 VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1BA120 VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1BA120_VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1BA120_VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1CORE VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1CORE VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1CORE_VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1CORE_VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1CZ1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1CZ1a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1CZ2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1CZ2a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1CZTV.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1CZTVa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1ELITE VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1ELITE VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1ELITE_VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1ELITE_VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN HORIZON PRO.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN HORIZON PROa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN MAGIC PRO.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN MAGIC PROa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN VISION V2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN VISION V2a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN WARFRAME PRO.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN WARFRAME PROa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN WARFRAME SE.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN WARFRAME SEa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN WARFRAME.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN WARFRAMEa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_HORIZON_PRO.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_HORIZON_PROa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_MAGIC_PRO.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_MAGIC_PROa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_VISION_V2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_VISION_V2a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAME.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAME_PRO.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAME_PROa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAME_SE.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAME_SEa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1FROZEN_WARFRAMEa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1GRAND VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1GRAND VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1GRAND_VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1GRAND_VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1HR10 2280 PRO DIGITAL.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1HR10 2280 PRO DIGITALa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1HYPER VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1HYPER VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1HYPER_VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1HYPER_VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1KVMALEDC6.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1KVMALEDC6a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC10.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC10a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC13.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC13a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC15.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC15a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC1a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC2JD.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC2JDa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC2a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC3a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC5.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC5a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC7.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC7a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC8.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC8a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC9.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LC9a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD10.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD10a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD11.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD11a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD6.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD6a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD7.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD7a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD8.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD8a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD9.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LD9a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF014.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF014a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF10.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF10V.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF10Va.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF10a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF11.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF11a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF12.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF12a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF13.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF13a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF14.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF14a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF15.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF15a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF16.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF167.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF16a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF17a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF18.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF18a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF19.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF19a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF20.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF20a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF21.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF21a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF22.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF22a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF25.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF25a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF8.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LF8a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM16SE.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM16SEa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM19SE.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM19SEa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM22.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM22a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM24.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM24a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM26.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM26a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM27.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM27a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM30.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1LM30a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Mjolnir VISION PRO.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Mjolnir VISION PROa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Mjolnir VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Mjolnir VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Mjolnir_VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Mjolnir_VISION_PRO.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Mjolnir_VISION_PROa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Mjolnir_VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1PA120 DIGITAL.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1PA120 DIGITALa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1PA120_DIGITAL.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1PA120_DIGITALa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1PC1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1PC1a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1RK120 DIGITAL.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1RK120 DIGITALa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1RK120_DIGITAL.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1RK120_DIGITALa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1RP130 VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1RP130 VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1RP130_VISION.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1RP130_VISIONa.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1RX1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1RX1a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Stream Vision.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Stream Visiona.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Stream_Vision.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/A1Stream_Visiona.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/about_dropdown.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/about_dropdown_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/about_dropdown_select.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/about_update.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/about_update_overlay.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_about_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_brightness_0.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_brightness_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_brightness_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_brightness_3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_export.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_form_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_help.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_import.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_main_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_power.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_power_hover.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_save.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_sysinfo_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_tab_cloud.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_tab_cloud_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_tab_local.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_tab_local_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_tab_mask.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_tab_mask_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_tab_mask_lower.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_tab_settings.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_tab_settings_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_theme_base_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_theme_gallery_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/app_theme_settings_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/carousel_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/carousel_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/carousel_3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/carousel_4.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/carousel_5.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/carousel_6.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/carousel_btn.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/carousel_btn_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/carousel_select_frame.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/color_panel_eyedropper.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/color_panel_picker.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/color_panel_selector_ring.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/color_panel_slider_thumb.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/color_wheel_knob.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/color_wheel_knob_0.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/color_wheel_toggle_hover.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/color_wheel_toggle_off.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/color_wheel_toggle_on.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_12h.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_24h.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_border.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_border_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_crop.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_date_dm.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_date_dmy.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_date_md.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_date_ymd.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_digit_font.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_fit_height.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_fit_width.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_function.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_function_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_icon.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_icon_gif.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_icon_image.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_icon_livestream.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_icon_mask.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_icon_network.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_icon_video.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m1_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m2_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m3_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m4.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m4_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m5.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m5_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m6.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_m6_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_minus.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_network_btn.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_plus.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_rotate.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_slider_thumb.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_text_font.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_unit_c.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/display_mode_unit_f.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/frozen_warframe_ultra.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/frozen_warframe_ultra_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_110x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_116x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_1280x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_160x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_180x400.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_180x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_240x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_240x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_240x400.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_240x427.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_270x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_320x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_320x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_320x86.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_360x360.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_400x180.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_400x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_427x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_480x110.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_480x116.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_480x160.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_480x180.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_480x270.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_480x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/image_cut_86x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_aggregate.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_aggregate_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_cz1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_kvma.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_lc1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_lc2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_lf10.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_lf11.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_lf12.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_lf13.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_lf15.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_lf8.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_rgb_lf13.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_segment.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_bg_segment_4zone.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_dropdown.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_dropdown_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_dropdown_highlight.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_dropdown_highlight_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_dropdown_menu.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_dropdown_menu_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_external.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_external_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_helmet_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_helmet_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_helmet_3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_helmet_4.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_helmet_5.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bar_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bar_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bar_3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bar_4.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bar_5.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bar_6.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bg_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bg_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bg_3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bg_4.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bg_5.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bg_5_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_meter_bg_6.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_10.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_10_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_11.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_11_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_12.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_12_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_1_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_2_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_3_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_4.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_4_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_5.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_5_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_6.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_6_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_7.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_7_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_8.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_8_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_9.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_mode_9_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_power.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_power_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preset_blue.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preset_cyan.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preset_green.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preset_orange.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preset_purple.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preset_red.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preset_white.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preset_yellow.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_ak120.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_ax120.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_cz1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_frozen_horizon_pro.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_frozen_magic_pro.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_lc1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_lc2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_lf10.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_lf11.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_lf12.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_lf13.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_lf15.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_lf8.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_pa120.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_preview_pa120_space.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_show_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_show_1_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_show_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_show_2_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_show_3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_show_3_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_slider_thumb.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_btn_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_btn_1_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_btn_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_btn_2_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_btn_3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_btn_3_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_btn_4.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_btn_4_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_1_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_2_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_3_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_4.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_4_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_5.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_5_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_6.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/led_zone_mode_6_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_label_sysinfo.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_label_sysinfo_1_en.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_label_sysinfo_1_tc.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_label_sysinfo_en.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_label_sysinfo_tc.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_label_text.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_label_text_en.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_label_text_tc.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_label_time.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_label_time_en.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_label_time_tc.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_mode_date.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_mode_hardware.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_mode_text.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_mode_time.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_mode_weekday.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/overlay_select.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_110x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_116x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_160x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_180x400.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_180x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_240x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_240x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_240x400.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_240x427.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_270x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_320x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_320x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_320x320_round.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_320x86.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_360x360_round.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_400x180.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_400x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_427x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_480x110.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_480x116.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_480x160.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_480x180.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_480x270.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_480x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_480x480_round.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_86x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_animation.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_btn.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_btn_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_pause.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_play.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_player_control_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_1280x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_1920x440.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_1920x462.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_320x960.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_360x800.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_440x1920.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_462x1920.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_480x1280.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_480x800.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_480x854.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_540x960.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_800x360.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_800x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_854x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_960x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_popup_960x540.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_res_240x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_res_240x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_res_320x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_res_320x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_round_mask_320x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_round_mask_360x360.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_round_mask_480x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_video_controls_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/preview_video_controls_bg_alt.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/screen_led_deco_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/screen_led_deco_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/screen_led_deco_3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/screen_led_deco_4.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/screen_led_deco_cz1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/secondary_screen_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/secondary_screen_bg_d.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/secondary_screen_bg_e.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/secondary_screen_bg_en.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/secondary_screen_bg_f.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/secondary_screen_bg_h.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/secondary_screen_bg_p.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/secondary_screen_bg_r.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/secondary_screen_bg_tc.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/secondary_screen_bg_x.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_content.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_content_btn.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_content_mask.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_date.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_date_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_icon.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_link_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_text.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_text_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_time.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_time_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_weekday.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_add_weekday_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_anim_sync.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_background.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_brightness.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_keyboard_sync_1.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_keyboard_sync_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_keyboard_sync_3.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_module.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_overlay.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_overlay_add_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_overlay_color_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_overlay_grid_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_overlay_table_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/settings_params.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_brightness_bar.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_checkbox_off.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_checkbox_on.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_clip_a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_clip_b.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_close.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_close_2.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_dropdown.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_dropdown_bg_2x.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_dropdown_bg_4x.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_dropdown_highlight.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_loading_animation.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_progress_bar.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_round_close.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_round_confirm.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_scrollbar_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_scrollbar_thumb.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_shortcut_size_slider.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_thread_multi.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_thread_single.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_toggle_off.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shared_toggle_on.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shortcuts_panel.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shortcuts_panel_d.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shortcuts_panel_e.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shortcuts_panel_en.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shortcuts_panel_f.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shortcuts_panel_p.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shortcuts_panel_r.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shortcuts_panel_tc.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/shortcuts_panel_x.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sidebar_about.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sidebar_about_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sidebar_about_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sidebar_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sidebar_no_device.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sidebar_sensor.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sidebar_sensor_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sidebar_splash.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sidebar_sysinfo_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_a.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_a_180.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_a_270.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_a_90.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_b.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_b_180.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_b_270.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_b_90.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_c.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_c_180.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_c_270.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/split_overlay_c_90.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_add_group.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_cpu.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_custom.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_dram.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_fan.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_gpu.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_hdd.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_net.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_next_page.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_prev_page.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_scrollbar.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/sysinfo_select.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_browser_filter.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_browser_filter_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_cloud_label.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_cloud_label_d.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_cloud_label_e.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_cloud_label_en.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_cloud_label_f.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_cloud_label_h.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_cloud_label_p.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_cloud_label_r.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_cloud_label_tc.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_cloud_label_x.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_local_carousel.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_local_carousel_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_local_export_all.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_local_multi_select.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_local_multi_select_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_local_select_frame.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_local_select_frame_active.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/theme_mask_label.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_110x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_116x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_1280x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_160x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_180x400.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_180x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_240x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_240x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_240x400.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_240x427.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_270x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_320x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_320x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_320x86.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_360x360.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_400x180.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_400x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_427x240.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_480x110.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_480x116.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_480x160.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_480x180.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_480x270.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_480x480.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_86x320.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_bg.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets/video_cut_bg_alt.png +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/assets.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/base.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/base_handler.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/bus_bridge.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/color_and_add_panels.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/constants.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/display_mode_panels.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/eyedropper.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/led_handler.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/overlay_element.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/overlay_grid.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/pipewire_capture.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/screen_capture.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_activity_sidebar.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_color_wheel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_device.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_image_cut.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_info_module.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_preview.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_sensor_picker.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_system_info.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_theme_local.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_theme_mask.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_theme_setting.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_theme_web.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/gui/uc_video_cut.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/device_presentation.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/lcd_panel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/lcd_presentation_model.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/led_metrics_format.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/led_panel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/led_zone_model.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/overlay_model.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/overlay_serialization.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/preview_geometry.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/sensor_display.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/presentation/slideshow_model.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/base.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/bus_bridge.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/color_wheel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/eyedropper.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/image_crop.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/about_panel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/configuration_panel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/display_panel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/led/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/led/_base.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/led/advanced_tab.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/led/color_tab.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/led/mode_tab.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/led/segment_tab.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/led/zone_tab.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/led_panel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/overlay_editor.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/preview_panel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/screencast_panel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/sidebar.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/status_panel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/panels/system_panel.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/region_overlay.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/screen_overlay.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/sensor_picker.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/splash.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/src/trcc/ui/qtgui/video_crop.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/adapters/infra/__init__.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/adapters/infra/test_sysinfo_config_fan_map.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/adapters/system/test_elevate.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/adapters/system/test_imc_timings.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/adapters/system/test_linux_imc.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/adapters/system/test_spd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/adapters/system/test_windows_mem_disk.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/adapters/system/test_windows_permissions.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/adapters/system/test_windows_wmi_seam.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/conftest.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/mock_platform.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_ali_lcd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_api_routes.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_app_senders.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_architecture_boundaries.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_autostart.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_autostart_macos.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_autostart_windows.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_boot_animation_command.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_boot_animation_device.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_bulk_lcd_geometry.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_cli_commands.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_clock.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_cloud_themes.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_commands.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_connect_failure_hints.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_connection_issues.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_control_center.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_daemon.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_data_install.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_dc_codec.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_dc_reader.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_device_catalog_smoke.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_device_recovery.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_device_sender.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_device_surface_matrix.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_diagnostics.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_display_tweaks.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_first_run_and_migration.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_gpu_extras_install.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_gpu_preference.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_gui_empty_state.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_gui_entry_exit.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_gui_panels.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_gui_raise_existing.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_hid_lcd_geometry.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_hotplug.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_hotplug_bsd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_hotplug_polling.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_hotplug_windows.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_i18n.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_integration_pipeline.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_ipc_server.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_ipc_windows_fallback.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_ipc_wire.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_lcd_panel_model.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_led_animation_loop.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_led_assets.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_led_display_model.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_led_effects.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_led_handler_requires_app.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_led_panel_model.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_led_remap.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_led_send.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_led_settings_commands.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_library_migration.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_ly_lcd_geometry.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_manpages.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_mask_commands.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_mask_rendering.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_metrics_personalize.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_mock_reply_override.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_models.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_orientation_cloud_background.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_orientation_reload.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_overlay_clock.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_overlay_element_id.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_overlay_grid_adapter.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_overlay_metric_unit.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_overlay_resolve.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_overlay_show_unit.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_packaging_entrypoints.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_platform_hw_probes.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_pyusb_find_seam.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_quickstart.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_render_led.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_restore_device_state.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_run_setup_order.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_scsi_lcd_geometry.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_selinux_install.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_send_color.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_sensor_chain.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_sensors.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_sensors_bsd.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_sensors_lhm_subprocess.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_sensors_macos.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_sensors_nvml.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_sensors_windows.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_settings_migration.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_shell.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_system_commands.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_system_resume.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_theme_persistence.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_theme_service.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_transports.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_udev.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_ui_parity.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_ui_surfaces_smoke.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_variant_presentation_audit.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_video_cache.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_video_playback.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_wire_rotation.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/test_wmi_gpu_fallback.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/ui/presentation/test_device_presentation.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/ui/presentation/test_lcd_presentation_model.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/ui/presentation/test_led_metrics_format.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/ui/presentation/test_led_zone_model.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/ui/presentation/test_overlay_model.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/ui/presentation/test_overlay_view_binding.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/ui/presentation/test_preview_geometry.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/ui/presentation/test_sensor_display.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/ui/presentation/test_slideshow_model.py +0 -0
- {trcc_linux-9.8.7 → trcc_linux-9.8.9}/tests/ui/presentation/test_theme_local_binding.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: trcc-linux
|
|
3
|
-
Version: 9.8.
|
|
3
|
+
Version: 9.8.9
|
|
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
|
|
@@ -126,7 +126,7 @@ Description-Content-Type: text/markdown
|
|
|
126
126
|
|
|
127
127
|
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.
|
|
128
128
|
|
|
129
|
-
> **This project wouldn't exist without our testers.** I only own one device. Every supported device in this list works because someone plugged it in, ran `trcc report`, and told me what broke. 32 testers helped us go from "SCSI only" to full C# feature parity with 6 USB protocols, 16 FBL resolutions, and
|
|
129
|
+
> **This project wouldn't exist without our testers.** I only own one device. Every supported device in this list works because someone plugged it in, ran `trcc report`, and told me what broke. 32 testers helped us go from "SCSI only" to full C# feature parity with 6 USB protocols, 16 FBL resolutions, and 13 LED styles. Open source at its best — see [Contributors](#contributors) below.
|
|
130
130
|
|
|
131
131
|
> Unofficial community project, not affiliated with Thermalright. Built with [Claude](https://claude.ai) (AI) for protocol reverse engineering and code generation, guided by human architecture decisions and logical assessment.
|
|
132
132
|
|
|
@@ -306,7 +306,7 @@ Set the angle to **90°** (or 270°) in the GUI, then open **Cloud Themes** —
|
|
|
306
306
|
| **Media** | Video/GIF playback on LCD, video trimmer, image cropper, screen cast (X11 + Wayland), mic audio visualization |
|
|
307
307
|
| **Overlay Editor** | Text, sensors, date/time overlays — font picker, dynamic scaling, color picker |
|
|
308
308
|
| **Hardware Sensors** | 77+ sensors — CPU/GPU temp, fan speed, power, usage — customizable dashboard |
|
|
309
|
-
| **LED Control** |
|
|
309
|
+
| **LED Control** | 13 LED styles, zone carousel, breathing/rainbow/static/wave modes, per-zone color |
|
|
310
310
|
| **Display** | 16 resolutions (240x240 to 1920x462), 0/90/180/270 rotation, 3 brightness levels |
|
|
311
311
|
| **Multi-device** | Per-device config, auto-detect, multi-device with device selection |
|
|
312
312
|
| **Security** | udev rules, polkit policy, SELinux support, no root required after setup |
|
|
@@ -364,7 +364,7 @@ Run `lsusb` to find your USB ID (`xxxx:xxxx` after `ID`), then match it below.
|
|
|
364
364
|
**HID LED devices** — RGB LED control:
|
|
365
365
|
| USB ID | Devices |
|
|
366
366
|
|--------|---------|
|
|
367
|
-
| `0416:8001` | AX120 DIGITAL, PA120 DIGITAL, Peerless Assassin 120 DIGITAL ARGB White, Assassin X 120R Digital ARGB, Phantom Spirit 120 Digital EVO, HR10 2280 PRO Digital, and others (model auto-detected via handshake) |
|
|
367
|
+
| `0416:8001` | AX120 DIGITAL, PA120 DIGITAL, Peerless Assassin 120 DIGITAL ARGB White, Assassin X 120R Digital ARGB, Phantom Spirit 120 Digital EVO, HR10 2280 PRO Digital, Magic Qube, and others (model auto-detected via handshake) |
|
|
368
368
|
|
|
369
369
|
> See the [full device list with protocol details](doc/REFERENCE_DEVICES.md) and the [Device Testing Guide](doc/GUIDE_DEVICE_TESTING.md) if you have an untested device.
|
|
370
370
|
|
|
@@ -409,20 +409,21 @@ If a probe goes `BAD`, that's the bug — fix in `src/`, re-run, see `PASS`. Eve
|
|
|
409
409
|
| HID Type 3 | pyusb interrupt | TARAN ARMS |
|
|
410
410
|
| Bulk | pyusb bulk | GrandVision 360, Mjolnir Vision 360, Wonder Vision Pro 360, Frozen Warframe Pro |
|
|
411
411
|
| LY | pyusb bulk (chunked) | Trofeo Vision 9.16 LCD |
|
|
412
|
-
| LED | pyusb HID | All LED segment display devices (
|
|
412
|
+
| LED | pyusb HID | All LED segment display devices (13 styles) |
|
|
413
413
|
|
|
414
414
|
## Code Contributors
|
|
415
415
|
|
|
416
416
|
These folks didn't just report a problem — they opened the editor and sent a fix. On a solo project, a merged pull request is about the most generous thing you can do, and every one of these shipped to every user:
|
|
417
417
|
|
|
418
|
+
- **[@jphilipb](https://github.com/jphilipb)** — [#215](https://github.com/Lexonight1/thermalright-trcc-linux/pull/215): reverse-engineered and hardware-validated the Thermalright Magic Qube (65-LED segment display) — a device that doesn't even exist in the Windows app — and wired up full support from scratch.
|
|
418
419
|
- **[@Hythera](https://github.com/Hythera)** — [#209](https://github.com/Lexonight1/thermalright-trcc-linux/pull/209): had the flake read its version straight from `pyproject.toml`, killing an entire place I used to have to bump by hand every release.
|
|
419
420
|
- **[@elsiedotcafe](https://github.com/elsiedotcafe)** — [#123](https://github.com/Lexonight1/thermalright-trcc-linux/pull/123): pinned the PySide6 package to a stable source so the build stops breaking.
|
|
420
421
|
|
|
421
|
-
Thank you
|
|
422
|
+
Thank you all — genuinely. PRs are always welcome, and you'll land right here.
|
|
422
423
|
|
|
423
424
|
## Contributors
|
|
424
425
|
|
|
425
|
-
A huge thank you to every single person who filed an issue, pasted a `trcc report`, or just said "it doesn't work." You are the reason this project supports 6 USB protocols, 16 resolutions, and
|
|
426
|
+
A huge thank you to every single person who filed an issue, pasted a `trcc report`, or just said "it doesn't work." You are the reason this project supports 6 USB protocols, 16 resolutions, and 13 LED styles from a single developer with one device. Every bug report, every test on hardware I don't own, every "hey this is broken" — that's open source at its best. You're not wasting your time. You're building something together.
|
|
426
427
|
|
|
427
428
|
Special thanks to everyone who has contributed invaluable reports to this project:
|
|
428
429
|
|
|
@@ -53,7 +53,7 @@
|
|
|
53
53
|
|
|
54
54
|
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.
|
|
55
55
|
|
|
56
|
-
> **This project wouldn't exist without our testers.** I only own one device. Every supported device in this list works because someone plugged it in, ran `trcc report`, and told me what broke. 32 testers helped us go from "SCSI only" to full C# feature parity with 6 USB protocols, 16 FBL resolutions, and
|
|
56
|
+
> **This project wouldn't exist without our testers.** I only own one device. Every supported device in this list works because someone plugged it in, ran `trcc report`, and told me what broke. 32 testers helped us go from "SCSI only" to full C# feature parity with 6 USB protocols, 16 FBL resolutions, and 13 LED styles. Open source at its best — see [Contributors](#contributors) below.
|
|
57
57
|
|
|
58
58
|
> Unofficial community project, not affiliated with Thermalright. Built with [Claude](https://claude.ai) (AI) for protocol reverse engineering and code generation, guided by human architecture decisions and logical assessment.
|
|
59
59
|
|
|
@@ -233,7 +233,7 @@ Set the angle to **90°** (or 270°) in the GUI, then open **Cloud Themes** —
|
|
|
233
233
|
| **Media** | Video/GIF playback on LCD, video trimmer, image cropper, screen cast (X11 + Wayland), mic audio visualization |
|
|
234
234
|
| **Overlay Editor** | Text, sensors, date/time overlays — font picker, dynamic scaling, color picker |
|
|
235
235
|
| **Hardware Sensors** | 77+ sensors — CPU/GPU temp, fan speed, power, usage — customizable dashboard |
|
|
236
|
-
| **LED Control** |
|
|
236
|
+
| **LED Control** | 13 LED styles, zone carousel, breathing/rainbow/static/wave modes, per-zone color |
|
|
237
237
|
| **Display** | 16 resolutions (240x240 to 1920x462), 0/90/180/270 rotation, 3 brightness levels |
|
|
238
238
|
| **Multi-device** | Per-device config, auto-detect, multi-device with device selection |
|
|
239
239
|
| **Security** | udev rules, polkit policy, SELinux support, no root required after setup |
|
|
@@ -291,7 +291,7 @@ Run `lsusb` to find your USB ID (`xxxx:xxxx` after `ID`), then match it below.
|
|
|
291
291
|
**HID LED devices** — RGB LED control:
|
|
292
292
|
| USB ID | Devices |
|
|
293
293
|
|--------|---------|
|
|
294
|
-
| `0416:8001` | AX120 DIGITAL, PA120 DIGITAL, Peerless Assassin 120 DIGITAL ARGB White, Assassin X 120R Digital ARGB, Phantom Spirit 120 Digital EVO, HR10 2280 PRO Digital, and others (model auto-detected via handshake) |
|
|
294
|
+
| `0416:8001` | AX120 DIGITAL, PA120 DIGITAL, Peerless Assassin 120 DIGITAL ARGB White, Assassin X 120R Digital ARGB, Phantom Spirit 120 Digital EVO, HR10 2280 PRO Digital, Magic Qube, and others (model auto-detected via handshake) |
|
|
295
295
|
|
|
296
296
|
> See the [full device list with protocol details](doc/REFERENCE_DEVICES.md) and the [Device Testing Guide](doc/GUIDE_DEVICE_TESTING.md) if you have an untested device.
|
|
297
297
|
|
|
@@ -336,20 +336,21 @@ If a probe goes `BAD`, that's the bug — fix in `src/`, re-run, see `PASS`. Eve
|
|
|
336
336
|
| HID Type 3 | pyusb interrupt | TARAN ARMS |
|
|
337
337
|
| Bulk | pyusb bulk | GrandVision 360, Mjolnir Vision 360, Wonder Vision Pro 360, Frozen Warframe Pro |
|
|
338
338
|
| LY | pyusb bulk (chunked) | Trofeo Vision 9.16 LCD |
|
|
339
|
-
| LED | pyusb HID | All LED segment display devices (
|
|
339
|
+
| LED | pyusb HID | All LED segment display devices (13 styles) |
|
|
340
340
|
|
|
341
341
|
## Code Contributors
|
|
342
342
|
|
|
343
343
|
These folks didn't just report a problem — they opened the editor and sent a fix. On a solo project, a merged pull request is about the most generous thing you can do, and every one of these shipped to every user:
|
|
344
344
|
|
|
345
|
+
- **[@jphilipb](https://github.com/jphilipb)** — [#215](https://github.com/Lexonight1/thermalright-trcc-linux/pull/215): reverse-engineered and hardware-validated the Thermalright Magic Qube (65-LED segment display) — a device that doesn't even exist in the Windows app — and wired up full support from scratch.
|
|
345
346
|
- **[@Hythera](https://github.com/Hythera)** — [#209](https://github.com/Lexonight1/thermalright-trcc-linux/pull/209): had the flake read its version straight from `pyproject.toml`, killing an entire place I used to have to bump by hand every release.
|
|
346
347
|
- **[@elsiedotcafe](https://github.com/elsiedotcafe)** — [#123](https://github.com/Lexonight1/thermalright-trcc-linux/pull/123): pinned the PySide6 package to a stable source so the build stops breaking.
|
|
347
348
|
|
|
348
|
-
Thank you
|
|
349
|
+
Thank you all — genuinely. PRs are always welcome, and you'll land right here.
|
|
349
350
|
|
|
350
351
|
## Contributors
|
|
351
352
|
|
|
352
|
-
A huge thank you to every single person who filed an issue, pasted a `trcc report`, or just said "it doesn't work." You are the reason this project supports 6 USB protocols, 16 resolutions, and
|
|
353
|
+
A huge thank you to every single person who filed an issue, pasted a `trcc report`, or just said "it doesn't work." You are the reason this project supports 6 USB protocols, 16 resolutions, and 13 LED styles from a single developer with one device. Every bug report, every test on hardware I don't own, every "hey this is broken" — that's open source at its best. You're not wasting your time. You're building something together.
|
|
353
354
|
|
|
354
355
|
Special thanks to everyone who has contributed invaluable reports to this project:
|
|
355
356
|
|
|
@@ -26,7 +26,13 @@ from ...core.errors import (
|
|
|
26
26
|
UnsupportedOperationError,
|
|
27
27
|
)
|
|
28
28
|
from ...core.led_models import LedPayload
|
|
29
|
-
from ...core.led_protocol import
|
|
29
|
+
from ...core.led_protocol import (
|
|
30
|
+
is_fingerprint_header,
|
|
31
|
+
remap_led_colors,
|
|
32
|
+
resolve_handshake,
|
|
33
|
+
resolve_model_name,
|
|
34
|
+
resolve_pm,
|
|
35
|
+
)
|
|
30
36
|
from ...core.models import HandshakeResult, LedHandshakeResult, ProductInfo, Wire
|
|
31
37
|
from ...core.ports import BulkTransport, Device
|
|
32
38
|
from . import DeviceFactory
|
|
@@ -206,11 +212,15 @@ class Led(Device[BulkTransport]):
|
|
|
206
212
|
time.sleep(_HANDSHAKE_RETRY_DELAY_S)
|
|
207
213
|
continue
|
|
208
214
|
|
|
209
|
-
# Windows DeviceDataReceived1 doesn't validate magic/cmd —
|
|
210
|
-
#
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
215
|
+
# Windows DeviceDataReceived1 doesn't validate magic/cmd — we
|
|
216
|
+
# accept regardless. A recognised fingerprint header (e.g. the
|
|
217
|
+
# Magic Qube's DC DD AA 01) is expected, so only warn on a truly
|
|
218
|
+
# unknown magic / cmd byte.
|
|
219
|
+
header = bytes(resp[0:4])
|
|
220
|
+
recognised = is_fingerprint_header(header)
|
|
221
|
+
if header != _MAGIC and not recognised:
|
|
222
|
+
log.warning("Led handshake: unexpected magic %s", header.hex())
|
|
223
|
+
if len(resp) > 12 and resp[12] != 1 and not recognised:
|
|
214
224
|
log.warning("Led handshake: unexpected cmd byte %d", resp[12])
|
|
215
225
|
|
|
216
226
|
# PM and SUB extraction — matches Windows UCDevice.cs offsets:
|
|
@@ -218,10 +228,13 @@ class Led(Device[BulkTransport]):
|
|
|
218
228
|
self._pm = resp[5]
|
|
219
229
|
self._sub = resp[4]
|
|
220
230
|
|
|
221
|
-
#
|
|
222
|
-
#
|
|
223
|
-
#
|
|
224
|
-
|
|
231
|
+
# Handshake → device style + readable model name. The header
|
|
232
|
+
# fingerprint wins first (some SKUs reuse a PM byte but ship a
|
|
233
|
+
# distinct handshake header — e.g. the Magic Qube shares PM=208
|
|
234
|
+
# with CZ1 but answers with DC DD AA 01), then the PM registry.
|
|
235
|
+
# Falls back to the registry's ``led_style`` / ``product`` when
|
|
236
|
+
# the firmware reports a PM not in PmRegistry (e.g. a new SKU).
|
|
237
|
+
entry = resolve_handshake(header, self._pm, self._sub)
|
|
225
238
|
if entry is not None:
|
|
226
239
|
style = entry.style
|
|
227
240
|
model_name = entry.model_name
|
|
@@ -278,7 +291,10 @@ class Led(Device[BulkTransport]):
|
|
|
278
291
|
cached = _probe_cache_load(self.info.vid, self.info.pid)
|
|
279
292
|
if cached is not None:
|
|
280
293
|
cpm, csub, cname = cached
|
|
281
|
-
|
|
294
|
+
# A fingerprint device (e.g. Magic Qube) shares its PM byte with
|
|
295
|
+
# another product, so recover it by cached model name first — the
|
|
296
|
+
# cache doesn't persist the handshake header — then by PM byte.
|
|
297
|
+
entry = resolve_model_name(cname) or resolve_pm(cpm, csub)
|
|
282
298
|
log.warning(
|
|
283
299
|
"Led handshake: live failed after %d retries — using "
|
|
284
300
|
"disk cache (PM=%d SUB=%d model=%s, last_err=%s)",
|
|
@@ -35,6 +35,7 @@ from ...core.registry import find_product
|
|
|
35
35
|
from ..device import DeviceFactory
|
|
36
36
|
from ..infra.logging import tail_log
|
|
37
37
|
from .health import HealthReport, run_health_checks
|
|
38
|
+
from .install import InstallInfo, collect_install_info
|
|
38
39
|
|
|
39
40
|
log = logging.getLogger(__name__)
|
|
40
41
|
|
|
@@ -50,6 +51,7 @@ class DebugReport:
|
|
|
50
51
|
timestamp: str
|
|
51
52
|
platform_info: dict[str, str]
|
|
52
53
|
paths: dict[str, str]
|
|
54
|
+
install: InstallInfo | None = None
|
|
53
55
|
devices: list[dict[str, str]] = field(default_factory=list)
|
|
54
56
|
devices_error: str = ""
|
|
55
57
|
sensors: list[dict[str, str]] = field(default_factory=list)
|
|
@@ -66,6 +68,9 @@ class DebugReport:
|
|
|
66
68
|
log.info("render_text: called")
|
|
67
69
|
sections: list[str] = []
|
|
68
70
|
sections.append(_header(self.timestamp))
|
|
71
|
+
# Install first: every other section is worthless if this is not the
|
|
72
|
+
# trcc the reporter thinks they are running.
|
|
73
|
+
sections.append(_render_install(self.install))
|
|
69
74
|
sections.append(_render_kv("Platform", self.platform_info))
|
|
70
75
|
sections.append(_render_kv("Paths", self.paths))
|
|
71
76
|
sections.append(_render_devices(self.devices, self.devices_error))
|
|
@@ -96,6 +101,15 @@ def build_debug_report(
|
|
|
96
101
|
log_tail_lines)
|
|
97
102
|
timestamp = datetime.now(tz=timezone.utc).strftime("%Y-%m-%d %H:%M:%S UTC")
|
|
98
103
|
|
|
104
|
+
# Best-effort like every other collector: a report from a broken install is
|
|
105
|
+
# exactly when this matters, so it must degrade to "(unavailable)" rather
|
|
106
|
+
# than abort the report that would have explained the breakage.
|
|
107
|
+
try:
|
|
108
|
+
install = collect_install_info()
|
|
109
|
+
except Exception as e:
|
|
110
|
+
log.exception("build_debug_report: install info failed: %s", e)
|
|
111
|
+
install = None
|
|
112
|
+
|
|
99
113
|
info = _collect_platform_info(platform)
|
|
100
114
|
path_table = _collect_paths(platform)
|
|
101
115
|
devices, devices_err = _collect_devices(platform)
|
|
@@ -113,6 +127,7 @@ def build_debug_report(
|
|
|
113
127
|
timestamp=timestamp,
|
|
114
128
|
platform_info=info,
|
|
115
129
|
paths=path_table,
|
|
130
|
+
install=install,
|
|
116
131
|
devices=devices,
|
|
117
132
|
devices_error=devices_err,
|
|
118
133
|
sensors=sensors,
|
|
@@ -141,11 +156,10 @@ def write_debug_report(report: DebugReport, output_path: Path) -> Path:
|
|
|
141
156
|
|
|
142
157
|
def _collect_platform_info(platform: Platform) -> dict[str, str]:
|
|
143
158
|
log.debug("_collect_platform_info: called")
|
|
159
|
+
# Version / path / installer live in the Install section, which owns the
|
|
160
|
+
# "which trcc is this?" question in one place — see _render_install.
|
|
144
161
|
return {
|
|
145
162
|
"distro": platform.distro_name(),
|
|
146
|
-
"install_method": platform.install_method(),
|
|
147
|
-
"python": f"{sys.version_info.major}.{sys.version_info.minor}."
|
|
148
|
-
f"{sys.version_info.micro}",
|
|
149
163
|
"python_impl": py_platform.python_implementation(),
|
|
150
164
|
"machine": py_platform.machine(),
|
|
151
165
|
"system": py_platform.system(),
|
|
@@ -375,6 +389,42 @@ def _render_kv(title: str, table: dict[str, str]) -> str:
|
|
|
375
389
|
return f"## {title}\n{body}" if body else f"## {title}\n (empty)"
|
|
376
390
|
|
|
377
391
|
|
|
392
|
+
def _render_install(info: InstallInfo | None) -> str:
|
|
393
|
+
"""Which trcc is running — and loud warnings when it isn't the expected one.
|
|
394
|
+
|
|
395
|
+
The warnings are spelled out in full because the reporter reading them is
|
|
396
|
+
the person who has to act, and neither of the two failures is guessable
|
|
397
|
+
from the outside: a stale cache and a duplicate binary both present as
|
|
398
|
+
"I upgraded and nothing changed".
|
|
399
|
+
"""
|
|
400
|
+
if info is None:
|
|
401
|
+
return "## Install\n (unavailable)"
|
|
402
|
+
rows = {
|
|
403
|
+
"version": info.version,
|
|
404
|
+
"installed_by": info.installer,
|
|
405
|
+
"module_path": str(info.module_path or "unknown"),
|
|
406
|
+
"interpreter": info.interpreter,
|
|
407
|
+
"python": info.python,
|
|
408
|
+
}
|
|
409
|
+
lines = [f" {k:18} {v}" for k, v in rows.items()]
|
|
410
|
+
for exe in info.executables:
|
|
411
|
+
lines.append(f" {'on PATH':18} {exe.path} -> {exe.interpreter}")
|
|
412
|
+
if info.bytecode_stale:
|
|
413
|
+
lines.append("")
|
|
414
|
+
lines.append(f" !! STALE BYTECODE — running {info.version} but the source "
|
|
415
|
+
f"says {info.source_version}.")
|
|
416
|
+
lines.append(" !! Python is serving a cached .pyc that no longer matches "
|
|
417
|
+
"the code on disk.")
|
|
418
|
+
lines.append(" !! Fix: delete __pycache__ dirs, or reinstall.")
|
|
419
|
+
if info.duplicates:
|
|
420
|
+
lines.append("")
|
|
421
|
+
lines.append(f" !! {len(info.executables)} trcc found on PATH — an upgrade "
|
|
422
|
+
"may land on one")
|
|
423
|
+
lines.append(" !! while a different one keeps running. The first listed "
|
|
424
|
+
"above is what runs.")
|
|
425
|
+
return "## Install\n" + "\n".join(lines)
|
|
426
|
+
|
|
427
|
+
|
|
378
428
|
def _render_devices(rows: list[dict[str, str]], error: str) -> str:
|
|
379
429
|
if error:
|
|
380
430
|
return f"## Devices\n Scan failed: {error}"
|
|
@@ -11,9 +11,9 @@ Severity ladder:
|
|
|
11
11
|
* ``WARN`` — works on this machine but reporter should know.
|
|
12
12
|
* ``FAIL`` — feature won't work until this is fixed.
|
|
13
13
|
|
|
14
|
-
Adding a check: define a function returning ``HealthCheckResult`` and
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
Adding a check: define a function returning ``HealthCheckResult`` and add
|
|
15
|
+
it to the list in ``run_health_checks``. The doctor + report bundlers both
|
|
16
|
+
go through that function, so registration = inclusion.
|
|
17
17
|
"""
|
|
18
18
|
from __future__ import annotations
|
|
19
19
|
|
|
@@ -26,6 +26,7 @@ from pathlib import Path
|
|
|
26
26
|
from ...core.diagnostics import HealthCheckResult, HealthReport, Severity
|
|
27
27
|
from ...core.ports import Paths, Platform
|
|
28
28
|
from ..sensors.nvml import NVML_RELOAD_HINT, nvml_init_state
|
|
29
|
+
from .install import collect_install_info
|
|
29
30
|
|
|
30
31
|
log = logging.getLogger(__name__)
|
|
31
32
|
|
|
@@ -48,6 +49,57 @@ __all__ = [
|
|
|
48
49
|
# =========================================================================
|
|
49
50
|
|
|
50
51
|
|
|
52
|
+
def check_install_integrity() -> HealthCheckResult:
|
|
53
|
+
"""Is the running trcc the one the user thinks they installed?
|
|
54
|
+
|
|
55
|
+
Two failures both present to the user as "I upgraded and nothing
|
|
56
|
+
changed", and neither is visible from the outside:
|
|
57
|
+
|
|
58
|
+
* stale bytecode — Python serves a cached .pyc whose recorded mtime+size
|
|
59
|
+
still match a since-edited source (FAIL: every other diagnostic, and
|
|
60
|
+
the version itself, is then untrustworthy);
|
|
61
|
+
* duplicate binaries on PATH — the upgrade landed on one, the other keeps
|
|
62
|
+
running (WARN: legitimate for venv/pipx users, so not fatal).
|
|
63
|
+
"""
|
|
64
|
+
log.info("check_install_integrity: called")
|
|
65
|
+
try:
|
|
66
|
+
info = collect_install_info()
|
|
67
|
+
except Exception as e:
|
|
68
|
+
log.exception("check_install_integrity: collection failed: %s", e)
|
|
69
|
+
return HealthCheckResult(
|
|
70
|
+
name="install-integrity", severity="WARN",
|
|
71
|
+
message=f"Could not inspect the install: {e}",
|
|
72
|
+
)
|
|
73
|
+
if info.bytecode_stale:
|
|
74
|
+
return HealthCheckResult(
|
|
75
|
+
name="install-integrity", severity="FAIL",
|
|
76
|
+
message=(
|
|
77
|
+
f"Stale bytecode — running {info.version} but "
|
|
78
|
+
f"{info.module_path} says {info.source_version}"
|
|
79
|
+
),
|
|
80
|
+
fix_hint=(
|
|
81
|
+
"Python is serving a cached .pyc that no longer matches the "
|
|
82
|
+
"source. Delete the __pycache__ directories under "
|
|
83
|
+
f"{info.module_path}, or reinstall trcc-linux."
|
|
84
|
+
),
|
|
85
|
+
)
|
|
86
|
+
if info.duplicates:
|
|
87
|
+
found = ", ".join(str(e.path) for e in info.executables)
|
|
88
|
+
return HealthCheckResult(
|
|
89
|
+
name="install-integrity", severity="WARN",
|
|
90
|
+
message=f"{len(info.executables)} trcc on PATH: {found}",
|
|
91
|
+
fix_hint=(
|
|
92
|
+
f"'{info.executables[0].path}' is the one that runs. An "
|
|
93
|
+
"upgrade applied to the other will appear to do nothing. "
|
|
94
|
+
"Remove whichever you don't want."
|
|
95
|
+
),
|
|
96
|
+
)
|
|
97
|
+
return HealthCheckResult(
|
|
98
|
+
name="install-integrity", severity="OK",
|
|
99
|
+
message=f"{info.version} via {info.installer} ({info.interpreter})",
|
|
100
|
+
)
|
|
101
|
+
|
|
102
|
+
|
|
51
103
|
def check_python_version(platform: Platform) -> HealthCheckResult:
|
|
52
104
|
"""Python ≥ 3.11 is the project minimum (match-statement + slots)."""
|
|
53
105
|
log.info("check_python_version: called")
|
|
@@ -301,6 +353,9 @@ def run_health_checks(platform: Platform) -> HealthReport:
|
|
|
301
353
|
log.info("run_health_checks: starting")
|
|
302
354
|
paths = platform.paths()
|
|
303
355
|
checks: list[HealthCheckResult] = [
|
|
356
|
+
# First: if this isn't the trcc they think it is, nothing below means
|
|
357
|
+
# anything.
|
|
358
|
+
check_install_integrity(),
|
|
304
359
|
check_python_version(platform),
|
|
305
360
|
check_log_writable(paths),
|
|
306
361
|
check_config_writable(paths),
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
"""Install integrity — which trcc is actually running, and is it the one
|
|
2
|
+
the user thinks?
|
|
3
|
+
|
|
4
|
+
Every field here exists because a real issue was unanswerable without it:
|
|
5
|
+
|
|
6
|
+
* **version / source_version / bytecode_stale** — a stale ``.pyc`` served
|
|
7
|
+
``9.9.9`` from a file that read ``9.8.8``. Python's timestamp check
|
|
8
|
+
compares source mtime+size against the values baked into the ``.pyc``;
|
|
9
|
+
a rewrite that preserves both (same-length version strings do) leaves
|
|
10
|
+
the cache authoritative and wrong, silently, forever.
|
|
11
|
+
* **executables / duplicates** — ``shutil.which`` returns the FIRST match.
|
|
12
|
+
Two ``trcc`` on PATH pointing at two interpreters is the commonest cause
|
|
13
|
+
of "I upgraded and nothing changed" (#175: six weeks on v9.7.0 while
|
|
14
|
+
installing 9.8.3 repeatedly; #220: three releases behind on "latest").
|
|
15
|
+
* **installer** — the ``INSTALLER`` file pip writes is the only honest
|
|
16
|
+
answer. The old per-OS heuristics guessed from PATH and were wrong for
|
|
17
|
+
rpm / deb / venv / source checkouts alike.
|
|
18
|
+
|
|
19
|
+
Deliberately dependency-free (stdlib only) and side-effect-free: it is the
|
|
20
|
+
first thing a broken install runs, so it must not need a working App.
|
|
21
|
+
"""
|
|
22
|
+
from __future__ import annotations
|
|
23
|
+
|
|
24
|
+
import logging
|
|
25
|
+
import os
|
|
26
|
+
import re
|
|
27
|
+
import sys
|
|
28
|
+
from dataclasses import dataclass
|
|
29
|
+
from pathlib import Path
|
|
30
|
+
|
|
31
|
+
log = logging.getLogger(__name__)
|
|
32
|
+
|
|
33
|
+
# `__version__ = "9.8.8"` — matched against the SOURCE text, never exec'd.
|
|
34
|
+
_VERSION_RE = re.compile(r"""^__version__\s*=\s*['"]([^'"]+)['"]""", re.MULTILINE)
|
|
35
|
+
|
|
36
|
+
_UNKNOWN = "unknown"
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@dataclass(frozen=True, slots=True)
|
|
40
|
+
class Executable:
|
|
41
|
+
"""One ``trcc`` found on PATH, and the interpreter it runs under."""
|
|
42
|
+
|
|
43
|
+
path: Path
|
|
44
|
+
interpreter: str = _UNKNOWN
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
@dataclass(frozen=True, slots=True)
|
|
48
|
+
class InstallInfo:
|
|
49
|
+
"""Everything needed to answer "which trcc is this?"."""
|
|
50
|
+
|
|
51
|
+
version: str
|
|
52
|
+
source_version: str
|
|
53
|
+
module_path: Path | None
|
|
54
|
+
interpreter: str
|
|
55
|
+
python: str
|
|
56
|
+
installer: str
|
|
57
|
+
executables: tuple[Executable, ...] = ()
|
|
58
|
+
|
|
59
|
+
@property
|
|
60
|
+
def bytecode_stale(self) -> bool:
|
|
61
|
+
"""Imported version disagrees with its own source file.
|
|
62
|
+
|
|
63
|
+
Means Python is serving a cached ``.pyc`` that no longer matches
|
|
64
|
+
the code on disk — so every claim about "what version is this" is
|
|
65
|
+
untrustworthy until the cache is cleared.
|
|
66
|
+
"""
|
|
67
|
+
return (
|
|
68
|
+
self.source_version != _UNKNOWN
|
|
69
|
+
and self.version != self.source_version
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
@property
|
|
73
|
+
def duplicates(self) -> bool:
|
|
74
|
+
"""More than one ``trcc`` on PATH — an upgrade can land on either."""
|
|
75
|
+
return len(self.executables) > 1
|
|
76
|
+
|
|
77
|
+
@property
|
|
78
|
+
def healthy(self) -> bool:
|
|
79
|
+
return not self.bytecode_stale and not self.duplicates
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def _read_source_version(module_path: Path | None) -> str:
|
|
83
|
+
"""Parse ``__version__`` out of the package's own ``__version__.py``.
|
|
84
|
+
|
|
85
|
+
Text-parsed rather than imported: importing would hit the very bytecode
|
|
86
|
+
cache we are trying to check, and would always agree with itself.
|
|
87
|
+
"""
|
|
88
|
+
if module_path is None:
|
|
89
|
+
return _UNKNOWN
|
|
90
|
+
source = module_path / "__version__.py"
|
|
91
|
+
try:
|
|
92
|
+
text = source.read_text(encoding="utf-8")
|
|
93
|
+
except OSError as e:
|
|
94
|
+
log.debug("_read_source_version: cannot read %s: %s", source, e)
|
|
95
|
+
return _UNKNOWN
|
|
96
|
+
m = _VERSION_RE.search(text)
|
|
97
|
+
if m is None:
|
|
98
|
+
log.warning("_read_source_version: no __version__ assignment in %s", source)
|
|
99
|
+
return _UNKNOWN
|
|
100
|
+
log.debug("_read_source_version: %s → %s", source, m.group(1))
|
|
101
|
+
return m.group(1)
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def _shebang_interpreter(path: Path) -> str:
|
|
105
|
+
"""The interpreter a console script runs under, from its shebang."""
|
|
106
|
+
try:
|
|
107
|
+
with path.open("rb") as fh:
|
|
108
|
+
first = fh.readline(256)
|
|
109
|
+
except OSError as e:
|
|
110
|
+
log.debug("_shebang_interpreter: cannot read %s: %s", path, e)
|
|
111
|
+
return _UNKNOWN
|
|
112
|
+
if not first.startswith(b"#!"):
|
|
113
|
+
return _UNKNOWN
|
|
114
|
+
return first[2:].decode("utf-8", "replace").strip()
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def _find_executables(name: str = "trcc") -> tuple[Executable, ...]:
|
|
118
|
+
"""Every ``name`` on PATH — not just the first.
|
|
119
|
+
|
|
120
|
+
``shutil.which`` stops at the first hit, which is precisely what hides a
|
|
121
|
+
duplicate install from the person trying to debug one.
|
|
122
|
+
"""
|
|
123
|
+
exts = [""]
|
|
124
|
+
if os.name == "nt":
|
|
125
|
+
exts = [e.lower() for e in os.environ.get("PATHEXT", ".EXE").split(os.pathsep)]
|
|
126
|
+
found: list[Executable] = []
|
|
127
|
+
seen: set[Path] = set()
|
|
128
|
+
for entry in os.environ.get("PATH", "").split(os.pathsep):
|
|
129
|
+
if not entry:
|
|
130
|
+
continue
|
|
131
|
+
for ext in exts:
|
|
132
|
+
candidate = Path(entry) / f"{name}{ext}"
|
|
133
|
+
try:
|
|
134
|
+
resolved = candidate.resolve()
|
|
135
|
+
usable = candidate.is_file() and os.access(candidate, os.X_OK)
|
|
136
|
+
except OSError:
|
|
137
|
+
continue
|
|
138
|
+
if not usable or resolved in seen:
|
|
139
|
+
continue
|
|
140
|
+
seen.add(resolved)
|
|
141
|
+
found.append(Executable(candidate, _shebang_interpreter(candidate)))
|
|
142
|
+
log.debug("_find_executables: %d %r on PATH", len(found), name)
|
|
143
|
+
return tuple(found)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def detect_installer() -> str:
|
|
147
|
+
"""How this package got here — ``INSTALLER`` metadata over guesswork.
|
|
148
|
+
|
|
149
|
+
Supersedes the per-OS "is trcc on PATH? then pip" heuristics, which
|
|
150
|
+
answered "pip" for rpm, deb, venv and source checkouts alike.
|
|
151
|
+
"""
|
|
152
|
+
if getattr(sys, "frozen", False):
|
|
153
|
+
return "pyinstaller"
|
|
154
|
+
if "pipx" in sys.prefix:
|
|
155
|
+
return "pipx"
|
|
156
|
+
try:
|
|
157
|
+
from importlib.metadata import PackageNotFoundError, distribution
|
|
158
|
+
try:
|
|
159
|
+
installer = (distribution("trcc-linux").read_text("INSTALLER") or "").strip()
|
|
160
|
+
except PackageNotFoundError:
|
|
161
|
+
log.debug("detect_installer: trcc-linux has no distribution metadata")
|
|
162
|
+
return "source"
|
|
163
|
+
except (OSError, ImportError) as e:
|
|
164
|
+
log.debug("detect_installer: metadata unavailable: %s", e)
|
|
165
|
+
return _UNKNOWN
|
|
166
|
+
if installer:
|
|
167
|
+
log.debug("detect_installer: INSTALLER=%s", installer)
|
|
168
|
+
return installer
|
|
169
|
+
# Installed as a distribution but nobody claimed it — a distro package
|
|
170
|
+
# manager (rpm/deb/pacman) drops the dist-info without an INSTALLER file.
|
|
171
|
+
return "package"
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
def collect_install_info() -> InstallInfo:
|
|
175
|
+
"""Gather the running install's identity. Never raises."""
|
|
176
|
+
log.info("collect_install_info: called")
|
|
177
|
+
import trcc
|
|
178
|
+
|
|
179
|
+
module_file = getattr(trcc, "__file__", None)
|
|
180
|
+
module_path = Path(module_file).parent if module_file else None
|
|
181
|
+
info = InstallInfo(
|
|
182
|
+
version=trcc.__version__,
|
|
183
|
+
source_version=_read_source_version(module_path),
|
|
184
|
+
module_path=module_path,
|
|
185
|
+
interpreter=sys.executable,
|
|
186
|
+
python=f"{sys.version_info.major}.{sys.version_info.minor}."
|
|
187
|
+
f"{sys.version_info.micro}",
|
|
188
|
+
installer=detect_installer(),
|
|
189
|
+
executables=_find_executables(),
|
|
190
|
+
)
|
|
191
|
+
if info.bytecode_stale:
|
|
192
|
+
log.warning(
|
|
193
|
+
"collect_install_info: STALE BYTECODE — imported %s but %s says %s; "
|
|
194
|
+
"clear __pycache__",
|
|
195
|
+
info.version, module_path, info.source_version,
|
|
196
|
+
)
|
|
197
|
+
if info.duplicates:
|
|
198
|
+
log.warning(
|
|
199
|
+
"collect_install_info: %d trcc on PATH (%s) — an upgrade may land "
|
|
200
|
+
"on one and leave the other running",
|
|
201
|
+
len(info.executables),
|
|
202
|
+
", ".join(str(e.path) for e in info.executables),
|
|
203
|
+
)
|
|
204
|
+
log.info("collect_install_info: %s via %s (%s)",
|
|
205
|
+
info.version, info.installer, info.interpreter)
|
|
206
|
+
return info
|
|
@@ -179,11 +179,18 @@ class BSDPlatform(Platform):
|
|
|
179
179
|
return "FreeBSD" if "freebsd" in sys.platform else "BSD"
|
|
180
180
|
|
|
181
181
|
def install_method(self) -> str:
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
182
|
+
"""How this package got here — delegated to the one honest detector.
|
|
183
|
+
|
|
184
|
+
Was a per-OS guess: this returned "source" for every pip install
|
|
185
|
+
(and Linux returned "pip" whenever `trcc` was merely on PATH, so
|
|
186
|
+
rpm/deb/venv/source checkouts all reported "pip"). The reading of
|
|
187
|
+
`INSTALLER` metadata is OS-agnostic, so there is nothing per-OS to
|
|
188
|
+
implement — see adapters/diagnostics/install.detect_installer.
|
|
189
|
+
"""
|
|
190
|
+
from ..diagnostics.install import detect_installer
|
|
191
|
+
method = detect_installer()
|
|
192
|
+
log.info("install_method: %s", method)
|
|
193
|
+
return method
|
|
187
194
|
|
|
188
195
|
# ── Per-OS diagnostic hints (pkg) ─────────────────────────────────
|
|
189
196
|
|