diff --git a/apps/stage-tamagotchi/package.json b/apps/stage-tamagotchi/package.json index c2ef325da..9263a3988 100644 --- a/apps/stage-tamagotchi/package.json +++ b/apps/stage-tamagotchi/package.json @@ -76,6 +76,7 @@ "dompurify": "^3.3.0", "drizzle-kit": "^0.31.7", "drizzle-orm": "^0.44.7", + "electron-audio-loopback": "^1.0.6", "electron-click-drag-plugin": "^2.0.2", "es-toolkit": "^1.41.0", "h3": "2.0.1-rc.5", diff --git a/apps/stage-tamagotchi/src/main/index.ts b/apps/stage-tamagotchi/src/main/index.ts index f299f748a..2e09daa47 100644 --- a/apps/stage-tamagotchi/src/main/index.ts +++ b/apps/stage-tamagotchi/src/main/index.ts @@ -7,6 +7,7 @@ import { env, platform } from 'node:process' import { electronApp, is, optimizer } from '@electron-toolkit/utils' import { Format, LogLevel, setGlobalFormat, setGlobalLogLevel, useLogg } from '@guiiai/logg' import { app, ipcMain, Menu, nativeImage, Tray } from 'electron' +import { initMain as initAudioLoopback } from 'electron-audio-loopback' import { noop, once } from 'es-toolkit' import { createLoggLogger, injeca } from 'injeca' import { isLinux, isMacOS } from 'std-env' @@ -69,6 +70,8 @@ if (isLinux) { app.dock?.setIcon(icon) electronApp.setAppUserModelId('ai.moeru.airi') +initAudioLoopback() + function setupTray(params: { mainWindow: BrowserWindow settingsWindow: () => Promise diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d9fb250da..dd124fd1f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -398,6 +398,9 @@ importers: drizzle-orm: specifier: ^0.44.7 version: 0.44.7(@opentelemetry/api@1.9.0)(@types/pg@8.15.6)(gel@2.0.0)(pg@8.16.3)(postgres@3.4.7) + electron-audio-loopback: + specifier: ^1.0.6 + version: 1.0.6(electron@39.1.0) electron-click-drag-plugin: specifier: ^2.0.2 version: 2.0.2 @@ -1334,6 +1337,9 @@ importers: '@electron-toolkit/preload': specifier: ^3.0.2 version: 3.0.2(electron@39.1.0) + '@nekopaw/tempora': + specifier: 0.3.1-alpha.1 + version: 0.3.1-alpha.1 packages/stage-ui: dependencies: @@ -9730,6 +9736,11 @@ packages: engines: {node: '>=0.10.0'} hasBin: true + electron-audio-loopback@1.0.6: + resolution: {integrity: sha512-QW0ogDqMpWHDAQHmQyssJ+Yh4qR3kWCP3Q4H9WuIXKwVlgkqOYGyt0v/JzbK3tBNTwfqbuHZy86kwCCajxqAdg==} + peerDependencies: + electron: '>=31.0.1' + electron-builder-squirrel-windows@25.1.8: resolution: {integrity: sha512-2ntkJ+9+0GFP6nAISiMabKt6eqBB0kX1QqHNWFWAXgi0VULKGisM46luRFpIBiU3u/TDmhZMM8tzvo2Abn3ayg==} @@ -25476,6 +25487,10 @@ snapshots: dependencies: jake: 10.9.4 + electron-audio-loopback@1.0.6(electron@39.1.0): + dependencies: + electron: 39.1.0 + electron-builder-squirrel-windows@25.1.8(dmg-builder@26.0.20): dependencies: app-builder-lib: 25.1.8(dmg-builder@26.0.20)(electron-builder-squirrel-windows@25.1.8)