diff --git a/electron-builder.yml b/electron-builder.yml index e16ef30..5d41ee6 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -19,6 +19,7 @@ win: - target: nsis arch: - x64 + - ia32 # 简化版本信息设置,避免rcedit错误 fileAssociations: - ext: cerumusic @@ -30,7 +31,7 @@ win: # 或者使用证书存储 # certificateSubjectName: "Your Company Name" nsis: - artifactName: ${name}-${version}-setup.${ext} + artifactName: ${name}-${version}-${arch}-setup.${ext} shortcutName: ${productName} uninstallDisplayName: ${productName} createDesktopShortcut: always diff --git a/package.json b/package.json index 10e096c..28d3fd5 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ceru-music", - "version": "1.2.4", + "version": "1.2.5", "description": "一款简洁优雅的音乐播放器", "main": "./out/main/index.js", "author": "sqj,wldss,star", @@ -18,7 +18,8 @@ "onlybuild": "electron-vite build && electron-builder --win --x64", "postinstall": "electron-builder install-app-deps", "build:unpack": "yarn run build && electron-builder --dir", - "build:win": "yarn run build && electron-builder --win --x64 --config --publish never", + "build:win": "yarn run build && electron-builder --win --config --publish never", + "build:win32": "yarn run build && electron-builder --win --ia32 --config --publish never", "build:mac": "yarn run build && electron-builder --mac --config --publish never", "build:linux": "yarn run build && electron-builder --linux --config --publish never", "build:deps": "electron-builder install-app-deps && yarn run build && electron-builder --win --x64 --config", diff --git a/resources/default-cover.png b/resources/default-cover.png new file mode 100644 index 0000000..e971306 Binary files /dev/null and b/resources/default-cover.png differ diff --git a/src/main/index.ts b/src/main/index.ts index ff8d70f..1e8e246 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -8,6 +8,24 @@ import pluginService from './services/plugin' import aiEvents from './events/ai' import './services/musicSdk/index' +// 获取单实例锁 +const gotTheLock = app.requestSingleInstanceLock() + +if (!gotTheLock) { + // 如果没有获得锁,说明已经有实例在运行,退出当前实例 + app.quit() +} else { + // 当第二个实例尝试启动时,聚焦到第一个实例的窗口 + app.on('second-instance', () => { + // 如果有窗口存在,聚焦到该窗口 + if (mainWindow) { + if (mainWindow.isMinimized()) mainWindow.restore() + if (!mainWindow.isVisible()) mainWindow.show() + mainWindow.focus() + } + }) +} + // import wy from './utils/musicSdk/wy/index' // import kg from './utils/musicSdk/kg/index' // wy.hotSearch.getList().then((res) => { diff --git a/src/renderer/public/default-cover.png b/src/renderer/public/default-cover.png new file mode 100644 index 0000000..e971306 Binary files /dev/null and b/src/renderer/public/default-cover.png differ diff --git a/src/renderer/src/assets/logo.png b/src/renderer/src/assets/logo.png new file mode 100644 index 0000000..251a0e3 Binary files /dev/null and b/src/renderer/src/assets/logo.png differ diff --git a/src/renderer/src/components/Play/FullPlay.vue b/src/renderer/src/components/Play/FullPlay.vue index d8ee283..b5f875f 100644 --- a/src/renderer/src/components/Play/FullPlay.vue +++ b/src/renderer/src/components/Play/FullPlay.vue @@ -503,15 +503,17 @@ const handleLowFreqUpdate = (volume: number) => { &::after { content: ''; position: absolute; - top: 10%; - left: 10%; - width: 30%; - height: 30%; + top: 0; + left: 0; + width: 100%; + height: 100%; background: radial-gradient(ellipse at 30% 30%, - rgba(255, 255, 255, 0.15) 0%, - rgba(255, 255, 255, 0.05) 40%, - transparent 70% + rgba(255, 255, 255, 0.08) 0%, + rgba(255, 255, 255, 0.04) 25%, + rgba(255, 255, 255, 0.02) 50%, + rgba(255, 255, 255, 0.01) 75%, + transparent 100% ); border-radius: 50%; z-index: 2; diff --git a/src/renderer/src/components/Play/PlayMusic.vue b/src/renderer/src/components/Play/PlayMusic.vue index 0438bc5..29adc5f 100644 --- a/src/renderer/src/components/Play/PlayMusic.vue +++ b/src/renderer/src/components/Play/PlayMusic.vue @@ -25,6 +25,7 @@ import { destroyPlaylistEventListeners, getSongRealUrl } from '@renderer/utils/playlistManager' +import defaultCoverImg from '/default-cover.png' const controlAudio = ControlAudioStore() const localUserStore = LocalUserDetailStore() @@ -702,22 +703,31 @@ async function setColor() { playbg.value = 'rgba(255,255,255,0.2)' playbghover.value = 'rgba(255,255,255,0.33)' } +const bg = ref('#ffffff46') + watch( songInfo, async (newVal) => { + bg.value = bg.value==='#ffffff'?'#ffffff46':toRaw(bg.value) if (newVal.img) { await setColor() + } else if(songInfo.value.songmid) { + songInfo.value.img = defaultCoverImg + await setColor() + }else{ + bg.value='#ffffff' } + }, { deep: true, immediate: true } ) -const bg = ref('#ffffff46') -watch(showFullPlay,(val)=>{ - if(val){ + +watch(showFullPlay, (val) => { + if (val) { console.log('背景hei') - bg.value = '#00000000' - }else{ + bg.value = '#00000020' + } else { bg.value = '#ffffff46' } }) @@ -739,8 +749,9 @@ watch(showFullPlay,(val)=>{