mirror of
https://gh.catmak.name/https://github.com/mihomo-party-org/mihomo-party
synced 2025-12-26 20:50:30 +08:00
feat: add swap tray click option in settings
This commit is contained in:
parent
3670f23a1c
commit
4b8ae4063d
@ -331,7 +331,7 @@ export const buildContextMenu = async (): Promise<Menu> => {
|
||||
}
|
||||
|
||||
export async function createTray(): Promise<void> {
|
||||
const { useDockIcon = true } = await getAppConfig()
|
||||
const { useDockIcon = true, swapTrayClick = false } = await getAppConfig()
|
||||
if (process.platform === 'linux') {
|
||||
tray = new Tray(pngIcon)
|
||||
const menu = await buildContextMenu()
|
||||
@ -359,24 +359,45 @@ export async function createTray(): Promise<void> {
|
||||
image.setTemplateImage(true)
|
||||
tray?.setImage(image)
|
||||
})
|
||||
// macOS 默认行为: 左键显示窗口, 右键显示菜单
|
||||
tray?.addListener('click', async () => {
|
||||
if (swapTrayClick) {
|
||||
await updateTrayMenu()
|
||||
} else {
|
||||
triggerMainWindow()
|
||||
}
|
||||
})
|
||||
tray?.addListener('right-click', async () => {
|
||||
if (swapTrayClick) {
|
||||
triggerMainWindow()
|
||||
} else {
|
||||
await updateTrayMenu()
|
||||
}
|
||||
})
|
||||
}
|
||||
if (process.platform === 'win32') {
|
||||
tray?.addListener('click', () => {
|
||||
tray?.addListener('click', async () => {
|
||||
if (swapTrayClick) {
|
||||
await updateTrayMenu()
|
||||
} else {
|
||||
triggerMainWindow()
|
||||
}
|
||||
})
|
||||
tray?.addListener('right-click', async () => {
|
||||
if (swapTrayClick) {
|
||||
triggerMainWindow()
|
||||
} else {
|
||||
await updateTrayMenu()
|
||||
}
|
||||
})
|
||||
}
|
||||
if (process.platform === 'linux') {
|
||||
tray?.addListener('click', () => {
|
||||
tray?.addListener('click', async () => {
|
||||
if (swapTrayClick) {
|
||||
await updateTrayMenu()
|
||||
} else {
|
||||
triggerMainWindow()
|
||||
}
|
||||
})
|
||||
ipcMain.on('updateTrayMenu', async () => {
|
||||
await updateTrayMenu()
|
||||
|
||||
@ -51,6 +51,7 @@ const GeneralConfig: React.FC = () => {
|
||||
proxyInTray = true,
|
||||
showCurrentProxyInTray = false,
|
||||
disableTray = false,
|
||||
swapTrayClick = false,
|
||||
disableTrayIconColor = false,
|
||||
disableAnimations = false,
|
||||
showFloatingWindow: showFloating = false,
|
||||
@ -321,6 +322,20 @@ const GeneralConfig: React.FC = () => {
|
||||
/>
|
||||
</SettingItem>
|
||||
{!disableTray && (
|
||||
<>
|
||||
<SettingItem title={t('settings.swapTrayClick')} divider>
|
||||
<Switch
|
||||
size="sm"
|
||||
isSelected={swapTrayClick}
|
||||
onValueChange={async (v) => {
|
||||
await patchAppConfig({ swapTrayClick: v })
|
||||
closeTrayIcon()
|
||||
setTimeout(() => {
|
||||
showTrayIcon()
|
||||
}, 100)
|
||||
}}
|
||||
/>
|
||||
</SettingItem>
|
||||
<SettingItem title={t('settings.disableTrayIconColor')} divider>
|
||||
<Switch
|
||||
size="sm"
|
||||
@ -331,6 +346,7 @@ const GeneralConfig: React.FC = () => {
|
||||
}}
|
||||
/>
|
||||
</SettingItem>
|
||||
</>
|
||||
)}
|
||||
{platform !== 'linux' && (
|
||||
<>
|
||||
|
||||
@ -64,6 +64,7 @@
|
||||
"settings.floatingWindowCompatMode": "Floating Window Compatibility Mode (Recommended)",
|
||||
"settings.floatingWindowCompatModeTooltip": "Disables transparency effects to prevent crashes on some Windows systems. Recommended to keep enabled for stability",
|
||||
"settings.disableTray": "Disable Tray Icon",
|
||||
"settings.swapTrayClick": "Swap Tray Left/Right Click",
|
||||
"settings.proxyInTray": "Show Proxy Info in Tray Menu",
|
||||
"settings.showCurrentProxyInTray": "Show Current Proxy in Tray Menu",
|
||||
"settings.disableTrayIconColor": "Disable Tray Icon Color Changes",
|
||||
|
||||
@ -60,6 +60,7 @@
|
||||
"settings.showFloatingWindow": "نمایش پنجره شناور",
|
||||
"settings.spinFloatingIcon": "چرخش آیکون شناور بر اساس سرعت شبکه",
|
||||
"settings.disableTray": "غیرفعال کردن آیکون سیستمتری",
|
||||
"settings.swapTrayClick": "تعویض کلیک چپ/راست تری",
|
||||
"settings.proxyInTray": "نمایش اطلاعات پراکسی در منوی سیستمتری",
|
||||
"settings.disableTrayIconColor": "غیرفعال کردن تغییر رنگ آیکون تری",
|
||||
"settings.disableAnimations": "غیرفعال کردن جلوههای انیمیشن",
|
||||
|
||||
@ -60,6 +60,7 @@
|
||||
"settings.showFloatingWindow": "Показывать плавающее окно",
|
||||
"settings.spinFloatingIcon": "Анимация иконки при активности сети",
|
||||
"settings.disableTray": "Отключить значок в трее",
|
||||
"settings.swapTrayClick": "Поменять местами левый/правый клик в трее",
|
||||
"settings.proxyInTray": "Показывать информацию о прокси в трее",
|
||||
"settings.disableTrayIconColor": "Отключить смену цвета значка в трее",
|
||||
"settings.disableAnimations": "Отключить анимационные эффекты",
|
||||
|
||||
@ -64,6 +64,7 @@
|
||||
"settings.floatingWindowCompatMode": "悬浮窗兼容模式(推荐开启)",
|
||||
"settings.floatingWindowCompatModeTooltip": "禁用透明效果以避免在某些 Windows 系统上崩溃,建议保持开启以确保稳定性",
|
||||
"settings.disableTray": "禁用托盘图标",
|
||||
"settings.swapTrayClick": "交换托盘左右键功能",
|
||||
"settings.proxyInTray": "在托盘菜单显示代理信息",
|
||||
"settings.showCurrentProxyInTray": "托盘菜单显示当前代理",
|
||||
"settings.disableTrayIconColor": "禁用托盘图标颜色变化",
|
||||
|
||||
1
src/shared/types.d.ts
vendored
1
src/shared/types.d.ts
vendored
@ -238,6 +238,7 @@ interface IAppConfig {
|
||||
connectionTableSortDirection?: 'asc' | 'desc'
|
||||
spinFloatingIcon?: boolean
|
||||
disableTray?: boolean
|
||||
swapTrayClick?: boolean
|
||||
showFloatingWindow?: boolean
|
||||
floatingWindowCompatMode?: boolean
|
||||
disableHardwareAcceleration?: boolean
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user