mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-22 18:08:04 +00:00
- playDeviceAudio 按 gui-prefs.deviceBridge.audio.device 用 aplay -D <dev> 播放 - 新增 audio:list IPC(aplay -L 枚举) + preload 暴露 audio.list - renderer 设备通道新增 speakeruse 声卡下拉, 保存到 prefs - 排除 hw: 裸设备(mono->stereo 需转换), 只留 default/pipewire/pulse/plughw - 修复 USB 声卡无声音: mono WAV 播到仅立体声设备失败, 改用 plughw 自动转换 已用 mock 网关 + 源码直跑验证: voice -> via plughw:CARD=Audio,DEV=0 播放成功
55 lines
1.8 KiB
JavaScript
55 lines
1.8 KiB
JavaScript
const { contextBridge, ipcRenderer } = require("electron");
|
|
|
|
contextBridge.exposeInMainWorld("homeagent", {
|
|
win: {
|
|
minimize: () => ipcRenderer.invoke("window:minimize"),
|
|
toggleMaximize: () => ipcRenderer.invoke("window:toggleMaximize"),
|
|
close: () => ipcRenderer.invoke("window:close"),
|
|
},
|
|
connections: {
|
|
list: () => ipcRenderer.invoke("connections:list"),
|
|
add: (conn) => ipcRenderer.invoke("connections:add", conn),
|
|
update: (id, updates) =>
|
|
ipcRenderer.invoke("connections:update", { id, updates }),
|
|
delete: (id) => ipcRenderer.invoke("connections:delete", id),
|
|
setCurrent: (id) => ipcRenderer.invoke("connections:setCurrent", id),
|
|
},
|
|
cli: {
|
|
request: (socketPath, apiKey, line) =>
|
|
ipcRenderer.invoke("cli:request", { socketPath, apiKey, line }),
|
|
},
|
|
webui: {
|
|
setAuth: (url, cookie, headers, username, password) =>
|
|
ipcRenderer.invoke("webui:setAuth", {
|
|
url,
|
|
cookie,
|
|
headers,
|
|
username,
|
|
password,
|
|
}),
|
|
openLogin: (url, username, password) =>
|
|
ipcRenderer.invoke("webui:openLogin", { url, username, password }),
|
|
onLoginResult: (cb) =>
|
|
ipcRenderer.on("webui:login-result", (_e, d) => cb(d)),
|
|
},
|
|
cacheBg: (src) => ipcRenderer.invoke("bg:cache", { src }),
|
|
log: (m) => ipcRenderer.invoke("log:r", m),
|
|
prefs: {
|
|
get: () => ipcRenderer.invoke("prefs:get"),
|
|
set: (p) => ipcRenderer.invoke("prefs:set", p),
|
|
},
|
|
device: {
|
|
identity: () => ipcRenderer.invoke("device:identity"),
|
|
},
|
|
deviceBridge: {
|
|
get: () => ipcRenderer.invoke("device-bridge:get"),
|
|
set: (cfg) => ipcRenderer.invoke("device-bridge:set", cfg),
|
|
},
|
|
displays: {
|
|
list: () => ipcRenderer.invoke("displays:list"),
|
|
},
|
|
audio: {
|
|
list: () => ipcRenderer.invoke("audio:list"),
|
|
},
|
|
});
|