news 2026/8/24 9:42:47

多应用适配实战:adobe-discord-rpc如何用manifest.xml模板生成器与独立Discord Application ID支撑10+款Adobe软件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
多应用适配实战:adobe-discord-rpc如何用manifest.xml模板生成器与独立Discord Application ID支撑10+款Adobe软件

多应用适配实战:adobe-discord-rpc如何用manifest.xml模板生成器与独立Discord Application ID支撑10+款Adobe软件

【免费下载链接】adobe-discord-rpcDiscord Rich Presence extension for your adobe apps!项目地址: https://gitcode.com/gh_mirrors/ad/adobe-discord-rpc

adobe-discord-rpc 是一款为 Adobe 全家桶打造的Discord Rich Presence(丰富状态)扩展:打开 Photoshop、Premiere Pro 等软件时,你的 Discord 个人资料会自动显示"正在做什么、做到哪一步"。它最精妙的工程实践,是用一份manifest.xml 模板生成器统一声明 10+ 款 Adobe 宿主软件,并为每款软件配置独立的 Discord Application ID,从而实现"一个扩展、多端共存"。🎯

一、先看效果:Rich Presence 长什么样

安装后打开任意支持的 Adobe 软件,Discord 资料卡就会自动更新状态信息,例如当前文档名、合成/时间轴、渲染进度、图层数,还会带上对应的软件大图标与计时器。下面两张图分别来自 Discord 实际资料卡与状态预览:

二、核心机制一:manifest.xml 模板生成器如何"一键适配"多应用

CEP(Common Extensibility Platform)扩展安装时,Adobe 依赖manifest.xml判断"这个扩展能在哪些软件里运行"。手写 10 多份声明既繁琐又容易出错,adobe-discord-rpc 的做法是用脚本生成

  • 模板文件:assets/templates/manifest.template.xml.js
  • 它读取宿主机表,为每款软件循环生成一段<Extension>声明,包含:
    • <Host Name="AEFT" />—— 声明目标宿主(AEFT=After Effects、PHXS=Photoshop、PPRO=Premiere Pro……)
    • <ScriptPath>./host/AEFT.jsx</ScriptPath>—— 指向该宿主专属脚本
    • <StartOn>事件(应用初始化、窗口激活、文档切换)—— 实现"启动即自动运行",无需手动点击

💡长尾要点:模板里<ExecutionEnvironment><HostList>Version="[0.0,99.9]"区间声明兼容版本,一次覆盖 2018(CEP 8)到 2025 各版本,无需为每个 Adobe 版本单独适配。

也就是说:新增一款 Adobe 软件 = 宿主机表加一个 key + 写一份 jsx 脚本,manifest 由模板自动生成,适配成本被压到最低。

三、核心机制二:独立 Discord Application ID

Discord 的 Rich Presence 必须绑定一个 Application ID(决定状态卡片的大图标与活动标识)。项目没有"所有软件共用一个 ID",而是每款软件一个专属 ID,映射关系集中在src/rpc_client-src/client.js

宿主代码Adobe 软件专属 Application ID
PHSP / PHXSPhotoshop748586506888806460
AEFTAfter Effects748568089939148832
PPROPremiere Pro748580494324662353
AUDTAudition750462631176830977
ILSTIllustrator751430009716998144
IDSNInDesign753663267137912953
AICYInCopy756139390924750859
FLPRAnimate756143118604173384
DRWVDreamweaver756169802766221502
PRLDPrelude756139699051036797
RUSHPremiere Rush756158973241196595
MEDIA_ENCODERMedia Encoder756149565429776453

运行时,入口src/rpc_client-src/index.js通过csInterface.getApplicationID()拿到当前所在宿主的代码(如在 Premiere Pro 中运行时返回PPRO),再从映射表取出对应 ID 初始化 Rich Presence 客户端(见src/rpc_client-src/rpc.jslogin(),通过 IPC 连接 Discord 桌面端)。

🎨 独立 ID 带来的直接收益:每款软件可以上传自己的大图标(Ps/Ae/Pr…),Discord 状态卡"一眼认出你在用哪款 Adobe 软件",而不是一个通用的默认图。

四、宿主专属脚本:每款软件"各报各的状态"

模板把每款宿主路由到src/host/目录下的独立.jsx脚本(共 12 份),脚本只需实现统一约定的函数:state()details()smallImageKey()smallImageText()largeImageText()partySize()partyMax()

