feat: 新增启动器界面缩放设置
在高缩放/小屏下,内嵌网页(如皮肤站)顶栏会被裁掉。新增“界面 与外观”中的“启动器缩放”设置,可整体缩放启动器界面。 - 新增 helpers/ui-scale.ts:用 localStorage 保存缩放值(纯本地 显示偏好,无需后端),并通过 CSS zoom 应用缩放(含内嵌网页)。 - App.vue 启动时调用 installUiScale() 应用已保存的缩放。 - AppearanceSettings.vue 新增缩放设置项:100/110/125/150 预设 加 50–200 滑条自定义。
This commit is contained in:
1 parent
d8a6d44890
commit
94cbcef324
3 files changed
+118
No files matched your search
@@ -26,6 +26,7 @@ import { computed, ref, watch } from 'vue'
|
||||
|
||||
import { get, set } from '@/helpers/settings.ts'
|
||||
import { getOS } from '@/helpers/utils'
|
||||
import { setUiScale, uiScale } from '@/helpers/ui-scale'
|
||||
import { useTheming } from '@/store/state'
|
||||
import {
|
||||
type AccentColor,
|
||||
@@ -209,6 +210,23 @@ const messages = defineMessages({
|
||||
defaultMessage:
|
||||
'Enables advanced rendering such as blur effects that may cause performance issues without hardware-accelerated rendering.',
|
||||
},
|
||||
uiScaleTitle: {
|
||||
id: 'app.appearance-settings.ui-scale.title',
|
||||
defaultMessage: 'Launcher scale',
|
||||
},
|
||||
uiScaleDescription: {
|
||||
id: 'app.appearance-settings.ui-scale.description',
|
||||
defaultMessage:
|
||||
'Scale the whole launcher interface. A smaller scale fits more content, which helps when embedded pages are cut off.',
|
||||
},
|
||||
uiScaleCustom: {
|
||||
id: 'app.appearance-settings.ui-scale.custom',
|
||||
defaultMessage: 'Custom',
|
||||
},
|
||||
uiScalePercent: {
|
||||
id: 'app.appearance-settings.ui-scale.percent',
|
||||
defaultMessage: '{value}%',
|
||||
},
|
||||
pageTransitionsTitle: {
|
||||
id: 'app.appearance-settings.page-transitions.title',
|
||||
defaultMessage: 'Page transition animations',
|
||||
@@ -1020,6 +1038,43 @@ watch(
|
||||
/>
|
||||
</template>
|
||||
</SettingsRow>
|
||||
<SettingsRow stacked>
|
||||
<template #label>
|
||||
<span id="settings-target-appearance-ui-scale" tabindex="-1">
|
||||
{{ formatMessage(messages.uiScaleTitle) }}
|
||||
</span>
|
||||
</template>
|
||||
<template #description>{{ formatMessage(messages.uiScaleDescription) }}</template>
|
||||
<template #control>
|
||||
<div class="flex w-full flex-col gap-3">
|
||||
<div class="flex flex-wrap gap-2">
|
||||
<button
|
||||
v-for="preset in [100, 110, 125, 150]"
|
||||
:key="preset"
|
||||
type="button"
|
||||
class="min-w-16 rounded-lg border border-solid px-3 py-1.5 text-sm font-semibold transition-colors"
|
||||
:class="
|
||||
uiScale === preset
|
||||
? 'border-brand bg-brand-highlight text-brand'
|
||||
: 'border-surface-4 bg-surface-3 text-secondary hover:border-surface-5 hover:text-contrast'
|
||||
"
|
||||
@click="setUiScale(preset)"
|
||||
>
|
||||
{{ preset }}%
|
||||
</button>
|
||||
</div>
|
||||
<Slider
|
||||
id="ui-scale"
|
||||
:model-value="uiScale"
|
||||
:min="50"
|
||||
:max="200"
|
||||
:step="5"
|
||||
unit="%"
|
||||
@update:model-value="(value) => setUiScale(Number(value))"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
</SettingsRow>
|
||||
<SettingsRow>
|
||||
<template #label>
|
||||
<span id="settings-target-appearance-page-transitions" tabindex="-1">
|
||||
|
||||
Reference in new issue
Block a user