mirror of
https://github.com/farion1231/cc-switch.git
synced 2026-07-24 12:44:18 +08:00
fix(linux): resolve WebKitGTK DMA-BUF rendering issue and preserve user .desktop customizations
- Set WEBKIT_DISABLE_DMABUF_RENDERER=1 at startup to fix blank screen on Debian 13.2 and Nvidia GPUs - Only register deep-link handler on first run to avoid overwriting user customizations - Use correct Tauri path API (app.path().data_dir()) instead of dirs::data_dir() to match plugin's actual .desktop file location
This commit is contained in:
+29
-4
@@ -736,10 +736,35 @@ pub fn run() {
|
||||
// Linux 和 Windows 调试模式需要显式注册
|
||||
#[cfg(any(target_os = "linux", all(debug_assertions, windows)))]
|
||||
{
|
||||
if let Err(e) = app.deep_link().register_all() {
|
||||
log::error!("✗ Failed to register deep link schemes: {}", e);
|
||||
} else {
|
||||
log::info!("✓ Deep link schemes registered (Linux/Windows)");
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
// Use Tauri's path API to get correct path (includes app identifier)
|
||||
// tauri-plugin-deep-link writes to: ~/.local/share/com.ccswitch.desktop/applications/cc-switch-handler.desktop
|
||||
// Only register if .desktop file doesn't exist to avoid overwriting user customizations
|
||||
let should_register = app
|
||||
.path()
|
||||
.data_dir()
|
||||
.map(|d| !d.join("applications/cc-switch-handler.desktop").exists())
|
||||
.unwrap_or(true);
|
||||
|
||||
if should_register {
|
||||
if let Err(e) = app.deep_link().register_all() {
|
||||
log::error!("✗ Failed to register deep link schemes: {}", e);
|
||||
} else {
|
||||
log::info!("✓ Deep link schemes registered (Linux)");
|
||||
}
|
||||
} else {
|
||||
log::info!("⊘ Deep link handler already exists, skipping registration");
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(all(debug_assertions, windows))]
|
||||
{
|
||||
if let Err(e) = app.deep_link().register_all() {
|
||||
log::error!("✗ Failed to register deep link schemes: {}", e);
|
||||
} else {
|
||||
log::info!("✓ Deep link schemes registered (Windows debug)");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2,5 +2,15 @@
|
||||
#![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
|
||||
|
||||
fn main() {
|
||||
// 在 Linux 上设置 WebKit 环境变量以解决 DMA-BUF 渲染问题
|
||||
// 某些 Linux 系统(如 Debian 13.2、Nvidia GPU)上 WebKitGTK 的 DMA-BUF 渲染器可能导致白屏/黑屏
|
||||
// 参考: https://github.com/tauri-apps/tauri/issues/9394
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
if std::env::var("WEBKIT_DISABLE_DMABUF_RENDERER").is_err() {
|
||||
std::env::set_var("WEBKIT_DISABLE_DMABUF_RENDERER", "1");
|
||||
}
|
||||
}
|
||||
|
||||
cc_switch_lib::run();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user