举两个典型实现 📝:

  • Photoshopsrc/host/PHXS.jsx):details 返回当前文档名;state 返回活动图层名;partySize/partyMax 统计当前图层序号与总图层数,展示为 "Layer 5 (1 of 32)"。
  • After Effectssrc/host/AEFT.jsx):details 返回项目文件名;state 返回当前合成(含图层数);当检测到renderQueue.rendering时,party 字段变成渲染进度(第几项 / 共几项),并在 state 显示 "Rendering"。

主循环每秒(interval = 1000ms)轮询这些函数,只有内容变化时才调用rpc.setActivity()上报,避免无谓刷新。

五、最快安装方法(3 步上手)

  1. 下载 Release 中的扩展包,将discord rpc文件夹解压到:
    • Windows:C:\Program Files (x86)\Common Files\Adobe\CEP\extensions
    • macOS:~/Library/Application Support/Adobe/CEP/extensions
  2. 打开调试模式(二选一):
    • Windows 注册表:按版本选择HKEY_CURRENT_USER\Software\Adobe\CSXS.9~12,新建字符串值PlayerDebugMode=1
    • macOS 终端:defaults write com.adobe.CSXS.12 PlayerDebugMode 1
  3. 打开任意支持的 Adobe 软件 → 菜单栏窗口 > 扩展 > Discord Rich Presence,状态即刻上线 ✅

📦 详细的官方安装文档见GUIDE.md,效果演示可参考下图:

⚠️ 小贴士:Apple Silicon(M 系列芯片)用户需通过 Rosetta 运行 Photoshop,并在"首选项"中开启 Legacy Extensions 后重启;Media Encoder、Acrobat、Lightroom Classic 暂不支持。

六、彩蛋:Cat 模式与配置系统

配置项模板定义在src/rpc_client-src/localstorage.js:Details / State / Timestamp / 大图标 等均可单独开关。此外还有一个catMode开关——打开后资料头像换成一只猫 🐱:

七、总结:这套架构为什么值得借鉴

设计文件位置解决的问题
manifest.xml 模板生成器assets/templates/manifest.template.xml.js多宿主声明自动化,新增软件零重复劳动
宿主 → Application ID 映射表src/rpc_client-src/client.js每款软件独立 ID,图标与身份差异化
运行时宿主识别src/rpc_client-src/index.jsgetApplicationID()自动匹配,无需用户配置
宿主专属脚本src/host/*.jsx每款软件读取自己的文档/合成/渲染状态
统一 RPC 客户端src/rpc_client-src/rpc.js断线 15 秒自动重连,状态增量上报

一套模板 + 一张映射表 + 一组同构脚本,adobe-discord-rpc 就把"适配 10+ 款 Adobe 软件"这件脏活变成了可复制的工程流程——这也是它作为多应用适配案例最值得普通开发者借鉴的地方。

【免费下载链接】adobe-discord-rpcDiscord Rich Presence extension for your adobe apps!项目地址: https://gitcode.com/gh_mirrors/ad/adobe-discord-rpc

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/24 9:42:31

AI原生软件工程:从确定性构建到智能代理协同的范式革命

1. 从确定性到代理化&#xff1a;AI原生软件工程的范式革命“软件工程”这个词&#xff0c;在过去半个多世纪里&#xff0c;其内核始终围绕着“确定性”展开。我们编写严谨的规格说明书&#xff0c;设计精密的架构图&#xff0c;用瀑布模型或敏捷迭代来管理流程&#xff0c;最终…

作者头像 李华
网站建设 2026/8/24 9:42:13

HeliBoard 安装教程:三步快速用上离线开源隐私键盘

HeliBoard 安装教程&#xff1a;三步快速用上离线开源隐私键盘 【免费下载链接】HeliBoard Customizable and privacy-conscious open-source keyboard 项目地址: https://gitcode.com/gh_mirrors/he/HeliBoard HeliBoard 是一款完全离线的开源键盘&#xff0c;不申请网…

作者头像 李华
网站建设 2026/8/24 9:40:13

从北邮机试题看优先队列实战:自定义比较器与复数模最大问题

1. 项目概述&#xff1a;从一道复试机试题看优先队列的实战应用最近在整理一些知名高校的计算机专业复试机试题&#xff0c;北京邮电大学的这道“复数集合”题目让我眼前一亮。它初看平平无奇&#xff0c;就是维护一个集合&#xff0c;支持插入复数、查询并删除模最大的复数。但…

作者头像 李华