Docs

通道参考

按领域整理 Desktop IPC 的方法、事件与传输方式。

业务代码看到的是 DesktopBridge 方法;真正的 channel 名称只在 Preload 和 Main 之间使用。当前命名遵循 <domain>:<action>,例如 cache:get、config:update-host、desktop-lyric:command。

请求与命令

领域Contract 方法典型 channel / 传输语义
BridgegetBridgeInfobridge:get-info / invoke获取能力与版本
BackendgetBackendStatus、onBackendStatusChangedbackend:get-status、backend:status-changed查询和订阅内置后端状态
App / WindowexitApp、relaunchApp、minimizeApp、sendAppCloseAction、enterFullScreen、exitFullScreen、getHostnamesend、app:get-hostname / invoke执行窗口和应用命令,读取当前主机名
NavigationnavigateTo、onNavigatenavigate-main-window、navigate-to主窗口导航与反向通知
Media controlssetPlayerPlaying、onControlAudioplayer-state-changed、control-audio / send + on同步播放状态和系统媒体按键
ConfiggetHostConfig、updateHostConfig、selectDirectoryconfig:*、dialog:select-directory / invoke读取和保存宿主配置
AuthopenLoginWindow、loginSuccess、setCookie;getMusicCookie 仅供旧版迁移send、set-music-cookie、get-music-cookie登录窗口、CookieJar 导入与旧凭据兼容
Cacheget*、set*、delete*、clear*、get*Statscache:* / invoke页面、播放和分类缓存
UpdatesgetUpdateStatus、checkForUpdates、downloadUpdate、quitAndInstallUpdateupdater:*更新生命周期
LogswriteLog、getLogDirectory、openCurrentLog、openLogDirectorylogger:* / invokeRenderer 日志和日志目录
LyricsopenDesktopLyric、closeDesktopLyric、toggleDesktopLyric、sendDesktopLyricCommanddesktop-lyric:*桌面歌词控制与命令
Dynamic islandtoggleDynamicIsland、updateDynamicIslandPreferences、sendDynamicIslandCommand、onDynamicIslandModeChangeddynamic-island:*灵动岛窗口、拖拽吸附与命中区域
Taskbar lyrictoggleTaskbarLyric、updateTaskbarLyricPreferences、sendTaskbarLyricCommand、onTaskbarLyricLayoutChangedtaskbar-lyric:*任务栏嵌入、布局推送与内容宽度
Playback wallpapergetDesktopPlaybackWallpaperModel、updateDesktopPlaybackWallpaperPreferences、retryDesktopPlaybackWallpaperdesktop-playback-wallpaper:*播放背景状态和配置
Playback controllershowDesktopPlaybackController、closeDesktopPlaybackController、setDesktopPlaybackControllerLayoutdesktop-playback-controller:*播放控制器窗口
IconsgetDesktopIconVisibility、setDesktopIconVisibilitydesktop-icons:*桌面图标可见性
DiscordgetDiscordPresenceStatus、testDiscordPresenceConnection、publishDiscordPresenceSnapshotdiscord-presence:*Presence 状态与发布
Video exportgetVideoExportCaptureSource、prepareVideoExportWindow、selectVideoExportFile、writeVideoExportFilevideo-export:* / invoke捕获、选择路径与写文件
Audio feature transportconnectAudioFeatureTransport、publishAudioFeatureFrameaudio-feature-transport:connect / MessagePort高频音频特征帧
Playback transportconnectPlaybackTransport、sendPlaybackTransportPayloadplayback-transport:connect / MessagePort播放状态、歌词和跨窗口传输

事件订阅

以下 on* 方法都返回 Unsubscribe:

  • onBackendStatusChanged
  • onUpdateStatusChanged
  • onFullScreenChanged
  • onNavigate
  • onControlAudio
  • onDesktopLyricCommand
  • onDesktopPlaybackWallpaperModelChanged
  • onDiscordPresenceStatusChanged

Preload 会接收 Electron event,但只把业务 payload 传给回调。Renderer 不应保存或使用 event 对象,也不应自行调用 ipcRenderer.removeListener。

高频传输

音频特征和播放传输不是普通的“一次调用一个结果”:

connect(role, connectionId, onPayload, onClose)
        ↓
MessageChannel / MessagePort
        ↓
publish(frame) 或 send(payload)
        ↓
返回 boolean,表示当前端口是否成功接收

这类通道需要处理关闭、错误和重连;不要把高频帧放进 ipcRenderer.invoke 的循环中。

Channel 命名约束

  • channel 使用小写领域名和 kebab-case 动作,例如 desktop-lyric:get-preferences。
  • 查询/变更使用 invoke,无返回命令使用 send,连续数据使用 MessagePort。
  • 状态推送使用 :<status-changed> 或 :<model-changed> 后缀。
  • 新增 channel 必须同时更新 Contract、Preload、Main handler、Electron adapter、Browser fallback 和本页索引。

本页内容