diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index de6aa5d..67faa25 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -64,6 +64,11 @@ jobs: - name: Install app dependencies and build it run: yarn && yarn build:fe + - name: fix tray icon + if: matrix.platform != 'macos-latest' + run: | + yarn fix:tray + - uses: tauri-apps/tauri-action@v0.3 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/UPDATE_LOG.md b/UPDATE_LOG.md index 1391bd3..50498fa 100644 --- a/UPDATE_LOG.md +++ b/UPDATE_LOG.md @@ -1,5 +1,12 @@ # UPDATE LOG +## v0.7.1 + +fix: +- some windows systems cannot start the application +- windows and linux add about menu (show version information) +- the tray icon is indistinguishable from the background in dark mode on window and linux + ## v0.7.0 fix: diff --git a/package.json b/package.json index dac59e6..fa52f1b 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,8 @@ "build": "yarn tauri build", "updater": "tr updater", "release": "tr release --git", + "fix:tray": "tr override --json.tauri_systemTray_iconPath=\"icons/tray-icon-light.png\" --json.tauri_systemTray_iconAsTemplate=false", + "fix:tray:mac": "tr override --json.tauri_systemTray_iconPath=\"icons/tray-icon.png\" --json.tauri_systemTray_iconAsTemplate=true", "download": "node ./scripts/download.js", "tr": "tr", "tauri": "tauri" diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 1ecccad..72044f4 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -17,7 +17,7 @@ tauri-build = {version = "1.2.1", features = [] } anyhow = "1.0.66" serde_json = "1.0" serde = { version = "1.0", features = ["derive"] } -tauri = { version = "1.2.2", features = ["api-all", "devtools", "system-tray", "updater"] } +tauri = { version = "1.2.3", features = ["api-all", "devtools", "system-tray", "updater"] } tauri-plugin-positioner = { version = "1.0.4", features = ["system-tray"] } log = "0.4.17" csv = "1.1.6" diff --git a/src-tauri/icons/tray-icon-light.png b/src-tauri/icons/tray-icon-light.png new file mode 100644 index 0000000..bbeffbb Binary files /dev/null and b/src-tauri/icons/tray-icon-light.png differ diff --git a/src-tauri/src/app/menu.rs b/src-tauri/src/app/menu.rs index 7b3454a..92d28e1 100644 --- a/src-tauri/src/app/menu.rs +++ b/src-tauri/src/app/menu.rs @@ -16,16 +16,19 @@ pub fn init() -> Menu { let name = "ChatGPT"; let app_menu = Submenu::new( name, - Menu::new() - .add_native_item(MenuItem::About(name.into(), AboutMetadata::default())) - .add_native_item(MenuItem::Services) - .add_native_item(MenuItem::Separator) - .add_native_item(MenuItem::Hide) - .add_native_item(MenuItem::HideOthers) - .add_native_item(MenuItem::ShowAll) - .add_native_item(MenuItem::Separator) - .add_native_item(MenuItem::Quit), - ); + Menu::with_items([ + #[cfg(target_os = "macos")] + MenuItem::About(name.into(), AboutMetadata::default()).into(), + #[cfg(not(target_os = "macos"))] + CustomMenuItem::new("about".to_string(), "About ChatGPT") + .into(), + MenuItem::Services.into(), + MenuItem::Hide.into(), + MenuItem::HideOthers.into(), + MenuItem::ShowAll.into(), + MenuItem::Separator.into(), + MenuItem::Quit.into(), + ])); let stay_on_top = CustomMenuItem::new("stay_on_top".to_string(), "Stay On Top").accelerator("CmdOrCtrl+T"); @@ -177,6 +180,11 @@ pub fn menu_handler(event: WindowMenuEvent) { let menu_handle = core_window.menu_handle(); match menu_id { + // App + "about" => { + let tauri_conf = utils::get_tauri_conf().unwrap(); + tauri::api::dialog::message(app.get_window("core").as_ref(), "ChatGPT", format!("Version {}", tauri_conf.package.version.unwrap())); + } // Preferences "control_center" => window::control_window(&app), "restart" => tauri::api::process::restart(&app.env()), diff --git a/src-tauri/src/utils.rs b/src-tauri/src/utils.rs index 502e3f5..4b612c0 100644 --- a/src-tauri/src/utils.rs +++ b/src-tauri/src/utils.rs @@ -8,19 +8,18 @@ use std::{ path::{Path, PathBuf}, process::Command, }; -use tauri::Manager; -// use tauri::utils::config::Config; +use tauri::{Manager, utils::config::Config}; pub fn chat_root() -> PathBuf { tauri::api::path::home_dir().unwrap().join(".chatgpt") } -// pub fn get_tauri_conf() -> Option { -// let config_file = include_str!("../tauri.conf.json"); -// let config: Config = -// serde_json::from_str(config_file).expect("failed to parse tauri.conf.json"); -// Some(config) -// } +pub fn get_tauri_conf() -> Option { + let config_file = include_str!("../tauri.conf.json"); + let config: Config = + serde_json::from_str(config_file).expect("failed to parse tauri.conf.json"); + Some(config) +} pub fn exists(path: &Path) -> bool { Path::new(path).exists()