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 option to disable HardwareAcceleration
This commit is contained in:
parent
e35fa316fc
commit
f7716ae448
@ -199,6 +199,21 @@ function getSystemLanguage(): 'zh-CN' | 'en-US' {
|
|||||||
return locale.startsWith('zh') ? 'zh-CN' : 'en-US'
|
return locale.startsWith('zh') ? 'zh-CN' : 'en-US'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 硬件加速设置
|
||||||
|
async function initHardwareAcceleration(): Promise<void> {
|
||||||
|
try {
|
||||||
|
await initBasic()
|
||||||
|
const { disableHardwareAcceleration = false } = await getAppConfig()
|
||||||
|
if (disableHardwareAcceleration) {
|
||||||
|
app.disableHardwareAcceleration()
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.warn('Failed to read hardware acceleration config:', e)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
initHardwareAcceleration()
|
||||||
|
|
||||||
// This method will be called when Electron has finished
|
// This method will be called when Electron has finished
|
||||||
// initialization and is ready to create browser windows.
|
// initialization and is ready to create browser windows.
|
||||||
// Some APIs can only be used after this event occurs.
|
// Some APIs can only be used after this event occurs.
|
||||||
|
|||||||
@ -22,6 +22,7 @@ export const defaultConfig: IAppConfig = {
|
|||||||
controlDns: true,
|
controlDns: true,
|
||||||
controlSniff: true,
|
controlSniff: true,
|
||||||
floatingWindowCompatMode: true,
|
floatingWindowCompatMode: true,
|
||||||
|
disableHardwareAcceleration: false,
|
||||||
disableLoopbackDetector: false,
|
disableLoopbackDetector: false,
|
||||||
disableEmbedCA: false,
|
disableEmbedCA: false,
|
||||||
disableSystemCA: false,
|
disableSystemCA: false,
|
||||||
|
|||||||
@ -30,6 +30,7 @@ import { IoIosHelpCircle, IoMdCloudDownload } from 'react-icons/io'
|
|||||||
import { MdEditDocument } from 'react-icons/md'
|
import { MdEditDocument } from 'react-icons/md'
|
||||||
import CSSEditorModal from './css-editor-modal'
|
import CSSEditorModal from './css-editor-modal'
|
||||||
import { useTranslation } from 'react-i18next'
|
import { useTranslation } from 'react-i18next'
|
||||||
|
import BaseConfirmModal from '../base/base-confirm-modal'
|
||||||
|
|
||||||
const GeneralConfig: React.FC = () => {
|
const GeneralConfig: React.FC = () => {
|
||||||
const { t, i18n } = useTranslation()
|
const { t, i18n } = useTranslation()
|
||||||
@ -39,6 +40,8 @@ const GeneralConfig: React.FC = () => {
|
|||||||
const [openCSSEditor, setOpenCSSEditor] = useState(false)
|
const [openCSSEditor, setOpenCSSEditor] = useState(false)
|
||||||
const [fetching, setFetching] = useState(false)
|
const [fetching, setFetching] = useState(false)
|
||||||
const [isRelaunching, setIsRelaunching] = useState(false)
|
const [isRelaunching, setIsRelaunching] = useState(false)
|
||||||
|
const [showHardwareAccelConfirm, setShowHardwareAccelConfirm] = useState(false)
|
||||||
|
const [pendingHardwareAccelValue, setPendingHardwareAccelValue] = useState(false)
|
||||||
const { setTheme } = useTheme()
|
const { setTheme } = useTheme()
|
||||||
const {
|
const {
|
||||||
silentStart = false,
|
silentStart = false,
|
||||||
@ -49,6 +52,7 @@ const GeneralConfig: React.FC = () => {
|
|||||||
showFloatingWindow: showFloating = false,
|
showFloatingWindow: showFloating = false,
|
||||||
spinFloatingIcon = true,
|
spinFloatingIcon = true,
|
||||||
floatingWindowCompatMode = true,
|
floatingWindowCompatMode = true,
|
||||||
|
disableHardwareAcceleration = false,
|
||||||
useWindowFrame = false,
|
useWindowFrame = false,
|
||||||
autoQuitWithoutCore = false,
|
autoQuitWithoutCore = false,
|
||||||
autoQuitWithoutCoreDelay = 60,
|
autoQuitWithoutCoreDelay = 60,
|
||||||
@ -78,6 +82,28 @@ const GeneralConfig: React.FC = () => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)}
|
)}
|
||||||
|
{showHardwareAccelConfirm && (
|
||||||
|
<BaseConfirmModal
|
||||||
|
isOpen={showHardwareAccelConfirm}
|
||||||
|
title={t('settings.hardwareAcceleration.confirm.title')}
|
||||||
|
content={t('settings.hardwareAcceleration.confirm.content')}
|
||||||
|
onCancel={() => {
|
||||||
|
setShowHardwareAccelConfirm(false)
|
||||||
|
setPendingHardwareAccelValue(false)
|
||||||
|
}}
|
||||||
|
onConfirm={async () => {
|
||||||
|
setShowHardwareAccelConfirm(false)
|
||||||
|
setIsRelaunching(true)
|
||||||
|
try {
|
||||||
|
await patchAppConfig({ disableHardwareAcceleration: pendingHardwareAccelValue })
|
||||||
|
await relaunchApp()
|
||||||
|
} catch (e) {
|
||||||
|
alert(e)
|
||||||
|
setIsRelaunching(false)
|
||||||
|
}
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
<SettingCard>
|
<SettingCard>
|
||||||
<SettingItem title={t('settings.language')} divider>
|
<SettingItem title={t('settings.language')} divider>
|
||||||
<Select
|
<Select
|
||||||
@ -348,6 +374,28 @@ const GeneralConfig: React.FC = () => {
|
|||||||
}, 1000)}
|
}, 1000)}
|
||||||
/>
|
/>
|
||||||
</SettingItem>
|
</SettingItem>
|
||||||
|
<SettingItem
|
||||||
|
title={t('settings.disableHardwareAcceleration')}
|
||||||
|
actions={
|
||||||
|
<Tooltip content={t('settings.disableHardwareAccelerationTooltip')}>
|
||||||
|
<Button isIconOnly size="sm" variant="light">
|
||||||
|
<IoIosHelpCircle className="text-lg" />
|
||||||
|
</Button>
|
||||||
|
</Tooltip>
|
||||||
|
}
|
||||||
|
divider
|
||||||
|
>
|
||||||
|
<Switch
|
||||||
|
size="sm"
|
||||||
|
isSelected={disableHardwareAcceleration}
|
||||||
|
isDisabled={isRelaunching}
|
||||||
|
onValueChange={(v) => {
|
||||||
|
if (isRelaunching) return
|
||||||
|
setPendingHardwareAccelValue(v)
|
||||||
|
setShowHardwareAccelConfirm(true)
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
</SettingItem>
|
||||||
<SettingItem title={t('settings.backgroundColor')} divider>
|
<SettingItem title={t('settings.backgroundColor')} divider>
|
||||||
<Tabs
|
<Tabs
|
||||||
size="sm"
|
size="sm"
|
||||||
|
|||||||
@ -65,6 +65,10 @@
|
|||||||
"settings.showTraffic_mac": "Show Network Speed in Status Bar",
|
"settings.showTraffic_mac": "Show Network Speed in Status Bar",
|
||||||
"settings.showDockIcon": "Show Dock Icon",
|
"settings.showDockIcon": "Show Dock Icon",
|
||||||
"settings.useWindowFrame": "Use System Title Bar",
|
"settings.useWindowFrame": "Use System Title Bar",
|
||||||
|
"settings.disableHardwareAcceleration": "Disable Hardware Acceleration",
|
||||||
|
"settings.disableHardwareAccelerationTooltip": "Disabling hardware acceleration can resolve rendering issues or crashes caused by graphics driver problems, but may reduce performance. Requires app restart to take effect",
|
||||||
|
"settings.hardwareAcceleration.confirm.title": "Confirm App Restart",
|
||||||
|
"settings.hardwareAcceleration.confirm.content": "Changing hardware acceleration settings requires an app restart to take effect. Restart now?",
|
||||||
"settings.backgroundColor": "Background Color",
|
"settings.backgroundColor": "Background Color",
|
||||||
"settings.backgroundAuto": "Auto",
|
"settings.backgroundAuto": "Auto",
|
||||||
"settings.backgroundDark": "Dark",
|
"settings.backgroundDark": "Dark",
|
||||||
|
|||||||
@ -62,6 +62,10 @@
|
|||||||
"settings.showTraffic_mac": "نمایش سرعت شبکه در نوار وضعیت",
|
"settings.showTraffic_mac": "نمایش سرعت شبکه در نوار وضعیت",
|
||||||
"settings.showDockIcon": "نمایش آیکون Dock",
|
"settings.showDockIcon": "نمایش آیکون Dock",
|
||||||
"settings.useWindowFrame": "استفاده از نوار عنوان سیستم",
|
"settings.useWindowFrame": "استفاده از نوار عنوان سیستم",
|
||||||
|
"settings.disableHardwareAcceleration": "غیرفعال کردن شتاب سختافزاری",
|
||||||
|
"settings.disableHardwareAccelerationTooltip": "غیرفعال کردن شتاب سختافزاری میتواند مشکلات رندرینگ یا کرش ناشی از مشکلات درایور گرافیک را حل کند، اما ممکن است عملکرد را کاهش دهد. نیاز به راهاندازی مجدد برنامه دارد",
|
||||||
|
"settings.hardwareAcceleration.confirm.title": "تایید راهاندازی مجدد برنامه",
|
||||||
|
"settings.hardwareAcceleration.confirm.content": "تغییر تنظیمات شتاب سختافزاری نیاز به راهاندازی مجدد برنامه دارد. اکنون راهاندازی مجدد شود؟",
|
||||||
"settings.backgroundColor": "رنگ پسزمینه",
|
"settings.backgroundColor": "رنگ پسزمینه",
|
||||||
"settings.backgroundAuto": "خودکار",
|
"settings.backgroundAuto": "خودکار",
|
||||||
"settings.backgroundDark": "تیره",
|
"settings.backgroundDark": "تیره",
|
||||||
|
|||||||
@ -62,6 +62,10 @@
|
|||||||
"settings.showTraffic_mac": "Показывать скорость в строке состояния",
|
"settings.showTraffic_mac": "Показывать скорость в строке состояния",
|
||||||
"settings.showDockIcon": "Показывать значок в доке",
|
"settings.showDockIcon": "Показывать значок в доке",
|
||||||
"settings.useWindowFrame": "Использовать системную рамку окна",
|
"settings.useWindowFrame": "Использовать системную рамку окна",
|
||||||
|
"settings.disableHardwareAcceleration": "Отключить аппаратное ускорение",
|
||||||
|
"settings.disableHardwareAccelerationTooltip": "Отключение аппаратного ускорения может решить проблемы с рендерингом или сбоями, вызванными проблемами драйверов графики, но может снизить производительность. Требует перезапуска приложения",
|
||||||
|
"settings.hardwareAcceleration.confirm.title": "Подтверждение перезапуска приложения",
|
||||||
|
"settings.hardwareAcceleration.confirm.content": "Изменение настроек аппаратного ускорения требует перезапуска приложения. Перезапустить сейчас?",
|
||||||
"settings.backgroundColor": "Цвет фона",
|
"settings.backgroundColor": "Цвет фона",
|
||||||
"settings.backgroundAuto": "Авто",
|
"settings.backgroundAuto": "Авто",
|
||||||
"settings.backgroundDark": "Тёмный",
|
"settings.backgroundDark": "Тёмный",
|
||||||
|
|||||||
@ -65,6 +65,10 @@
|
|||||||
"settings.showTraffic_mac": "在状态栏显示网速",
|
"settings.showTraffic_mac": "在状态栏显示网速",
|
||||||
"settings.showDockIcon": "显示 Dock 图标",
|
"settings.showDockIcon": "显示 Dock 图标",
|
||||||
"settings.useWindowFrame": "使用系统标题栏",
|
"settings.useWindowFrame": "使用系统标题栏",
|
||||||
|
"settings.disableHardwareAcceleration": "禁用硬件加速",
|
||||||
|
"settings.disableHardwareAccelerationTooltip": "禁用硬件加速可以解决某些显卡驱动问题导致的渲染异常或崩溃,但可能会降低性能。修改后需要重启应用生效",
|
||||||
|
"settings.hardwareAcceleration.confirm.title": "确认重启应用",
|
||||||
|
"settings.hardwareAcceleration.confirm.content": "修改硬件加速设置需要重启应用才能生效。是否立即重启?",
|
||||||
"settings.backgroundColor": "背景颜色",
|
"settings.backgroundColor": "背景颜色",
|
||||||
"settings.backgroundAuto": "自动",
|
"settings.backgroundAuto": "自动",
|
||||||
"settings.backgroundDark": "深色",
|
"settings.backgroundDark": "深色",
|
||||||
|
|||||||
1
src/shared/types.d.ts
vendored
1
src/shared/types.d.ts
vendored
@ -237,6 +237,7 @@ interface IAppConfig {
|
|||||||
disableTray?: boolean
|
disableTray?: boolean
|
||||||
showFloatingWindow?: boolean
|
showFloatingWindow?: boolean
|
||||||
floatingWindowCompatMode?: boolean
|
floatingWindowCompatMode?: boolean
|
||||||
|
disableHardwareAcceleration?: boolean
|
||||||
connectionCardStatus?: CardStatus
|
connectionCardStatus?: CardStatus
|
||||||
dnsCardStatus?: CardStatus
|
dnsCardStatus?: CardStatus
|
||||||
logCardStatus?: CardStatus
|
logCardStatus?: CardStatus
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user