Jellium Desktop插件开发入门:创建你的第一个扩展 Jellium Desktop插件开发入门创建你的第一个扩展【免费下载链接】jellium-desktopAn unofficial desktop client for Jellyfin项目地址: https://gitcode.com/GitHub_Trending/je/jellium-desktopJellium Desktop是一款非官方的Jellyfin桌面客户端通过插件系统可以轻松扩展其功能。本文将带你快速掌握插件开发的核心概念和步骤从零开始创建你的第一个Jellium Desktop扩展。插件系统核心架构Jellium Desktop的插件系统基于JavaScript注入机制实现通过injection模块管理不同类型的浏览器上下文web、overlay、about所需的脚本和原生函数。核心代码定义在src/jfn_cef/src/injection.rs中主要包含以下组件NativeFunction定义原生功能接口如播放控制、窗口管理等InjectedScript管理注入到浏览器的JavaScript文件ExtraInfo封装插件所需的资源和配置信息Jellium Desktop插件系统架构示意图开发环境准备开始插件开发前需要准备以下环境克隆项目代码git clone https://gitcode.com/GitHub_Trending/je/jellium-desktop cd jellium-desktop安装依赖项目使用Rust和JavaScript混合开发需安装对应工具链Rust开发环境推荐使用rustupNode.js用于JavaScript部分开发了解项目结构插件相关文件主要位于src/jfn_cef/src/injection.rs插件系统核心逻辑src/web/前端资源和插件脚本src/jfn_cef/src/resource.rs资源嵌入配置创建基础插件下面我们创建一个简单的播放控制增强插件实现自定义播放速率功能。1. 创建JavaScript插件文件在src/web/目录下创建custom-playback-control.js// 自定义播放控制插件 class CustomPlaybackControl { constructor() { this.init(); } init() { // 注册原生API事件监听 nativeShim.on(notifyPlaybackState, (state) { this.updatePlaybackRateControls(state); }); // 添加自定义控制按钮 this.addRateControlButtons(); } addRateControlButtons() { // 创建播放速率控制按钮 const controls document.createElement(div); controls.className custom-playback-controls; controls.innerHTML button>// 在embedded!宏中添加新的JS文件 embedded!( // ... 现有内容 ... custom_playback_control.js, application/javascript );3. 配置注入规则修改src/jfn_cef/src/injection.rs将插件脚本添加到Web上下文// 在WEB_SCRIPTS常量中添加新脚本 const WEB_SCRIPTS: [InjectedScript] [ // ... 现有内容 ... InjectedScript::CustomPlaybackControl, ]; // 添加InjectedScript枚举值 #[derive(Clone, Copy, Debug, Eq, PartialEq)] pub(crate) enum InjectedScript { // ... 现有内容 ... CustomPlaybackControl, } // 实现file_name方法 impl InjectedScript { pub(crate) fn file_name(self) - static str { match self { // ... 现有内容 ... Self::CustomPlaybackControl custom-playback-control.js, } } }测试与调试本地测试插件使用just命令构建并运行项目just run验证插件功能打开Jellium Desktop并播放媒体检查播放器控制栏是否显示自定义速率按钮点击按钮测试播放速率调整功能调试技巧JavaScript调试使用Chrome开发者工具通过--remote-debugging-port9222启动Rust日志查看控制台输出的日志信息源码引用参考现有插件实现如src/web/input-plugin.js和src/web/mpv-player-base.js插件发布与分享当你的插件开发完成并测试通过后可以通过以下方式分享提交PR如果你的插件对所有用户都有用可以提交PR将其合并到主项目创建独立仓库作为独立插件发布提供安装说明社区分享在Jellyfin社区论坛或相关讨论组分享你的插件高级开发指南原生API调用Jellium Desktop提供了丰富的原生API可在插件中通过nativeShim.call()调用常用功能包括播放控制playerPlay、playerPause、playerSeek等窗口管理windowMinimize、windowToggleMaximize等系统操作openConfigDir、appExit等完整API列表可在src/jfn_cef/src/injection.rs的NativeFunction枚举中查看。样式定制通过CSS自定义界面样式创建插件专属样式文件/* custom-playback-control.css */ .custom-playback-controls { display: flex; gap: 8px; margin: 0 10px; } .custom-playback-controls button { background: rgba(0,0,0,0.5); color: white; border: none; border-radius: 4px; padding: 4px 8px; cursor: pointer; } .custom-playback-controls button:hover { background: rgba(255,255,255,0.2); }总结通过本文的指南你已经了解了Jellium Desktop插件开发的基本流程和核心概念。从创建简单的功能增强插件开始逐步探索更复杂的扩展可能性。Jellium Desktop的插件系统为开发者提供了灵活的扩展机制期待你创造出更多有用的插件插件开发过程中如有疑问可以参考项目源码中的现有插件实现或参与社区讨论获取帮助。【免费下载链接】jellium-desktopAn unofficial desktop client for Jellyfin项目地址: https://gitcode.com/GitHub_Trending/je/jellium-desktop创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考