DEsk Mod开发者教程:如何为新语言、新设置项和新声音扩展代码
发布时间:2026/10/19 3:32:16 锦皓数字建站

【免费下载链接】DEsk项目地址https://gitcode.com/gh_mirrors/desk7/DEsk点击查看免费下载DEsk 是一款拟物风格的 Wayland Linux 桌面环境把整个桌面画成一张真实的书桌窗口是纸、通知是信箱里的信、声音全部实时合成。想给 DEsk 添加新语言、新设置项或新声音吗这份 Mod 教程将带你完整走通这三类最常见的代码扩展每步都标出要改的文件和检查方法。先阅读官方 Mod 文档 docs/MODDING.md 和架构文档 docs/ARCHITECTURE.md。DEsk 是 MIT 协议修改副本时保留LICENSE并在 README 中说明改动即可。环境搭建三步完成构建与预览meson setup build meson compile -C build meson test -C build # 会校验翻译表改完代码后最轻量的验证方式是desk-preview它不需要合成器直接把画面画成 PNG./build/desk-preview -o out.png -s 1440x900 ./build/desk-preview -o out.png --lang de --shelf # 德语书架视图一、添加新语言让桌面上的文字说你的语言DEsk 的界面文字不读资源文件全部走代码里的翻译表。核心机制很简单英文是键TR(TO DO)在英语下就是 TO DO在其他语言下查表取翻译见 include/i18n.h 的注释。第 1 步注册语言枚举在 include/i18n.h 的enum desk_lang中于DESK_LANG_COUNT之前插入新语言例如DESK_LANG_IT。第 2 步填翻译表与语言码在 src/i18n.c 里做三件事CODES表第 1517 行加一行{ it, italian }它是shell.conf的language键和系统 locale 的识别码WORDS大表的每一行按语言顺序en、ja、zh、ko、es、fr、de…追加一列没有翻译就写NULL会自动回退显示英文所以可以一点点补MONTH_WHOLE、MONTH_SHORT、DAY_WHOLE、DAY_SHORT、DAY_LETTER五张日期表各加一行。如果新语言字间无空格如 CJK还要让desk_lang_wide对返回true第 1575 行。第 3 步更新日期、设置与字体的配套位置src/index.c应用索引的 AM/PM 词表HALFsrc/settings.c语言选项的LANG_WORDS用该语言自称与LANG_VALS各加一项src/wm.cconf_other中language键接受的代码列表src/apps.cREGION表登记该语言常用 locale决定应用按什么语言归档CJK 语言还需在 src/fonts.c 配置字体区域。验证meson test -C build会检查列数、重复键和 printf 占位符再用desk-preview --lang xx分别加--shelf、--console、--calendar、--lock逐视图查看重点看最长的德语和 CJK 语言是否溢出个别地方会自动缩字仍然溢出的要换更短的译文。二、添加新设置项一行 shell.conf一行设置面板一个设置 shell.conf里的一行配置 Shell Settings 面板里的一行表单共 4 处改动。第 1 步配置读取wm.c在 src/wm.c 的struct shell_conf第 205 行加字段shell_conf_defaults里给默认值然后写读取逻辑是/否型挂进shell_conf_read_file的 yes/no 连串里其他取值加进conf_other第 10032 行起参考现成的motion、camera_bounce值不认识就用wlr_log(WLR_ERROR, ...)报出来并保留默认值——DEsk 不认识的键会写日志但不删这正是新旧版本能共享一份shell.conf的原因。最后在shell_apply_all里让设置生效它不仅在启动时跑shell.conf每次变化都会重跑。第 2 步设置面板表单settings.c在 src/settings.c 的SETTINGS数组中放到对应分区下开关用S_CHECK选项用S_CHOICE配*_WORDS显示词如MOTION_WORDS和*_VALS写入 shell.conf 的值两个数组。第 3 步文案与文档标签、说明文字和各选项词都要走WORDS翻译表见上节并把新键写入 docs/CONFIGURATION.md。三、添加新声音从零合成不录一个音DEsk 的所有音效在 src/sfx.c 里用物理建模实时合成敲击是一组谐振衰减mode、摩擦是着色噪声friction、纸是爆响加气流crackleswish、铰链是滑移声creak。加一个新声音只要 3 步注册名字在 include/sound.h 的enum desk_sound中于DESK_SND_COUNT之前加DESK_SND_YOURS写出合成函数在sfx.c里实现s_yours(struct buf *b, struct rng *r, int v)用文件顶部的积木strike、burst、mode、crackle、swish、finish拼出材质感结尾务必调finish(b, rms_db, peak_db)归一响度参数里的随机数r让每次播放略有不同没有任何两个瞬间完全相同登记与播放在SFX表第 1377 行起登记{ yours, 秒数, 变体数, s_yours }然后在事件处调用desk_sound_play(DESK_SND_YOURS, pan, gain, 0.0);pan从 -1左到 1右一般取发声物在屏幕上的位置声音就会从那个方向传来。不吵人的调试技巧设置DESK_SOUNDfile:/tmp/desk-%p.wav运行混音会写成 WAV 文件而不是进音箱方便反复试听。四、分享前的自检清单meson test -C build meson setup b-min -Dpostdisabled -Dsounddisabled -Dxwaylanddisabled meson setup b-werror -Dbuildtypedebug -Dwerrortrue meson compile -C b-min meson compile -C b-werrormeson test通过翻译表列数、键唯一、占位符一致desk-preview下用你的语言、最长假通常是德语和 CJK 假各看一遍图形等级切到 2D Fallbackgraphics 2d确认没变卡日志无[ERROR]行嵌套运行时在 stderr安装后在~/.local/state/desk/session.log。掌握以上三块——翻译表、shell.conf读取链、合成音积木——你就能覆盖 DEsk Mod 的绝大多数扩展需求若改到房间几何记得 src/draw.c 与 src/room.glsl 必须用同样的方式改两处再用desk-gputest --room核对两者一致。赞分享【免费下载链接】DEsk项目地址https://gitcode.com/gh_mirrors/desk7/DEsk点击查看免费下载相关推荐Lan Mouse 开发者指南如何为项目贡献代码和扩展新后端Lan Mouse 开发者指南如何为项目贡献代码和扩展新后端 Lan Mouse 是一款跨平台的鼠标和键盘共享软件类似于 Apple 设备上的 Univer桌面应用网络通信AlertToast实战教程5种弹窗类型的完整使用示例AlertToast实战教程5种弹窗类型的完整使用示例 AlertToast是一款专为SwiftUI打造的轻量级弹窗组件能够帮助开发者快速实现Apple风格UI库/组件移动开发桌面应用PRO Elements深度解析解锁Elementor Pro核心功能的实战指南PRO Elements深度解析解锁Elementor Pro核心功能的实战指南 你是否曾经在构建WordPress网站时因为Elementor Pro的高前端CMS上一篇WinUI 3 引擎内幕DComp 树遍历器DCompTreeHelper的架构原理与重新启用实战指南下一篇用 Cloudflare Agents 构建 Chat SDK 持久化状态agents/chat-sdk 完整接入指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。