diff --git a/README.md b/README.md
index 9bc3576..dead50a 100644
--- a/README.md
+++ b/README.md
@@ -15,9 +15,9 @@
**Latest:**
-- `Mac`: [ChatGPT_0.1.6_x64.dmg](https://github.com/lencx/ChatGPT/releases/download/v0.1.6/ChatGPT_0.1.6_x64.dmg)
-- `Linux`: [chat-gpt_0.1.6_amd64.deb](https://github.com/lencx/ChatGPT/releases/download/v0.1.6/chat-gpt_0.1.6_amd64.deb)
-- `Windows`: [ChatGPT_0.1.6_x64_en-US.msi](https://github.com/lencx/ChatGPT/releases/download/v0.1.6/ChatGPT_0.1.6_x64_en-US.msi)
+- `Mac`: [ChatGPT_0.1.7_x64.dmg](https://github.com/lencx/ChatGPT/releases/download/v0.1.7/ChatGPT_0.1.7_x64.dmg)
+- `Linux`: [chat-gpt_0.1.7_amd64.deb](https://github.com/lencx/ChatGPT/releases/download/v0.1.7/chat-gpt_0.1.7_amd64.deb)
+- `Windows`: [ChatGPT_0.1.7_x64_en-US.msi](https://github.com/lencx/ChatGPT/releases/download/v0.1.7/ChatGPT_0.1.7_x64_en-US.msi)
[Other version...](https://github.com/lencx/ChatGPT/releases)
@@ -31,14 +31,14 @@
- inject script
- auto updater
- app menu
-- system tray
+- tray window
- shortcut
## Preview
-
-
+
+
## FAQ
### Is it safe?
diff --git a/UPDATE_LOG.md b/UPDATE_LOG.md
index 3ed01a1..faccfd8 100644
--- a/UPDATE_LOG.md
+++ b/UPDATE_LOG.md
@@ -1,5 +1,9 @@
# UPDATE LOG
+## v0.1.7
+
+feat: tray window
+
## v0.1.6
feat:
diff --git a/assets/tray.png b/assets/tray.png
new file mode 100644
index 0000000..de46b51
Binary files /dev/null and b/assets/tray.png differ
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index 88d51cc..47bb13b 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -17,6 +17,7 @@ tauri-build = {version = "1.2.1", features = [] }
serde_json = "1.0"
serde = { version = "1.0", features = ["derive"] }
tauri = { version = "1.2.1", features = ["api-all", "devtools", "system-tray", "updater"] }
+tauri-plugin-positioner = { version = "1.0.4", features = ["system-tray"] }
anyhow = "1.0.66"
[features]
diff --git a/src-tauri/src/app/menu.rs b/src-tauri/src/app/menu.rs
index 605b202..ef88c3f 100644
--- a/src-tauri/src/app/menu.rs
+++ b/src-tauri/src/app/menu.rs
@@ -3,6 +3,7 @@ use tauri::{
utils::assets::EmbeddedAssets, AboutMetadata, AppHandle, Context, CustomMenuItem, Manager,
Menu, MenuItem, Submenu, SystemTray, SystemTrayEvent, SystemTrayMenu, WindowMenuEvent,
};
+use tauri_plugin_positioner::{on_tray_event, Position, WindowExt};
// --- Menu
pub fn init(chat_conf: &conf::ChatConfJson, context: &Context) -> Menu {
@@ -159,16 +160,19 @@ pub fn tray_menu() -> SystemTray {
}
// --- SystemTray Event
-pub fn tray_handler(app: &AppHandle, event: SystemTrayEvent) {
- let win = app.get_window("core").unwrap();
+pub fn tray_handler(handle: &AppHandle, event: SystemTrayEvent) {
+ let core_win = handle.get_window("core").unwrap();
+ on_tray_event(handle, &event);
if let SystemTrayEvent::LeftClick { .. } = event {
- // TODO: tray window
- if win.is_visible().unwrap() {
- win.hide().unwrap();
+ core_win.minimize().unwrap();
+ let mini_win = handle.get_window("mini").unwrap();
+ mini_win.move_window(Position::TrayCenter).unwrap();
+
+ if mini_win.is_visible().unwrap() {
+ mini_win.hide().unwrap();
} else {
- win.show().unwrap();
- win.set_focus().unwrap();
+ mini_win.show().unwrap();
}
}
}
diff --git a/src-tauri/src/app/mod.rs b/src-tauri/src/app/mod.rs
index 5a9ad92..5466c45 100644
--- a/src-tauri/src/app/mod.rs
+++ b/src-tauri/src/app/mod.rs
@@ -1,3 +1,4 @@
pub mod cmd;
pub mod menu;
pub mod setup;
+pub mod window;
diff --git a/src-tauri/src/app/setup.rs b/src-tauri/src/app/setup.rs
index 4853acf..84cdc5a 100644
--- a/src-tauri/src/app/setup.rs
+++ b/src-tauri/src/app/setup.rs
@@ -1,5 +1,5 @@
-use crate::{conf, utils};
-use tauri::{utils::config::WindowUrl, window::WindowBuilder, App};
+use crate::{app::window, conf, utils};
+use tauri::{utils::config::WindowUrl, window::WindowBuilder, App, Manager};
#[cfg(target_os = "macos")]
use tauri::TitleBarStyle;
@@ -10,6 +10,7 @@ pub fn init(
) -> std::result::Result<(), Box> {
let conf = utils::get_tauri_conf().unwrap();
let url = conf.build.dev_path.to_string();
+ window::mini_window(&app.app_handle());
#[cfg(target_os = "macos")]
WindowBuilder::new(app, "core", WindowUrl::App(url.into()))
diff --git a/src-tauri/src/app/window.rs b/src-tauri/src/app/window.rs
new file mode 100644
index 0000000..e969d71
--- /dev/null
+++ b/src-tauri/src/app/window.rs
@@ -0,0 +1,25 @@
+use crate::{conf, utils};
+use tauri::{utils::config::WindowUrl, window::WindowBuilder};
+
+pub fn mini_window(handle: &tauri::AppHandle) {
+ let conf = utils::get_tauri_conf().unwrap();
+ let url = conf.build.dev_path.to_string();
+
+ WindowBuilder::new(handle, "mini", WindowUrl::App(url.into()))
+ .resizable(false)
+ .fullscreen(false)
+ .inner_size(360.0, 540.0)
+ .decorations(false)
+ .always_on_top(true)
+ .initialization_script(&utils::user_script())
+ .initialization_script(include_str!("../assets/html2canvas.js"))
+ .initialization_script(include_str!("../assets/jspdf.js"))
+ .initialization_script(include_str!("../assets/core.js"))
+ .initialization_script(include_str!("../assets/export.js"))
+ .user_agent(conf::PHONE_USER_AGENT)
+ .menu(tauri::Menu::new())
+ .build()
+ .unwrap()
+ .hide()
+ .unwrap();
+}
diff --git a/src-tauri/src/assets/core.js b/src-tauri/src/assets/core.js
index bb95bae..fe79a00 100644
--- a/src-tauri/src/assets/core.js
+++ b/src-tauri/src/assets/core.js
@@ -40,6 +40,12 @@ window.invoke = invoke;
window.transformCallback = transformCallback;
async function init() {
+ if (__TAURI_METADATA__.__currentWindow.label === 'mini') {
+ document.getElementsByTagName('html')[0].style['font-size'] = '70%';
+ }
+
+ if (__TAURI_METADATA__.__currentWindow.label !== 'core') return;
+
async function platform() {
return invoke('platform', {
__tauriModule: 'Os',
diff --git a/src-tauri/src/conf.rs b/src-tauri/src/conf.rs
index 12efb5a..8486d05 100644
--- a/src-tauri/src/conf.rs
+++ b/src-tauri/src/conf.rs
@@ -4,6 +4,7 @@ use std::path::PathBuf;
use std::sync::Mutex;
pub const USER_AGENT: &str = "5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36";
+pub const PHONE_USER_AGENT: &str = "Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1";
pub const ISSUES_URL: &str = "https://github.com/lencx/ChatGPT/issues";
pub const AWESOME_URL: &str = "https://github.com/lencx/ChatGPT/blob/main/AWESOME.md";
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index 034ebf2..57b55e0 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -25,6 +25,7 @@ fn main() {
cmd::open_link
])
.setup(|app| setup::init(app, chat_conf2))
+ .plugin(tauri_plugin_positioner::init())
.menu(menu::init(&chat_conf, &context))
.system_tray(menu::tray_menu())
.on_menu_event(menu::menu_handler)