资讯动态

Terminus `settings appearance` 完全指南:用 olares-cli 管理桌面语言、组件、壁纸与布局重置

发布时间:2026/10/14 2:56:53 来源:尧图企业网站定制
云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载本文以 Terminus 仓库中的olares-settings-appearance.md技能文档为主体结合cli/cmd/ctl/settings/appearance下的 Go 实现与 SPA 前端源码系统讲解olares-cli settings appearance命令树的全部用法读取整套外观配置、设置系统语言、调整桌面 Widget 偏好、管理桌面与登录壁纸内置选择/填充模式/上传/删除以及重置桌面布局。读完本文你将能够把 Settings → Appearance 页面上的所有可配置项完整迁移到命令行并理解版本门控、Cookie 主题机制等底层原理避免踩到写了一个无人读取的变量之类的坑。前置阅读olares-settings技能首页 与 共享技能基础。运行前请先通过olares-cli settings appearance --help和olares-cli settings appearance noun verb --help查看最新语法。命令树总览settings appearance子树完整镜像了 Settings → Appearance 页面语言locale、桌面 Widget 偏好、壁纸wallpaper以及桌面布局重置。所有动词都是**按用户per-user**生效均不需要管理员或所有者权限——从源码看Appearance 位于普通用户菜单admin.ts 第 101-103 行代码中也没有PreflightRole检查见 language.go 的注释。动词版本要求权限状态用途get任意任意VERIFIED一次性读取整个页面语言 Widget 壁纸language set locale任意其中 5 个语言需 ≥ 1.12.7任意VERIFIED设置系统语言widget set [flags]≥ 1.12.6任意VERIFIED设置桌面 Widget 偏好wallpaper list surface任意任意VERIFIED展示内置壁纸范围与已上传图片wallpaper set surface number\|url任意任意VERIFIED选择壁纸wallpaper style set surface Fill\|Stretch\|Tile任意任意VERIFIED设置壁纸填充模式wallpaper upload surface --file任意任意VERIFIED上传本地图片并选中wallpaper delete surface url任意任意VERIFIED删除已上传的图片layout reset≥ 1.12.6任意VERIFIED恢复默认桌面布局其中surface取值固定为desktop或login。整个子树中的所有固定值——surface、填充模式、日期格式、语言——在匹配时不区分大小写并以规范拼写存储因此Desktop、stretch、yy.m.d、en-us均可用。language set还保留了一个--force参数用于写入早于当前 CLI 版本发布的语言强制写入的值将原样透传见 language.go 的resolveLocale。子树的父命令注册在 root.goget、language、widget、wallpaper、layout五个子命令theme刻意未注册见下文。为什么没有 theme主题动词这是该子树中最反直觉的设计文档专门强调桌面亮/暗主题是浏览器 CookieSPA 从不将其上报给后端因此没有任何 CLI 能改变它。从 SPA 源码可以确证apps/packages/app/src/components/ui/theme/types.ts定义了themeModeName theme_name而apps/packages/app/src/stores/settings/background.ts的themeUpdate直接把主题写入Cookies.set(themeModeName, ...)从未经过任何 HTTP 接口。仓库中还保留了一个未注册的theme set实现theme.go它通过/api/env/userenvs写OLARES_USER_THEME用户环境变量。但正如源码注释所言该 UserEnv没有任何已发布的读取方——SPA 不引用它、登录界面greeter只读取登录壁纸、也没有应用清单通过valueFrom绑定它。注册该动词会对一次无人观察的写入报告成功因此刻意保持未注册。所以当用户说切换到深色模式时正确回答是只能在浏览器中的 Settings → Appearance 修改因为该值是一个本地 Cookie不要去找动词也不要改用settings advanced env user set --var OLARES_USER_THEME...SKILL.md 同样明示了这一规则。版本门控Version Gates两个动词需要 Olares1.12.6因为它们的上游接口在此时才出现widget setWidget 偏好 API/api/widget和layout reset桌面布局重置路由/api/desktop/layout/reset。其余所有wallpaper动词与get在任意受支持的后端上都可运行。language set的门控在值而非动词上en-US、zh-CN在任何版本都可用de-DE、es-ES、it-IT、fr-FR、ja-JP需要 Olares ≥ 1.12.7它们的翻译包在此版本才发布。版本只在请求这五个语言之一时才被解析因此当后端版本无法确认时两个通用语言仍然可用。此外要提醒用户这五个语言只会改变 LarePass——浏览器桌面仍只打包了en-US和zh-CN语言包其余语言会回退到英文而两者读取的是同一个字段。在较旧的后端上被门控的动词与语言会前置失败并给出明确信息指明所需版本与检测到的版本参见 Common errors不会发送任何请求。特别注意layout reset的版本检查发生在确认提示之前因此旧后端绝不会询问用户确认一个它无法执行的重置。关于版本语义源码在 version_gate_test.go 中验证了两点日常构建按其major.minor.patch基础版本归类1.12.6-20260203属于 1.12.6 线可通过门控失败关闭fail-closed版本无法确定时拒绝执行并提示运行olares-cli profile list --refresh-version。门控常量定义于 common.goappearanceMinOlaresVersion 1.12.6并通过preflight.RequireMinVersion复用共享的版本检查机制。get是唯一一个降级而非失败的动词低于 1.12.6 时它仍读取任意版本都存在的语言与壁纸部分Widget 段则渲染为requires Olares 1.12.6使用-o json时该段为null键仍然存在便于调用方区分被门控的段与CLI 不认识的段。在 1.12.5 上语言段的timezone还会返回空值渲染为-。get唯一的只读动词olares-cli settings appearance get olares-cli settings appearance get -o json不存在widget get或wallpaper get。一个get读取三个上游端点/api/wallpaper/config/system、/api/widget、/api/wallpaper——Widget 那个仅在 1.12.6 上读取。从 get.go 的实现看三个段分别对应三个独立的 HTTP 请求任何一个因认证、500 或格式异常而失败都会导致整个命令失败——因为清零的段会被误读为真实配置。-o json输出三段每段保留上游字段名原样{ locale: { language: en-US, location: , timezone: UTC }, widget: { showWeight: true, is24HourFormat: true, dateFormat: YYYY/MM/DD, showDashboard: true }, wallpaper: { desktop: /bg/0.jpg, desktopStyle: fill, login: /bg/0.jpg, loginStyle: fill, upload_desktop_backgrounds: [], upload_login_backgrounds: [] } }读取语言时要取.locale.language而不是.language。showWeight是 Widget 总开关在线上的真实字段名源码 widget.go 明确注释showWeight is the wire name for the widget master switch, despite what it reads like与直觉相反但必须照此解析。JSON 承载存储值表格为读者重命名desktop: /bg/3.jpg打印为built-in 3desktopStyle: cover打印为StretchdateFormat: M/D/YY打印为M/D/YY (8/27/26)language: zh-CN打印为zh-CN (简体中文)——与动词和 Settings 页面的命名一致。脚本请以-o json为准。widget set只修改你传入的旗标olares-cli settings appearance widget set --show-widgetsfalse olares-cli settings appearance widget set --24-hourfalse --date-format M/D/YY olares-cli settings appearance widget set --show-dashboardtrue上游的 POST/api/widget会替换整个偏好对象因此 CLI 先读取当前值再把未指名的项原样回传read-modify-write见 widget.go 的runWidgetSet。一个旗标都不传直接执行是错误而不是空操作——错误信息会列出四个可用旗标。四个偏好即页面 Widget 段的全部内容--show-widgets总开关。Widget 就是桌面上的时钟块——时间、日期以及下方的 CPU/内存环形图。--24-hour时钟的 24 小时制。--date-format时钟日期格式。--show-dashboard是否显示环形图dashboard。布尔旗标必须带等号--24-hour false会把值设成 true然后拒绝多余的false单词并给出正确写法rejectBooleanAsArgument专门拦截这种情况见 widget.go。用户看到的效果是--show-widgetsfalse隐藏整个时钟块--show-dashboardfalse只隐藏环形图而保留时钟。因此当用户要求隐藏资源占用读数时对应的是--show-dashboard而不是总开关。--date-format会对照 SPA 的 11 个模式列表校验因为上游会原样存储任何字符串而列表外的模式会在桌面时钟中静默渲染失败。支持的模式源码 widget.go 与 SPA 的widgetPreferences.ts一致YYYY/MM/DD D/M/YY M/D/YY DD/MM/YYYY DD.MM.YYYY DD-MM-YYYY YYYY.MM.DD YYYY-MM-DD YY/MM/DD YY-M-D YY.M.D大小写不敏感且以规范拼写存储因此--date-format yy.m.d设置的是YY.M.D。被拒绝时错误会打印整个列表并把每个模式渲染为今天的日期——这正是 Settings 页面的展示方式YY-M-D与YY.M.D否则无法区分。没有--force新版本 Settings 新增的模式需要新版 CLI 才能预览。wallpaper内置、填充模式、上传与删除olares-cli settings appearance wallpaper list desktop olares-cli settings appearance wallpaper set desktop 3 olares-cli settings appearance wallpaper style set desktop Stretch olares-cli settings appearance wallpaper upload desktop --file ./bg.jpg olares-cli settings appearance wallpaper delete desktop https://files.example/bg.jpg --yes内置壁纸按编号选择与 Settings 的网格一致——网格是一组无名的缩略图编号是两侧唯一的句柄。wallpaper list surface打印范围与当前选中值它必须接收 surface 参数因为两个 surface 内置图片数量不同Built-in desktop wallpapers 0-27, currently 3 Uploaded desktop wallpapers none当已上传图片处于激活状态时内置行不再打印currently该 URL 改用*标记从而保证不会误报内置壁纸为激活见 wallpaper.go 的renderWallpaperChoices。范围镜像了 SPA 的picturesCount这是它唯一的存在位置桌面0-27、登录0-28——28对登录有效、对桌面无效。set也接受已上传的https://URL以及存储形式的/bg/n.jpg因此从get -o json读出的值可以直接回喂。值被原样存储且上游不校验——坏值会被接受留下一个无任何报错的损坏背景。因此 CLI 先做本地校验resolveWallpaperValue见 wallpaper.go编号超出范围时拒绝--force可跳过范围检查以支持新版本新增的内置图但仍会把编号存储为/bg/n.jpg。上传 URL 只按形态判断而不做查询保证set保持单次请求。永远不要建议/login/n.jpg。两个 surface 存储的都是/bg/n.jpg登录界面在自己的资源根目录下解析存储值LoginPage.vue渲染auth/ valueSettings 页面只是把前缀换成/login/用于预览登录变体。存储一个/login/n.jpg将无法解析到任何地方。builtinWallpaperPrefix /bg/定义于 wallpaper.go。填充模式按 Settings 的命名Fill、Stretch、Tile大小写不敏感。存储值fill、cover、repeat同样被接受get打印的是标签。对应关系在源码 wallpaper.go 的contentModes表与 SPA 的IMG_CONTENT_MODE常量中保持一致。upload依次执行上传图片 → 在 surface 的图库注册返回的 URL → 选中它--no-set在注册后停止。上传目标是SettingsURL/images/upload/v1不是桌面入口——/images只在 settings 主机上被代理见 common.go 的imageClient注释因此报错中出现该 origin 是预期的而非路由错误。登录壁纸上传携带public访问策略因为登录界面在任何人登录之前就要拉取这些图片。接受的类型png、jpeg、jpg、gif。delete接受一个已上传 URL提示确认若被删除的图片正是当前激活壁纸上游会回退到内置默认图。它只把图片从图库移除——文件仍留在用户的 DriveHome/Pictures/Upload与 SPA 的删除按钮行为一致。不要告诉用户它释放了磁盘空间删除文件是独立的files rm操作。layout reset重置桌面布局olares-cli settings appearance layout reset olares-cli settings appearance layout reset --yes丢弃当前用户的启动台排序、文件夹与 Dock 排列并向已打开的会话广播变更。没有撤销。需要 Olares ≥ 1.12.6且在提示前检查。输出会点名上游实际重置的 surface——观测到的结果每次都是launchpad, dock即使布局本来就是默认值因此这不能作为曾被定制过的信号。从 layout.go 看重置调用 POST/api/desktop/layout/reset上游对应desktop-layout.controller.ts返回值changedSurfaces字段就是输出中打印的 surface 列表。注意版本门控与确认提示的顺序先门控requireAppearanceBackendVersion再ConfirmDestructive提示旧后端永远不会弹出一个无法执行的确认框。Agent 最佳实践切换到深色模式→ 如实报告只能在浏览器 Settings → Appearance 修改因为该值是本地 Cookie。不要寻找动词也不要改写入用户环境变量。换壁纸→ 先询问是哪个 surface因为desktop与login是相互独立的设置用户很少同时指两者然后运行wallpaper list surface而不是猜一个编号。内置图用编号指代永远不要写成/login/n.jpg。layout reset与wallpaper delete需要分别确认。两者对用户的布局或图库都不可逆而且都不包含在换壁纸的请求隐含意之中。不要用本子树处理按应用的图标或入口标题——那些属于应用安装后配置。常见错误速查症状原因修复unknown surface ...第一个位置参数不是desktop/login传两者之一surface has no built-in wallpaper n编号超出该 surface 的范围运行wallpaper list surface桌面到 27、登录到 28... is not a surface wallpaper既非编号、非http(s)://URL、也非/bg/n.jpg值——例如/login/n.jpg路径从wallpaper list surface取编号只有新版本新增的值才用--forceunsupported fill mode ...模式不在Fill/Stretch/Tile中使用三者之一按 Settings 中的拼写unsupported locale ...不是 SPA 携带的七个语言之一从错误打印的列表中选择仅当新版本新增语言时才用--forcelocale de-DE (Deutsch) needs Olares 1.12.7五个 1.12.7 语言之一运行在旧后端上升级 Olares或停留在en-US/zh-CN未发送任何内容unsupported --date-format ...模式不在 SPA 列表中从错误打印的列表中选择每个均以今天的日期展示widget set requires at least one of ...调用时未传任何旗标指明要修改的偏好read locale: .../read wallpaper: ...get的某一段失败重试然后检查settings advanced statusrequires Olares 1.12.6 ...onwidget set/layout reset后端早于动词的上游版本升级 Olares未发送任何内容也未重置布局requires Olares 1.12.6 ..., but the backend version could not be determined版本无法检测登录后运行olares-cli profile list --refresh-versionupload succeeded but the image service returned no imageUrl图片服务接受了文件但返回了意外响应体重试若持续出现则图片服务配置有误stdin is not a terminal — pass --yes to confirm在脚本中执行破坏性动词向用户确认后加--yes进一步阅读appearance 命令树实现get.go三段读取与降级、widget.goread-modify-write 与 11 种日期格式、wallpaper.gosurface 表、内置范围、上传/删除、language.go语言白名单与版本门控、layout.go重置流程、common.goBFL 信封与图片上传客户端。版本门控测试验证 1.12.5 拒绝、1.12.6 日常构建通过、版本不可检测时失败关闭。SPA 侧证据背景设置 storeWallpaper接口、theme_nameCookie、IMG_CONTENT_MODE、Appearance 页面语言、Widget 开关与日期时间预览、主题类型定义themeModeName theme_name。技能体系共享的认证与平台门与settings 技能首页其中说明了 1.12.5/1.12.6/1.12.7 各版本差异与角色模型。赞分享云原生后端运维【免费下载链接】TerminusOpen-Source Personal Cloud OS for Always-On Agents项目地址https://gitcode.com/gh_mirrors/terminus2/Terminus点击查看免费下载相关推荐LTX-2.3-22b-IC-LoRA-HDR常见问题解答解决安装、运行和生成的20个难题LTX 2.3 22b IC LoRA HDR常见问题解答解决安装、运行和生成的20个难题 欢迎来到LTX 2.3 22b IC LoRA HDR的终极问题解人工智能大模型微调媒体生成视频YASB 壁纸组件Wallpapers Widget完全指南桌面壁纸切换、过渡动画与 pywal 配色联动YASB 壁纸组件Wallpapers Widget完全指南桌面壁纸切换、过渡动画与 pywal 配色联动 本篇指南围绕 YASB 状态栏中的壁纸组件展开桌面应用macOS 桌面壁纸管理工具macOS 桌面壁纸管理工具 项目基础介绍和主要编程语言 macOS 桌面壁纸管理工具是一个用于管理 macOS 系统桌面壁纸的开源项目。该项目由 sindre上一篇Qwen3-1.7B17亿参数重塑轻量级AI应用格局下一篇270M参数撬动百亿市场Gemma 3微型模型如何重塑边缘AI格局创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