1
0
mirror of https://github.com/lencx/ChatGPT.git synced 2024-10-01 01:06:13 -04:00

feat: icons & system_tray

This commit is contained in:
lencx 2022-12-08 00:22:18 +08:00
parent fec14cd6a4
commit 4438352acc
22 changed files with 53 additions and 51 deletions

View File

@ -1,5 +1,11 @@
# UPDATE LOG
## v0.1.4
feat:
- beautify icons
- add system tray menu
## v0.1.3
fix: only mac supports `TitleBarStyle`

Binary file not shown.

Before

Width:  |  Height:  |  Size: 754 KiB

After

Width:  |  Height:  |  Size: 726 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 218 KiB

After

Width:  |  Height:  |  Size: 192 KiB

BIN
logo.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

After

Width:  |  Height:  |  Size: 39 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.8 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 104 KiB

View File

@ -1,7 +1,8 @@
use crate::utils;
use tauri::{
utils::assets::EmbeddedAssets, AboutMetadata, AppHandle, Context, CustomMenuItem, Manager,
Menu, MenuItem, Submenu, SystemTrayEvent, WindowMenuEvent,
Menu, MenuItem, Submenu, SystemTray, SystemTrayEvent, SystemTrayMenu, SystemTrayMenuItem,
WindowMenuEvent,
};
// --- Menu
@ -82,56 +83,35 @@ pub fn init(context: &Context<EmbeddedAssets>) -> Menu {
pub fn menu_handler(event: WindowMenuEvent<tauri::Wry>) {
let win = Some(event.window()).unwrap();
let app = win.app_handle();
let script_path = utils::script_path().to_string_lossy().to_string();
let issues_url = "https://github.com/lencx/ChatGPT/issues".to_string();
match event.menu_item_id() {
// App
"inject_script" => {
tauri::api::shell::open(
&app.shell_scope(),
utils::script_path().to_string_lossy(),
None,
)
.unwrap();
}
"inject_script" => inject_script(&app, script_path),
// View
"go_back" => {
win.eval("window.history.go(-1)").unwrap();
}
"go_forward" => {
win.eval("window.history.go(1)").unwrap();
}
"scroll_top" => {
win.eval(
"reload" => win.eval("window.location.reload()").unwrap(),
"go_back" => win.eval("window.history.go(-1)").unwrap(),
"go_forward" => win.eval("window.history.go(1)").unwrap(),
"scroll_top" => win
.eval(
r#"window.scroll({
top: 0,
left: 0,
behavior: "smooth"
})"#,
})"#,
)
.unwrap();
}
"scroll_bottom" => {
win.eval(
.unwrap(),
"scroll_bottom" => win
.eval(
r#"window.scroll({
top: document.body.scrollHeight,
left: 0,
behavior: "smooth",
})"#,
behavior: "smooth"})"#,
)
.unwrap();
}
"reload" => {
win.eval("window.location.reload()").unwrap();
}
.unwrap(),
// Help
"report_bug" => {
tauri::api::shell::open(
&app.shell_scope(),
"https://github.com/lencx/ChatGPT/issues",
None,
)
.unwrap();
}
"report_bug" => inject_script(&app, issues_url),
"dev_tools" => {
win.open_devtools();
win.close_devtools();
@ -140,20 +120,37 @@ pub fn menu_handler(event: WindowMenuEvent<tauri::Wry>) {
}
}
// --- SystemTray Menu
pub fn tray_menu() -> SystemTray {
SystemTray::new().with_menu(
SystemTrayMenu::new()
.add_item(CustomMenuItem::new("show".to_string(), "Show ChatGPT"))
.add_item(CustomMenuItem::new("hide".to_string(), "Hide ChatGPT"))
.add_item(CustomMenuItem::new(
"inject_script".to_string(),
"Inject Script",
))
.add_native_item(SystemTrayMenuItem::Separator)
.add_item(CustomMenuItem::new("quit".to_string(), "Quit ChatGPT")),
)
}
// --- SystemTray Event
pub fn tray_handler(app: &AppHandle, event: SystemTrayEvent) {
if let SystemTrayEvent::LeftClick {
position: _,
size: _,
..
} = event
{
let win = app.get_window("core").unwrap();
if win.is_visible().unwrap() {
win.hide().unwrap();
} else {
win.show().unwrap();
win.set_focus().unwrap();
let script_path = utils::script_path().to_string_lossy().to_string();
let win = app.get_window("core").unwrap();
if let SystemTrayEvent::MenuItemClick { id, .. } = event {
match id.as_str() {
"quit" => std::process::exit(0),
"show" => win.show().unwrap(),
"hide" => win.hide().unwrap(),
"inject_script" => inject_script(app, script_path),
_ => (),
}
}
}
pub fn inject_script(app: &AppHandle, path: String) {
tauri::api::shell::open(&app.shell_scope(), path, None).unwrap();
}

View File

@ -7,7 +7,6 @@ mod app;
mod utils;
use app::{cmd, menu, setup};
use tauri::SystemTray;
fn main() {
let context = tauri::generate_context!();
@ -16,7 +15,7 @@ fn main() {
.invoke_handler(tauri::generate_handler![cmd::drag_window, cmd::fullscreen])
.setup(setup::init)
.menu(menu::init(&context))
.system_tray(SystemTray::new())
.system_tray(menu::tray_menu())
.on_menu_event(menu::menu_handler)
.on_system_tray_event(menu::tray_handler)
.run(context)