灵界 OS 5.0 稳定版加入了一项看似很小、实际很影响日常体验的改动:桌面右上角的“系统介绍”和“添加小组件”按钮现在可以隐藏了。功能没有被删除,只是把是否长期展示的决定权交给用户。
两个按钮为什么值得做成可配置项
“系统介绍”和“添加小组件”都有明确用途,但它们并不一定属于高频操作。
系统介绍通常只在用户刚接触系统时需要;添加小组件虽然可能反复使用,也未必值得永久占据桌面视觉焦点。按钮始终显示能够提升功能的可发现性,却也会给熟悉系统的用户带来持续的视觉干扰。
5.0 的处理方式比较克制:不移除能力,也不强迫所有用户接受同一种桌面布局,而是在“设置 / 桌面”中分别增加:
- 隐藏系统介绍开关
- 隐藏添加小组件开关
分别设置开关很重要。有人可能不再需要系统介绍,却仍然频繁添加小组件;如果只提供一个“隐藏桌面按钮”的总开关,就无法满足这种组合。
隐藏入口不等于删除功能
这类设计的关键,是区分“功能是否存在”和“快捷入口是否可见”。桌面按钮只是功能入口,不应该与功能本身绑定成同一个状态。
从实现角度看,可以把配置设计为两个独立布尔值:
{
"desktop": {
"hideSystemIntroduction": false,
"hideAddWidget": false
}
}
渲染桌面时读取配置,决定是否显示按钮;系统介绍页面和添加小组件能力仍然保留。这样既减少了桌面元素,也为以后从设置、右键菜单或快捷键进入这些功能留下空间。
还需要注意一个边界:如果按钮是某项功能的唯一入口,隐藏后用户可能无法再次找到它。产品在采用此方案时,应确认至少能从“设置 / 桌面”恢复按钮;如果还有其他入口,也要保证它们不会同时被隐藏。
可以这样实践:做一个可运行的桌面设置原型
下面是一个独立 HTML 示例,用两个复选框控制右上角按钮,并通过 localStorage 保存选择。这里假设灵界 OS 的桌面由 Web 前端渲染;示例用于说明实现思路,并不代表其实际源码。
将内容保存为 desktop-settings.html 后直接用浏览器打开即可运行:
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>桌面按钮设置</title>
<style>
body { margin: 0; font: 16px system-ui; background: #eef1f4; color: #202124; }
.desktop { min-height: 55vh; padding: 24px; position: relative; }
.actions { position: absolute; top: 20px; right: 20px; display: flex; gap: 8px; }
button { padding: 8px 12px; border: 1px solid #b7bec8; background: white; cursor: pointer; }
.settings { padding: 24px; background: white; border-top: 1px solid #d7dce2; }
label { display: block; margin: 12px 0; }
</style>
</head>
<body>
<main class="desktop">
<h1>我的桌面</h1>
<div class="actions">
<button id="introButton">系统介绍</button>
<button id="widgetButton">添加小组件</button>
</div>
</main>
<section class="settings">
<h2>设置 / 桌面</h2>
<label><input id="hideIntro" type="checkbox"> 隐藏系统介绍</label>
<label><input id="hideWidget" type="checkbox"> 隐藏添加小组件</label>
</section>
<script>
const defaults = { hideIntro: false, hideWidget: false };
const saved = JSON.parse(localStorage.getItem("desktopPreferences") || "null");
const preferences = { ...defaults, ...saved };
const controls = {
hideIntro: document.querySelector("#hideIntro"),
hideWidget: document.querySelector("#hideWidget")
};
function render() {
controls.hideIntro.checked = preferences.hideIntro;
controls.hideWidget.checked = preferences.hideWidget;
document.querySelector("#introButton").hidden = preferences.hideIntro;
document.querySelector("#widgetButton").hidden = preferences.hideWidget;
}
Object.entries(controls).forEach(([key, control]) => {
control.addEventListener("change", () => {
preferences[key] = control.checked;
localStorage.setItem("desktopPreferences", JSON.stringify(preferences));
render();
});
});
render();
</script>
</body>
</html>
这个原型体现了三个实现原则:配置项彼此独立、默认保留原有入口、修改后立即反馈。实际产品如果支持账号同步,可以把 localStorage 换成用户偏好 API,但仍应保留合理默认值,并处理旧版本没有这些字段的情况。
升级和采用时检查什么
对于现有用户,最稳妥的默认行为通常是继续显示两个按钮,避免升级后入口突然消失。想要更简洁桌面的用户,再到“设置 / 桌面”中主动隐藏。
实现类似能力时,可以检查以下事项:
- 两个按钮能否分别控制,而不是被一个总开关捆绑。
- 隐藏后能否在设置中稳定恢复。
- 配置在刷新、重启或重新登录后是否符合产品预期。
- 键盘导航和屏幕阅读器是否会跳过隐藏元素。
- 老版本配置缺少新字段时,是否使用兼容的默认值。
灵界 OS 5.0 的这项更新没有增加醒目的新模块,而是处理了桌面上长期存在的视觉负担。对于高频使用的工作界面,这种允许用户收起低频入口的小改动,往往比继续堆叠功能更直接。