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