feat: support copy environment variable
This commit is contained in:
parent
4f158a4829
commit
02ba04b5d8
@ -13,67 +13,81 @@ impl Tray {
|
|||||||
|
|
||||||
let version = app_handle.package_info().version.to_string();
|
let version = app_handle.package_info().version.to_string();
|
||||||
|
|
||||||
|
macro_rules! t {
|
||||||
|
($en: expr, $zh: expr) => {
|
||||||
if zh {
|
if zh {
|
||||||
SystemTrayMenu::new()
|
$zh
|
||||||
.add_item(CustomMenuItem::new("open_window", "打开面板"))
|
|
||||||
.add_native_item(SystemTrayMenuItem::Separator)
|
|
||||||
.add_item(CustomMenuItem::new("rule_mode", "规则模式"))
|
|
||||||
.add_item(CustomMenuItem::new("global_mode", "全局模式"))
|
|
||||||
.add_item(CustomMenuItem::new("direct_mode", "直连模式"))
|
|
||||||
.add_item(CustomMenuItem::new("script_mode", "脚本模式"))
|
|
||||||
.add_native_item(SystemTrayMenuItem::Separator)
|
|
||||||
.add_item(CustomMenuItem::new("system_proxy", "系统代理"))
|
|
||||||
.add_item(CustomMenuItem::new("tun_mode", "TUN 模式"))
|
|
||||||
.add_submenu(SystemTraySubmenu::new(
|
|
||||||
"打开目录",
|
|
||||||
SystemTrayMenu::new()
|
|
||||||
.add_item(CustomMenuItem::new("open_app_dir", "应用目录"))
|
|
||||||
.add_item(CustomMenuItem::new("open_core_dir", "内核目录"))
|
|
||||||
.add_item(CustomMenuItem::new("open_logs_dir", "日志目录")),
|
|
||||||
))
|
|
||||||
.add_submenu(SystemTraySubmenu::new(
|
|
||||||
"更多",
|
|
||||||
SystemTrayMenu::new()
|
|
||||||
.add_item(CustomMenuItem::new("restart_clash", "重启 Clash"))
|
|
||||||
.add_item(CustomMenuItem::new("restart_app", "重启应用"))
|
|
||||||
.add_item(
|
|
||||||
CustomMenuItem::new("app_version", format!("Version {version}"))
|
|
||||||
.disabled(),
|
|
||||||
),
|
|
||||||
))
|
|
||||||
.add_native_item(SystemTrayMenuItem::Separator)
|
|
||||||
.add_item(CustomMenuItem::new("quit", "退出").accelerator("CmdOrControl+Q"))
|
|
||||||
} else {
|
} else {
|
||||||
|
$en
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
SystemTrayMenu::new()
|
SystemTrayMenu::new()
|
||||||
.add_item(CustomMenuItem::new("open_window", "Dashboard"))
|
.add_item(CustomMenuItem::new(
|
||||||
|
"open_window",
|
||||||
|
t!("Dashboard", "打开面板"),
|
||||||
|
))
|
||||||
.add_native_item(SystemTrayMenuItem::Separator)
|
.add_native_item(SystemTrayMenuItem::Separator)
|
||||||
.add_item(CustomMenuItem::new("rule_mode", "Rule Mode"))
|
.add_item(CustomMenuItem::new(
|
||||||
.add_item(CustomMenuItem::new("global_mode", "Global Mode"))
|
"rule_mode",
|
||||||
.add_item(CustomMenuItem::new("direct_mode", "Direct Mode"))
|
t!("Rule Mode", "规则模式"),
|
||||||
.add_item(CustomMenuItem::new("script_mode", "Script Mode"))
|
))
|
||||||
|
.add_item(CustomMenuItem::new(
|
||||||
|
"global_mode",
|
||||||
|
t!("Global Mode", "全局模式"),
|
||||||
|
))
|
||||||
|
.add_item(CustomMenuItem::new(
|
||||||
|
"direct_mode",
|
||||||
|
t!("Direct Mode", "直连模式"),
|
||||||
|
))
|
||||||
|
.add_item(CustomMenuItem::new(
|
||||||
|
"script_mode",
|
||||||
|
t!("Script Mode", "脚本模式"),
|
||||||
|
))
|
||||||
.add_native_item(SystemTrayMenuItem::Separator)
|
.add_native_item(SystemTrayMenuItem::Separator)
|
||||||
.add_item(CustomMenuItem::new("system_proxy", "System Proxy"))
|
.add_item(CustomMenuItem::new(
|
||||||
.add_item(CustomMenuItem::new("tun_mode", "Tun Mode"))
|
"system_proxy",
|
||||||
.add_submenu(SystemTraySubmenu::new(
|
t!("System Proxy", "系统代理"),
|
||||||
"Open Dir",
|
))
|
||||||
SystemTrayMenu::new()
|
.add_item(CustomMenuItem::new("tun_mode", t!("TUN Mode", "Tun 模式")))
|
||||||
.add_item(CustomMenuItem::new("open_app_dir", "App Dir"))
|
.add_item(CustomMenuItem::new(
|
||||||
.add_item(CustomMenuItem::new("open_core_dir", "Core Dir"))
|
"copy_env",
|
||||||
.add_item(CustomMenuItem::new("open_logs_dir", "Logs Dir")),
|
t!("Copy Env", "复制环境变量"),
|
||||||
))
|
))
|
||||||
.add_submenu(SystemTraySubmenu::new(
|
.add_submenu(SystemTraySubmenu::new(
|
||||||
"More",
|
t!("Open Dir", "打开目录"),
|
||||||
SystemTrayMenu::new()
|
SystemTrayMenu::new()
|
||||||
.add_item(CustomMenuItem::new("restart_clash", "Restart Clash"))
|
.add_item(CustomMenuItem::new(
|
||||||
.add_item(CustomMenuItem::new("restart_app", "Restart App"))
|
"open_app_dir",
|
||||||
|
t!("App Dir", "应用目录"),
|
||||||
|
))
|
||||||
|
.add_item(CustomMenuItem::new(
|
||||||
|
"open_core_dir",
|
||||||
|
t!("Core Dir", "内核目录"),
|
||||||
|
))
|
||||||
|
.add_item(CustomMenuItem::new(
|
||||||
|
"open_logs_dir",
|
||||||
|
t!("Logs Dir", "日志目录"),
|
||||||
|
)),
|
||||||
|
))
|
||||||
|
.add_submenu(SystemTraySubmenu::new(
|
||||||
|
t!("More", "更多"),
|
||||||
|
SystemTrayMenu::new()
|
||||||
|
.add_item(CustomMenuItem::new(
|
||||||
|
"restart_clash",
|
||||||
|
t!("Restart Clash", "重启 Clash"),
|
||||||
|
))
|
||||||
|
.add_item(CustomMenuItem::new(
|
||||||
|
"restart_app",
|
||||||
|
t!("Restart App", "重启应用"),
|
||||||
|
))
|
||||||
.add_item(
|
.add_item(
|
||||||
CustomMenuItem::new("app_version", format!("Version {version}"))
|
CustomMenuItem::new("app_version", format!("Version {version}")).disabled(),
|
||||||
.disabled(),
|
|
||||||
),
|
),
|
||||||
))
|
))
|
||||||
.add_native_item(SystemTrayMenuItem::Separator)
|
.add_native_item(SystemTrayMenuItem::Separator)
|
||||||
.add_item(CustomMenuItem::new("quit", "Quit").accelerator("CmdOrControl+Q"))
|
.add_item(CustomMenuItem::new("quit", t!("Quit", "退出")).accelerator("CmdOrControl+Q"))
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn update_systray(app_handle: &AppHandle) -> Result<()> {
|
pub fn update_systray(app_handle: &AppHandle) -> Result<()> {
|
||||||
@ -135,6 +149,7 @@ impl Tray {
|
|||||||
"open_window" => resolve::create_window(app_handle),
|
"open_window" => resolve::create_window(app_handle),
|
||||||
"system_proxy" => feat::toggle_system_proxy(),
|
"system_proxy" => feat::toggle_system_proxy(),
|
||||||
"tun_mode" => feat::toggle_tun_mode(),
|
"tun_mode" => feat::toggle_tun_mode(),
|
||||||
|
"copy_env" => feat::copy_clash_env(),
|
||||||
"open_app_dir" => crate::log_err!(cmds::open_app_dir()),
|
"open_app_dir" => crate::log_err!(cmds::open_app_dir()),
|
||||||
"open_core_dir" => crate::log_err!(cmds::open_core_dir()),
|
"open_core_dir" => crate::log_err!(cmds::open_core_dir()),
|
||||||
"open_logs_dir" => crate::log_err!(cmds::open_logs_dir()),
|
"open_logs_dir" => crate::log_err!(cmds::open_logs_dir()),
|
||||||
|
@ -9,6 +9,7 @@ use crate::core::*;
|
|||||||
use crate::log_err;
|
use crate::log_err;
|
||||||
use anyhow::{bail, Result};
|
use anyhow::{bail, Result};
|
||||||
use serde_yaml::{Mapping, Value};
|
use serde_yaml::{Mapping, Value};
|
||||||
|
use wry::application::clipboard::Clipboard;
|
||||||
|
|
||||||
// 重启clash
|
// 重启clash
|
||||||
pub fn restart_clash_core() {
|
pub fn restart_clash_core() {
|
||||||
@ -319,3 +320,12 @@ async fn update_core_config() -> Result<()> {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// copy env variable
|
||||||
|
pub fn copy_clash_env() {
|
||||||
|
let port = { Config::clash().data().get_client_info().port };
|
||||||
|
let text = format!("export https_proxy=http://127.0.0.1:{port} http_proxy=http://127.0.0.1:{port} all_proxy=socks5://127.0.0.1:{port}");
|
||||||
|
|
||||||
|
let mut cliboard = Clipboard::new();
|
||||||
|
cliboard.write_text(text);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user