refactor: use tauri's own method to switch themes (#243)

* refactor: use tauri's own method to switch themes

* chore: restore version to 0.1.0
This commit is contained in:
ayangweb
2025-03-05 15:41:08 +08:00
committed by GitHub
parent 0e469db697
commit c7b201f068
8 changed files with 149 additions and 477 deletions

View File

@@ -1,7 +1,7 @@
{
"name": "coco",
"private": true,
"version": "0.2.0-beta.1",
"version": "0.1.0",
"type": "module",
"scripts": {
"dev": "vite",

500
src-tauri/Cargo.lock generated
View File

@@ -180,17 +180,7 @@ dependencies = [
"wayland-backend",
"wayland-client",
"wayland-protocols",
"zbus 5.5.0",
]
[[package]]
name = "async-broadcast"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7c48ccdbf6ca6b121e0f586cbc0e73ae440e56c67c30fa0873b4e110d9c26d2b"
dependencies = [
"event-listener 2.5.3",
"futures-core",
"zbus",
]
[[package]]
@@ -199,7 +189,7 @@ version = "0.7.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "435a87a52755b8f27fcf321ac4f04b2802e337c8c4872923137471ec39c37532"
dependencies = [
"event-listener 5.4.0",
"event-listener",
"event-listener-strategy",
"futures-core",
"pin-project-lite",
@@ -225,52 +215,20 @@ checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec"
dependencies = [
"async-task",
"concurrent-queue",
"fastrand 2.3.0",
"futures-lite 2.6.0",
"fastrand",
"futures-lite",
"slab",
]
[[package]]
name = "async-fs"
version = "1.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "279cf904654eeebfa37ac9bb1598880884924aab82e290aa65c9e77a0e142e06"
dependencies = [
"async-lock 2.8.0",
"autocfg",
"blocking",
"futures-lite 1.13.0",
]
[[package]]
name = "async-fs"
version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a"
dependencies = [
"async-lock 3.4.0",
"async-lock",
"blocking",
"futures-lite 2.6.0",
]
[[package]]
name = "async-io"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af"
dependencies = [
"async-lock 2.8.0",
"autocfg",
"cfg-if",
"concurrent-queue",
"futures-lite 1.13.0",
"log",
"parking",
"polling 2.8.0",
"rustix 0.37.28",
"slab",
"socket2 0.4.10",
"waker-fn",
"futures-lite",
]
[[package]]
@@ -279,56 +237,30 @@ version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059"
dependencies = [
"async-lock 3.4.0",
"async-lock",
"cfg-if",
"concurrent-queue",
"futures-io",
"futures-lite 2.6.0",
"futures-lite",
"parking",
"polling 3.7.4",
"rustix 0.38.44",
"polling",
"rustix",
"slab",
"tracing",
"windows-sys 0.59.0",
]
[[package]]
name = "async-lock"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b"
dependencies = [
"event-listener 2.5.3",
]
[[package]]
name = "async-lock"
version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18"
dependencies = [
"event-listener 5.4.0",
"event-listener",
"event-listener-strategy",
"pin-project-lite",
]
[[package]]
name = "async-process"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea6438ba0a08d81529c69b36700fa2f95837bfe3e776ab39cde9c14d9149da88"
dependencies = [
"async-io 1.13.0",
"async-lock 2.8.0",
"async-signal",
"blocking",
"cfg-if",
"event-listener 3.1.0",
"futures-lite 1.13.0",
"rustix 0.38.44",
"windows-sys 0.48.0",
]
[[package]]
name = "async-process"
version = "2.3.0"
@@ -336,15 +268,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "63255f1dc2381611000436537bbedfe83183faa303a5a0edaf191edef06526bb"
dependencies = [
"async-channel",
"async-io 2.4.0",
"async-lock 3.4.0",
"async-io",
"async-lock",
"async-signal",
"async-task",
"blocking",
"cfg-if",
"event-listener 5.4.0",
"futures-lite 2.6.0",
"rustix 0.38.44",
"event-listener",
"futures-lite",
"rustix",
"tracing",
]
@@ -365,13 +297,13 @@ version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "637e00349800c0bdf8bfc21ebbc0b6524abea702b0da4168ac00d070d0c0b9f3"
dependencies = [
"async-io 2.4.0",
"async-lock 3.4.0",
"async-io",
"async-lock",
"atomic-waker",
"cfg-if",
"futures-core",
"futures-io",
"rustix 0.38.44",
"rustix",
"signal-hook-registry",
"slab",
"windows-sys 0.59.0",
@@ -565,7 +497,7 @@ dependencies = [
"async-channel",
"async-task",
"futures-io",
"futures-lite 2.6.0",
"futures-lite",
"piper",
]
@@ -771,7 +703,7 @@ dependencies = [
[[package]]
name = "coco"
version = "0.2.0-beta.1"
version = "0.1.0"
dependencies = [
"async-trait",
"base64 0.13.1",
@@ -811,7 +743,6 @@ dependencies = [
"tauri-plugin-shell",
"tauri-plugin-single-instance",
"tauri-plugin-store",
"tauri-plugin-theme",
"tauri-plugin-updater",
"tauri-plugin-websocket",
"thiserror 1.0.69",
@@ -1162,17 +1093,6 @@ dependencies = [
"serde",
]
[[package]]
name = "derivative"
version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcc3dd5e9e9c0b295d6e1e4d811fb6f157d5ffd784b8d202fc62eac8035a770b"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
]
[[package]]
name = "derive_arbitrary"
version = "1.4.1"
@@ -1234,16 +1154,6 @@ dependencies = [
"dirs-sys 0.5.0",
]
[[package]]
name = "dirs-next"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1"
dependencies = [
"cfg-if",
"dirs-sys-next",
]
[[package]]
name = "dirs-sys"
version = "0.3.7"
@@ -1279,17 +1189,6 @@ dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "dirs-sys-next"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d"
dependencies = [
"libc",
"redox_users 0.4.6",
"winapi",
]
[[package]]
name = "dispatch"
version = "0.2.0"
@@ -1531,23 +1430,6 @@ dependencies = [
"windows-sys 0.59.0",
]
[[package]]
name = "event-listener"
version = "2.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0"
[[package]]
name = "event-listener"
version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d93877bcde0eb80ca09131a08d23f0a5c18a620b01db137dba666d18cd9b30c2"
dependencies = [
"concurrent-queue",
"parking",
"pin-project-lite",
]
[[package]]
name = "event-listener"
version = "5.4.0"
@@ -1565,7 +1447,7 @@ version = "0.5.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3c3e4e0dd3673c1139bf041f3008816d9cf2946bbfac2945c09e523b8d7b05b2"
dependencies = [
"event-listener 5.4.0",
"event-listener",
"pin-project-lite",
]
@@ -1584,15 +1466,6 @@ dependencies = [
"zune-inflate",
]
[[package]]
name = "fastrand"
version = "1.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be"
dependencies = [
"instant",
]
[[package]]
name = "fastrand"
version = "2.3.0"
@@ -1785,28 +1658,13 @@ version = "0.3.31"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6"
[[package]]
name = "futures-lite"
version = "1.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce"
dependencies = [
"fastrand 1.9.0",
"futures-core",
"futures-io",
"memchr",
"parking",
"pin-project-lite",
"waker-fn",
]
[[package]]
name = "futures-lite"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532"
dependencies = [
"fastrand 2.3.0",
"fastrand",
"futures-core",
"futures-io",
"parking",
@@ -1984,7 +1842,7 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dc3655aa6818d65bc620d6911f05aa7b6aeb596291e1e9f79e52df85583d1e30"
dependencies = [
"rustix 0.38.44",
"rustix",
"windows-targets 0.52.6",
]
@@ -2353,12 +2211,6 @@ version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea"
[[package]]
name = "hermit-abi"
version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024"
[[package]]
name = "hermit-abi"
version = "0.4.0"
@@ -2565,7 +2417,7 @@ dependencies = [
"http-body 1.0.1",
"hyper 1.6.0",
"pin-project-lite",
"socket2 0.5.8",
"socket2",
"tokio",
"tower-service",
"tracing",
@@ -2839,15 +2691,6 @@ dependencies = [
"libc",
]
[[package]]
name = "instant"
version = "0.1.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222"
dependencies = [
"cfg-if",
]
[[package]]
name = "interpolate_name"
version = "0.2.4"
@@ -2859,17 +2702,6 @@ dependencies = [
"syn 2.0.99",
]
[[package]]
name = "io-lifetimes"
version = "1.0.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2"
dependencies = [
"hermit-abi 0.3.9",
"libc",
"windows-sys 0.48.0",
]
[[package]]
name = "ipnet"
version = "2.11.0"
@@ -3150,12 +2982,6 @@ dependencies = [
"redox_syscall",
]
[[package]]
name = "linux-raw-sys"
version = "0.3.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519"
[[package]]
name = "linux-raw-sys"
version = "0.4.15"
@@ -4228,7 +4054,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066"
dependencies = [
"atomic-waker",
"fastrand 2.3.0",
"fastrand",
"futures-io",
]
@@ -4282,22 +4108,6 @@ dependencies = [
"miniz_oxide",
]
[[package]]
name = "polling"
version = "2.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce"
dependencies = [
"autocfg",
"bitflags 1.3.2",
"cfg-if",
"concurrent-queue",
"libc",
"log",
"pin-project-lite",
"windows-sys 0.48.0",
]
[[package]]
name = "polling"
version = "3.7.4"
@@ -4306,9 +4116,9 @@ checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f"
dependencies = [
"cfg-if",
"concurrent-queue",
"hermit-abi 0.4.0",
"hermit-abi",
"pin-project-lite",
"rustix 0.38.44",
"rustix",
"tracing",
"windows-sys 0.59.0",
]
@@ -4490,7 +4300,7 @@ dependencies = [
"quinn-udp",
"rustc-hash",
"rustls 0.23.23",
"socket2 0.5.8",
"socket2",
"thiserror 2.0.12",
"tokio",
"tracing",
@@ -4525,7 +4335,7 @@ dependencies = [
"cfg_aliases",
"libc",
"once_cell",
"socket2 0.5.8",
"socket2",
"tracing",
"windows-sys 0.59.0",
]
@@ -4938,20 +4748,6 @@ dependencies = [
"semver",
]
[[package]]
name = "rustix"
version = "0.37.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "519165d378b97752ca44bbe15047d5d3409e875f39327546b42ac81d7e18c1b6"
dependencies = [
"bitflags 1.3.2",
"errno",
"io-lifetimes",
"libc",
"linux-raw-sys 0.3.8",
"windows-sys 0.48.0",
]
[[package]]
name = "rustix"
version = "0.38.44"
@@ -4961,7 +4757,7 @@ dependencies = [
"bitflags 2.9.0",
"errno",
"libc",
"linux-raw-sys 0.4.15",
"linux-raw-sys",
"windows-sys 0.59.0",
]
@@ -5410,16 +5206,6 @@ version = "1.14.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7fcf8323ef1faaee30a44a340193b1ac6814fd9b7b4e88e9d4519a3e4abe1cfd"
[[package]]
name = "socket2"
version = "0.4.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d"
dependencies = [
"libc",
"winapi",
]
[[package]]
name = "socket2"
version = "0.5.8"
@@ -5750,7 +5536,7 @@ dependencies = [
"url",
"urlpattern",
"webkit2gtk",
"webview2-com 0.36.0",
"webview2-com",
"window-vibrancy",
"windows 0.60.0",
]
@@ -6086,7 +5872,7 @@ dependencies = [
"thiserror 2.0.12",
"tracing",
"windows-sys 0.59.0",
"zbus 5.5.0",
"zbus",
]
[[package]]
@@ -6105,27 +5891,6 @@ dependencies = [
"tracing",
]
[[package]]
name = "tauri-plugin-theme"
version = "2.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b864387f499226249658227bbe17e928361bbc069ced57649eb300e2744d132b"
dependencies = [
"cocoa",
"dirs-next",
"futures-lite 2.6.0",
"gtk",
"serde",
"tauri",
"tauri-plugin",
"tintanum",
"tokio",
"webview2-com 0.33.0",
"windows 0.58.0",
"windows-core 0.58.0",
"windows-version",
]
[[package]]
name = "tauri-plugin-updater"
version = "2.5.1"
@@ -6217,7 +5982,7 @@ dependencies = [
"tauri-utils",
"url",
"webkit2gtk",
"webview2-com 0.36.0",
"webview2-com",
"windows 0.60.0",
"wry",
]
@@ -6276,10 +6041,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230"
dependencies = [
"cfg-if",
"fastrand 2.3.0",
"fastrand",
"getrandom 0.3.1",
"once_cell",
"rustix 0.38.44",
"rustix",
"windows-sys 0.59.0",
]
@@ -6382,16 +6147,6 @@ dependencies = [
"time-core",
]
[[package]]
name = "tintanum"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7abbcf9173afc80733c20b7e27a30bc9284d6535bdbde2a70904032de63e16e8"
dependencies = [
"futures-lite 1.13.0",
"zbus 3.15.2",
]
[[package]]
name = "tiny-keccak"
version = "2.0.2"
@@ -6439,7 +6194,7 @@ dependencies = [
"parking_lot",
"pin-project-lite",
"signal-hook-registry",
"socket2 0.5.8",
"socket2",
"tokio-macros",
"tracing",
"windows-sys 0.52.0",
@@ -6930,12 +6685,6 @@ dependencies = [
"libc",
]
[[package]]
name = "waker-fn"
version = "1.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "317211a0dc0ceedd78fb2ca9a44aed3d7b9b26f81870d485c07122b4350673b7"
[[package]]
name = "walkdir"
version = "2.5.0"
@@ -7068,7 +6817,7 @@ checksum = "b7208998eaa3870dad37ec8836979581506e0c5c64c20c9e79e9d2a10d6f47bf"
dependencies = [
"cc",
"downcast-rs",
"rustix 0.38.44",
"rustix",
"scoped-tls",
"smallvec",
"wayland-sys",
@@ -7081,7 +6830,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c2120de3d33638aaef5b9f4472bff75f07c56379cf76ea320bd3a3d65ecaf73f"
dependencies = [
"bitflags 2.9.0",
"rustix 0.38.44",
"rustix",
"wayland-backend",
"wayland-scanner",
]
@@ -7199,20 +6948,6 @@ dependencies = [
"rustls-pki-types",
]
[[package]]
name = "webview2-com"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6f61ff3d9d0ee4efcb461b14eb3acfda2702d10dc329f339303fc3e57215ae2c"
dependencies = [
"webview2-com-macros",
"webview2-com-sys 0.33.0",
"windows 0.58.0",
"windows-core 0.58.0",
"windows-implement 0.58.0",
"windows-interface 0.58.0",
]
[[package]]
name = "webview2-com"
version = "0.36.0"
@@ -7220,7 +6955,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b0d606f600e5272b514dbb66539dd068211cc20155be8d3958201b4b5bd79ed3"
dependencies = [
"webview2-com-macros",
"webview2-com-sys 0.36.0",
"webview2-com-sys",
"windows 0.60.0",
"windows-core 0.60.1",
"windows-implement 0.59.0",
@@ -7238,17 +6973,6 @@ dependencies = [
"syn 2.0.99",
]
[[package]]
name = "webview2-com-sys"
version = "0.33.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3a3e2eeb58f82361c93f9777014668eb3d07e7d174ee4c819575a9208011886"
dependencies = [
"thiserror 1.0.69",
"windows 0.58.0",
"windows-core 0.58.0",
]
[[package]]
name = "webview2-com-sys"
version = "0.36.0"
@@ -7962,7 +7686,7 @@ dependencies = [
"url",
"webkit2gtk",
"webkit2gtk-sys",
"webview2-com 0.36.0",
"webview2-com",
"windows 0.60.0",
"windows-core 0.60.1",
"windows-version",
@@ -7997,8 +7721,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e105d177a3871454f754b33bb0ee637ecaaac997446375fd3e5d43a2ed00c909"
dependencies = [
"libc",
"linux-raw-sys 0.4.15",
"rustix 0.38.44",
"linux-raw-sys",
"rustix",
]
[[package]]
@@ -8068,67 +7792,26 @@ dependencies = [
"synstructure",
]
[[package]]
name = "zbus"
version = "3.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "675d170b632a6ad49804c8cf2105d7c31eddd3312555cffd4b740e08e97c25e6"
dependencies = [
"async-broadcast 0.5.1",
"async-executor",
"async-fs 1.6.0",
"async-io 1.13.0",
"async-lock 2.8.0",
"async-process 1.8.1",
"async-recursion",
"async-task",
"async-trait",
"blocking",
"byteorder",
"derivative",
"enumflags2",
"event-listener 2.5.3",
"futures-core",
"futures-sink",
"futures-util",
"hex",
"nix 0.26.4",
"once_cell",
"ordered-stream",
"rand 0.8.5",
"serde",
"serde_repr",
"sha1",
"static_assertions",
"tracing",
"uds_windows",
"winapi",
"xdg-home",
"zbus_macros 3.15.2",
"zbus_names 2.6.1",
"zvariant 3.15.2",
]
[[package]]
name = "zbus"
version = "5.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "59c333f648ea1b647bc95dc1d34807c8e25ed7a6feff3394034dc4776054b236"
dependencies = [
"async-broadcast 0.7.2",
"async-broadcast",
"async-executor",
"async-fs 2.1.2",
"async-io 2.4.0",
"async-lock 3.4.0",
"async-process 2.3.0",
"async-fs",
"async-io",
"async-lock",
"async-process",
"async-recursion",
"async-task",
"async-trait",
"blocking",
"enumflags2",
"event-listener 5.4.0",
"event-listener",
"futures-core",
"futures-lite 2.6.0",
"futures-lite",
"hex",
"nix 0.29.0",
"ordered-stream",
@@ -8141,23 +7824,9 @@ dependencies = [
"windows-sys 0.59.0",
"winnow 0.7.3",
"xdg-home",
"zbus_macros 5.5.0",
"zbus_names 4.2.0",
"zvariant 5.4.0",
]
[[package]]
name = "zbus_macros"
version = "3.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7131497b0f887e8061b430c530240063d33bf9455fa34438f388a245da69e0a5"
dependencies = [
"proc-macro-crate 1.3.1",
"proc-macro2",
"quote",
"regex",
"syn 1.0.109",
"zvariant_utils 1.0.1",
"zbus_macros",
"zbus_names",
"zvariant",
]
[[package]]
@@ -8170,20 +7839,9 @@ dependencies = [
"proc-macro2",
"quote",
"syn 2.0.99",
"zbus_names 4.2.0",
"zvariant 5.4.0",
"zvariant_utils 3.2.0",
]
[[package]]
name = "zbus_names"
version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "437d738d3750bed6ca9b8d423ccc7a8eb284f6b1d6d4e225a0e4e6258d864c8d"
dependencies = [
"serde",
"static_assertions",
"zvariant 3.15.2",
"zbus_names",
"zvariant",
"zvariant_utils",
]
[[package]]
@@ -8195,7 +7853,7 @@ dependencies = [
"serde",
"static_assertions",
"winnow 0.7.3",
"zvariant 5.4.0",
"zvariant",
]
[[package]]
@@ -8327,20 +7985,6 @@ dependencies = [
"zune-core",
]
[[package]]
name = "zvariant"
version = "3.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4eef2be88ba09b358d3b58aca6e41cd853631d44787f319a1383ca83424fb2db"
dependencies = [
"byteorder",
"enumflags2",
"libc",
"serde",
"static_assertions",
"zvariant_derive 3.15.2",
]
[[package]]
name = "zvariant"
version = "5.4.0"
@@ -8353,21 +7997,8 @@ dependencies = [
"static_assertions",
"url",
"winnow 0.7.3",
"zvariant_derive 5.4.0",
"zvariant_utils 3.2.0",
]
[[package]]
name = "zvariant_derive"
version = "3.15.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "37c24dc0bed72f5f90d1f8bb5b07228cbf63b3c6e9f82d82559d4bae666e7ed9"
dependencies = [
"proc-macro-crate 1.3.1",
"proc-macro2",
"quote",
"syn 1.0.109",
"zvariant_utils 1.0.1",
"zvariant_derive",
"zvariant_utils",
]
[[package]]
@@ -8380,18 +8011,7 @@ dependencies = [
"proc-macro2",
"quote",
"syn 2.0.99",
"zvariant_utils 3.2.0",
]
[[package]]
name = "zvariant_utils"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7234f0d811589db492d16893e3f21e8e2fd282e6d01b0cddee310322062cc200"
dependencies = [
"proc-macro2",
"quote",
"syn 1.0.109",
"zvariant_utils",
]
[[package]]

View File

@@ -1,6 +1,6 @@
[package]
name = "coco"
version = "0.2.0-beta.1"
version = "0.1.0"
description = "Search, connect, collaborate all in one place."
authors = ["INFINI Labs"]
edition = "2021"
@@ -30,7 +30,6 @@ serde = { version = "1", features = ["derive"] }
serde_json = "1"
tauri-plugin-http = "2"
tauri-plugin-websocket = "2"
tauri-plugin-theme = "2.1.2"
tauri-plugin-deep-link = "2.0.0"
tauri-plugin-store = "2.2.0"
tauri-plugin-os = "2"

View File

@@ -46,7 +46,6 @@
"global-shortcut:allow-register",
"global-shortcut:allow-unregister",
"global-shortcut:allow-unregister-all",
"theme:default",
"core:event:default",
"deep-link:allow-get-current",
"deep-link:default",
@@ -66,6 +65,7 @@
"dialog:default",
"fs-pro:default",
"macos-permissions:default",
"screenshots:default"
"screenshots:default",
"core:window:allow-set-theme"
]
}

View File

@@ -77,7 +77,6 @@ pub fn run() {
MacosLauncher::AppleScript,
None,
))
.plugin(tauri_plugin_theme::init(ctx.config_mut()))
.plugin(tauri_plugin_deep_link::init())
.plugin(tauri_plugin_store::Builder::default().build())
.plugin(tauri_plugin_dialog::init())

View File

@@ -16,7 +16,7 @@ import {
isEnabled,
// enable, disable
} from "@tauri-apps/plugin-autostart";
import { emit } from '@tauri-apps/api/event';
import { emit } from "@tauri-apps/api/event";
import SettingsItem from "./SettingsItem";
import SettingsToggle from "./SettingsToggle";
@@ -26,6 +26,8 @@ import { useShortcutEditor } from "@/hooks/useShortcutEditor";
import { useAppStore } from "@/stores/appStore";
import { AppTheme } from "@/utils/tauri";
import { useTheme } from "@/contexts/ThemeContext";
import { useThemeStore } from "@/stores/themeStore";
import { useCreation } from "ahooks";
export function ThemeOption({
icon: Icon,
@@ -36,14 +38,19 @@ export function ThemeOption({
title: string;
theme: AppTheme;
}) {
const { theme: currentTheme, changeTheme } = useTheme();
// const { theme: currentTheme, changeTheme } = useTheme();
const { t } = useTranslation();
const activeTheme = useThemeStore((state) => state.activeTheme);
const isSelected = currentTheme === theme;
const isSelected = useCreation(() => {
return activeTheme === theme;
}, [activeTheme]);
return (
<button
onClick={() => changeTheme(theme)}
onClick={() => {
emit("theme-changed", theme);
}}
className={`p-4 rounded-lg border-2 ${
isSelected
? "border-blue-500 bg-blue-50 dark:bg-blue-900/20"
@@ -52,7 +59,9 @@ export function ThemeOption({
title={title}
>
<Icon className={`w-6 h-6 ${isSelected ? "text-blue-500" : ""}`} />
<span className={`text-sm font-medium ${isSelected ? "text-blue-500" : ""}`}>
<span
className={`text-sm font-medium ${isSelected ? "text-blue-500" : ""}`}
>
{t(`settings.appearance.${theme}`)}
</span>
</button>
@@ -172,9 +181,9 @@ export default function GeneralSettings() {
setLanguage(lang);
//
try {
await emit('language-changed', { language: lang });
await emit("language-changed", { language: lang });
} catch (error) {
console.error('Failed to emit language change event:', error);
console.error("Failed to emit language change event:", error);
}
};
@@ -182,25 +191,27 @@ export default function GeneralSettings() {
<div className="space-y-8">
<div>
<h2 className="text-lg font-semibold text-gray-900 dark:text-white mb-4">
{t('settings.general')}
{t("settings.general")}
</h2>
<div className="space-y-6">
<SettingsItem
icon={Power}
title={t('settings.startup.title')}
description={t('settings.startup.description')}
title={t("settings.startup.title")}
description={t("settings.startup.description")}
>
<SettingsToggle
checked={launchAtLogin}
onChange={(value) => value ? enableAutoStart() : disableAutoStart()}
label={t('settings.startup.toggle')}
onChange={(value) =>
value ? enableAutoStart() : disableAutoStart()
}
label={t("settings.startup.toggle")}
/>
</SettingsItem>
<SettingsItem
icon={Command}
title={t('settings.hotkey.title')}
description={t('settings.hotkey.description')}
title={t("settings.hotkey.title")}
description={t("settings.hotkey.description")}
>
<div className="flex items-center gap-2">
<ShortcutItem
@@ -216,21 +227,33 @@ export default function GeneralSettings() {
<SettingsItem
icon={Palette}
title={t('settings.appearance.title')}
description={t('settings.appearance.description')}
title={t("settings.appearance.title")}
description={t("settings.appearance.description")}
>
<div></div>
</SettingsItem>
<div className="grid grid-cols-3 gap-4">
<ThemeOption icon={Sun} title={t('settings.appearance.light')} theme="light" />
<ThemeOption icon={Moon} title={t('settings.appearance.dark')} theme="dark" />
<ThemeOption icon={Monitor} title={t('settings.appearance.auto')} theme="auto" />
<ThemeOption
icon={Sun}
title={t("settings.appearance.light")}
theme="light"
/>
<ThemeOption
icon={Moon}
title={t("settings.appearance.dark")}
theme="dark"
/>
<ThemeOption
icon={Monitor}
title={t("settings.appearance.auto")}
theme="auto"
/>
</div>
<SettingsItem
icon={Globe}
title={t('settings.language.title')}
description={t('settings.language.description')}
title={t("settings.language.title")}
description={t("settings.language.description")}
>
<div className="flex items-center gap-2">
<select
@@ -238,21 +261,21 @@ export default function GeneralSettings() {
onChange={(e) => changeLanguage(e.target.value)}
className="px-3 py-1.5 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-lg text-sm focus:outline-none focus:ring-2 focus:ring-blue-500"
>
<option value="en">{t('settings.language.english')}</option>
<option value="zh">{t('settings.language.chinese')}</option>
<option value="en">{t("settings.language.english")}</option>
<option value="zh">{t("settings.language.chinese")}</option>
</select>
</div>
</SettingsItem>
<SettingsItem
icon={Tags}
title={t('settings.tooltip.title')}
description={t('settings.tooltip.description')}
title={t("settings.tooltip.title")}
description={t("settings.tooltip.description")}
>
<SettingsToggle
checked={showTooltip}
onChange={(value) => setShowTooltip(value)}
label={t('settings.tooltip.toggle')}
label={t("settings.tooltip.toggle")}
/>
</SettingsItem>
</div>

View File

@@ -10,8 +10,8 @@ import "./main.css";
ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render(
//<React.StrictMode>
<ThemeProvider>
<RouterProvider router={router} />
</ThemeProvider>
// <ThemeProvider>
<RouterProvider router={router} />
// </ThemeProvider>
// </React.StrictMode>
);

View File

@@ -6,11 +6,19 @@ import { listen } from "@tauri-apps/api/event";
import { useAppStore } from "@/stores/appStore";
import useEscape from "@/hooks/useEscape";
import useSettingsWindow from "@/hooks/useSettingsWindow";
import { useEventListener } from "ahooks";
import { useAsyncEffect, useEventListener, useMount } from "ahooks";
import { useThemeStore } from "@/stores/themeStore";
import { getCurrentWebviewWindow } from "@tauri-apps/api/webviewWindow";
import { AppTheme } from "@/utils/tauri";
const appWindow = getCurrentWebviewWindow();
export default function Layout() {
const location = useLocation();
const activeTheme = useThemeStore((state) => state.activeTheme);
const setTheme = useThemeStore((state) => state.setTheme);
function updateBodyClass(path: string) {
const body = document.body;
body.className = "";
@@ -20,6 +28,29 @@ export default function Layout() {
}
}
useMount(async () => {
listen<AppTheme>("theme-changed", ({ payload }) => {
setTheme(payload);
});
appWindow.onThemeChanged(({ payload }) => {
console.log("onThemeChanged", payload);
if (activeTheme !== "auto") return;
setTheme(payload);
});
});
useAsyncEffect(async () => {
let nextTheme = activeTheme === "auto" ? null : activeTheme;
await appWindow.setTheme(nextTheme);
const root = window.document.documentElement;
root.className = nextTheme ?? "light";
root.dataset.theme = nextTheme ?? "light";
}, [activeTheme]);
useEffect(() => {
updateBodyClass(location.pathname);
}, [location.pathname]);