feat: add log opening functionality in tray menu and update localization

This commit is contained in:
Tunglies
2025-10-30 17:32:54 +08:00
Unverified
parent c2dcd86722
commit c27ad3fdcb
8 changed files with 73 additions and 4 deletions

View File

@@ -48,6 +48,7 @@
- 允许独立控制订阅自动更新
- 托盘 `更多` 中新增 `关闭所有连接` 按钮
- 新增左侧菜单栏的排序功能(右键点击左侧菜单栏)
- 托盘 `打开目录` 中新增 `应用日志``内核日志`
</details>
<details>

View File

@@ -41,6 +41,20 @@ pub fn open_web_url(url: String) -> CmdResult<()> {
open::that(url.as_str()).stringify_err()
}
// TODO 后续可以为前端提供接口,当前作为托盘菜单使用
/// 打开 Verge 最新日志
#[tauri::command]
pub async fn open_app_log() -> CmdResult<()> {
open::that(dirs::app_latest_log().stringify_err()?).stringify_err()
}
// TODO 后续可以为前端提供接口,当前作为托盘菜单使用
/// 打开 Clash 最新日志
#[tauri::command]
pub async fn open_core_log() -> CmdResult<()> {
open::that(dirs::clash_latest_log().stringify_err()?).stringify_err()
}
/// 打开/关闭开发者工具
#[tauri::command]
pub fn open_devtools(app_handle: AppHandle) {

View File

@@ -39,6 +39,8 @@ define_menu! {
core_dir => CORE_DIR, "tray_core_dir", "Core Dir",
logs_dir => LOGS_DIR, "tray_logs_dir", "Logs Dir",
open_dir => OPEN_DIR, "tray_open_dir", "Open Dir",
app_log => APP_LOG, "tray_app_log", "Open App Log",
core_log => CORE_LOG, "tray_core_log", "Open Core Log",
restart_clash => RESTART_CLASH, "tray_restart_clash", "Restart Clash Core",
restart_app => RESTART_APP, "tray_restart_app", "Restart App",
verge_version => VERGE_VERSION, "tray_verge_version", "Verge Version",

View File

@@ -1034,12 +1034,34 @@ async fn create_tray_menu(
None::<&str>,
)?;
let open_app_log = &MenuItem::with_id(
app_handle,
MenuIds::APP_LOG,
&texts.app_log,
true,
None::<&str>,
)?;
let open_core_log = &MenuItem::with_id(
app_handle,
MenuIds::CORE_LOG,
&texts.core_log,
true,
None::<&str>,
)?;
let open_dir = &Submenu::with_id_and_items(
app_handle,
MenuIds::OPEN_DIR,
&texts.open_dir,
true,
&[open_app_dir, open_core_dir, open_logs_dir],
&[
open_app_dir,
open_core_dir,
open_logs_dir,
open_app_log,
open_core_log,
],
)?;
let restart_clash = &MenuItem::with_id(
@@ -1169,6 +1191,12 @@ fn on_menu_event(_: &AppHandle, event: MenuEvent) {
MenuIds::LOGS_DIR => {
let _ = cmd::open_logs_dir().await;
}
MenuIds::APP_LOG => {
let _ = cmd::open_app_log().await;
}
MenuIds::CORE_LOG => {
let _ = cmd::open_core_log().await;
}
MenuIds::RESTART_CLASH => feat::restart_clash_core().await,
MenuIds::RESTART_APP => feat::restart_app().await,
MenuIds::LIGHTWEIGHT_MODE => {

View File

@@ -141,6 +141,8 @@ mod app_init {
cmd::open_logs_dir,
cmd::open_web_url,
cmd::open_core_dir,
cmd::open_app_log,
cmd::open_core_log,
cmd::get_portable_flag,
cmd::get_network_interfaces,
cmd::get_system_hostname,

View File

@@ -1,4 +1,8 @@
use crate::{core::handle, logging, utils::logging::Type};
use crate::{
core::{CoreManager, handle, manager::RunningMode},
logging,
utils::logging::Type,
};
use anyhow::Result;
use async_trait::async_trait;
use once_cell::sync::OnceCell;
@@ -122,6 +126,11 @@ pub fn app_logs_dir() -> Result<PathBuf> {
Ok(app_home_dir()?.join("logs"))
}
// latest verge log
pub fn app_latest_log() -> Result<PathBuf> {
Ok(app_logs_dir()?.join("latest.log"))
}
/// local backups dir
pub fn local_backup_dir() -> Result<PathBuf> {
let dir = app_home_dir()?.join(BACKUP_DIR);
@@ -167,6 +176,15 @@ pub fn service_log_dir() -> Result<PathBuf> {
Ok(log_dir)
}
pub fn clash_latest_log() -> Result<PathBuf> {
match *CoreManager::global().get_running_mode() {
RunningMode::Service => Ok(service_log_dir()?.join("service_latest.log")),
RunningMode::Sidecar | RunningMode::NotRunning => {
Ok(sidecar_log_dir()?.join("sidecar_latest.log"))
}
}
}
pub fn path_to_str(path: &PathBuf) -> Result<&str> {
let path_str = path
.as_os_str()

View File

@@ -713,5 +713,7 @@
"Allow Auto Update": "Allow Auto Update",
"Menu reorder mode": "Menu reorder mode",
"Unlock menu order": "Unlock menu order",
"Lock menu order": "Lock menu order"
"Lock menu order": "Lock menu order",
"Open App Log": "Open App Log",
"Open Core Log": "Open Core Log"
}

View File

@@ -713,5 +713,7 @@
"Allow Auto Update": "允许自动更新",
"Menu reorder mode": "菜单排序模式",
"Unlock menu order": "解锁菜单排序",
"Lock menu order": "锁定菜单排序"
"Lock menu order": "锁定菜单排序",
"Open App Log": "应用日志",
"Open Core Log": "内核日志"
}