From c0f3f786059c88c91c337442c4b7e98b1940c482 Mon Sep 17 00:00:00 2001 From: Boof2015 <75185879+Boof2015@users.noreply.github.com> Date: Wed, 22 Apr 2026 04:29:22 -0400 Subject: [PATCH] add icon --- package.json | 10 +- resources/Prism logo.svg | 1 + resources/icon.icns | Bin 0 -> 137244 bytes resources/icon.ico | Bin 0 -> 24052 bytes resources/icon.png | Bin 0 -> 24105 bytes scripts/build/generate-prism-icons.mjs | 337 +++++++++++++++++++++++++ src/main/index.ts | 41 ++- src/renderer/components/PrismLogo.tsx | 26 ++ src/renderer/components/Toolbar.tsx | 26 +- src/renderer/styles/globals.css | 140 ++++++++-- test/renderer-helpers.test.ts | 42 +++ 11 files changed, 597 insertions(+), 26 deletions(-) create mode 100644 resources/Prism logo.svg create mode 100644 resources/icon.icns create mode 100644 resources/icon.ico create mode 100644 resources/icon.png create mode 100644 scripts/build/generate-prism-icons.mjs create mode 100644 src/renderer/components/PrismLogo.tsx diff --git a/package.json b/package.json index ed0116b..b62ad23 100644 --- a/package.json +++ b/package.json @@ -9,6 +9,7 @@ "build": "electron-vite build && node ./scripts/build/writeAppBuildMetadata.cjs", "preview": "electron-vite preview", "typecheck": "tsc --noEmit", + "build:icons": "node scripts/build/generate-prism-icons.mjs", "test:audio-router": "node scripts/run-audio-router-tests.mjs", "test:audio-store": "node scripts/run-audio-store-tests.mjs", "test:astra": "node scripts/run-astra-integration-tests.mjs", @@ -85,10 +86,15 @@ "from": "native/build/Release/", "to": "native/", "filter": ["*.node"] + }, + { + "from": "resources/icon.png", + "to": "icon.png" } ], "mac": { "target": ["dmg", "zip"], + "icon": "resources/icon.icns", "category": "public.app-category.music", "hardenedRuntime": true, "entitlements": "resources/entitlements.mac.plist", @@ -98,10 +104,12 @@ "target": [ { "target": "nsis", "arch": ["x64"] }, { "target": "portable", "arch": ["x64"] } - ] + ], + "icon": "resources/icon.ico" }, "linux": { "target": ["AppImage", "deb"], + "icon": "resources/icon.png", "category": "Audio" } } diff --git a/resources/Prism logo.svg b/resources/Prism logo.svg new file mode 100644 index 0000000..72416c1 --- /dev/null +++ b/resources/Prism logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/resources/icon.icns b/resources/icon.icns new file mode 100644 index 0000000000000000000000000000000000000000..9c134c53bf34567100f9e6ddbc8d5baabc0069a6 GIT binary patch literal 137244 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

#xsM4`gb{!(AWxK&M$a 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

Lu_n48$-0 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 NLH`74KmL55{D1ZFZcG3G literal 0 HcmV?d00001 diff --git a/resources/icon.ico b/resources/icon.ico new file mode 100644 index 0000000000000000000000000000000000000000..bafc1868e0b873f006719dfe8a07e91ca7330b8e GIT binary patch literal 24052 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 CfP-@Y literal 0 HcmV?d00001 diff --git a/resources/icon.png b/resources/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c5ee3875e0ae64600b2804b37af3e64e54c35d93 GIT binary patch literal 24105 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 RzFY-q@O1TaS?83{1OR9|?34fi literal 0 HcmV?d00001 diff --git a/scripts/build/generate-prism-icons.mjs b/scripts/build/generate-prism-icons.mjs new file mode 100644 index 0000000..07e34fe --- /dev/null +++ b/scripts/build/generate-prism-icons.mjs @@ -0,0 +1,337 @@ +import { execFileSync } from 'node:child_process' +import { + copyFileSync, + existsSync, + mkdirSync, + mkdtempSync, + readFileSync, + rmSync, + writeFileSync, +} from 'node:fs' +import { tmpdir } from 'node:os' +import { dirname, join, resolve } from 'node:path' +import { fileURLToPath } from 'node:url' +import { deflateSync, inflateSync } from 'node:zlib' + +const scriptDir = dirname(fileURLToPath(import.meta.url)) +const repoRoot = resolve(scriptDir, '../..') +const resourcesDir = join(repoRoot, 'resources') +const tempDir = mkdtempSync(join(tmpdir(), 'prism-icons-')) +const pngSignature = Buffer.from([137, 80, 78, 71, 13, 10, 26, 10]) +const iconBackground = { r: 5, g: 7, b: 10 } +const iconCanvasSize = 1024 +const iconBackgroundInsetRatio = 64 / 1024 +const iconCornerRadiusRatio = 0.22 +const iconSymbolScale = 2.12 +const prismLogoCenter = { x: 337.5, y: 270 } + +const lowerPath = 'M429.005,240.019c1.742,-1.006 3.718,-1.535 5.729,-1.535c5.527,0 17.412,0 26.401,0c6.328,0 11.459,5.13 11.459,11.459l0,47.969c0,4.094 -2.184,7.877 -5.729,9.923c-29.927,17.278 -167.716,96.831 -188.613,108.895c-1.742,1.006 -3.718,1.535 -5.729,1.535c-9.919,0 -41.456,0 -58.657,0c-6.328,-0 -11.459,-5.13 -11.459,-11.459c0,-9.188 0,-21.759 0,-29.346c-0,-4.094 2.184,-7.877 5.729,-9.923c32.974,-19.038 197.892,-114.253 220.869,-127.519Z' +const upperPath = 'M266.17,121.735c2.011,-0 3.987,0.529 5.729,1.535c17.748,10.247 119.001,68.705 140.796,81.288c2.558,1.477 4.133,4.206 4.133,7.159c0,0.256 0,0.511 0,0.762c0,2.094 -1.121,4.029 -2.938,5.07c-10.641,6.1 -47.292,27.109 -61.53,35.27c-3.541,2.03 -7.893,2.023 -11.428,-0.018c-23.117,-13.347 -109.643,-63.302 -132.798,-76.671c-3.545,-2.047 -5.729,-5.83 -5.729,-9.924c-0,-8.35 -0,-22.847 -0,-33.013c0,-6.328 5.13,-11.459 11.459,-11.459c15.744,0 43.157,0 52.305,0Z' + +function ensureCommand(command) { + try { + execFileSync('which', [command], { stdio: 'ignore' }) + } catch { + throw new Error(`Missing required command: ${command}`) + } +} + +function resizePng(sourcePath, outputPath, size) { + execFileSync('sips', ['-z', String(size), String(size), sourcePath, '--out', outputPath], { + stdio: 'ignore', + }) +} + +function makeCrc32Table() { + const table = new Uint32Array(256) + for (let i = 0; i < table.length; i += 1) { + let value = i + for (let bit = 0; bit < 8; bit += 1) { + value = (value & 1) !== 0 + ? 0xedb88320 ^ (value >>> 1) + : value >>> 1 + } + table[i] = value >>> 0 + } + return table +} + +const crc32Table = makeCrc32Table() + +function crc32(buffer) { + let crc = 0xffffffff + for (const byte of buffer) { + crc = crc32Table[(crc ^ byte) & 0xff] ^ (crc >>> 8) + } + return (crc ^ 0xffffffff) >>> 0 +} + +function readPngRgba(filePath) { + const buffer = readFileSync(filePath) + if (!buffer.subarray(0, pngSignature.length).equals(pngSignature)) { + throw new Error(`${filePath} is not a PNG file.`) + } + + let offset = pngSignature.length + let width = 0 + let height = 0 + let bitDepth = 0 + let colorType = 0 + const idatChunks = [] + + while (offset < buffer.length) { + const length = buffer.readUInt32BE(offset) + const type = buffer.toString('ascii', offset + 4, offset + 8) + const dataStart = offset + 8 + const dataEnd = dataStart + length + const data = buffer.subarray(dataStart, dataEnd) + + if (type === 'IHDR') { + width = data.readUInt32BE(0) + height = data.readUInt32BE(4) + bitDepth = data.readUInt8(8) + colorType = data.readUInt8(9) + } else if (type === 'IDAT') { + idatChunks.push(data) + } else if (type === 'IEND') { + break + } + + offset = dataEnd + 4 + } + + if (bitDepth !== 8 || colorType !== 6) { + throw new Error(`Unsupported PNG format in ${filePath}; expected 8-bit RGBA.`) + } + + const bytesPerPixel = 4 + const stride = width * bytesPerPixel + const inflated = inflateSync(Buffer.concat(idatChunks)) + const pixels = Buffer.alloc(width * height * bytesPerPixel) + let inputOffset = 0 + + for (let y = 0; y < height; y += 1) { + const filter = inflated[inputOffset] + inputOffset += 1 + const row = inflated.subarray(inputOffset, inputOffset + stride) + inputOffset += stride + const outputOffset = y * stride + const previousOffset = (y - 1) * stride + + for (let x = 0; x < stride; x += 1) { + const raw = row[x] + const left = x >= bytesPerPixel ? pixels[outputOffset + x - bytesPerPixel] : 0 + const up = y > 0 ? pixels[previousOffset + x] : 0 + const upLeft = y > 0 && x >= bytesPerPixel ? pixels[previousOffset + x - bytesPerPixel] : 0 + let value = raw + + if (filter === 1) { + value = raw + left + } else if (filter === 2) { + value = raw + up + } else if (filter === 3) { + value = raw + Math.floor((left + up) / 2) + } else if (filter === 4) { + const predictor = left + up - upLeft + const pa = Math.abs(predictor - left) + const pb = Math.abs(predictor - up) + const pc = Math.abs(predictor - upLeft) + const paeth = pa <= pb && pa <= pc ? left : pb <= pc ? up : upLeft + value = raw + paeth + } else if (filter !== 0) { + throw new Error(`Unsupported PNG filter ${filter} in ${filePath}.`) + } + + pixels[outputOffset + x] = value & 0xff + } + } + + return { width, height, pixels } +} + +function writePngRgba(filePath, width, height, pixels) { + const bytesPerPixel = 4 + const stride = width * bytesPerPixel + const raw = Buffer.alloc((stride + 1) * height) + + for (let y = 0; y < height; y += 1) { + const outputOffset = y * (stride + 1) + raw[outputOffset] = 0 + pixels.copy(raw, outputOffset + 1, y * stride, (y + 1) * stride) + } + + function chunk(type, data) { + const typeBuffer = Buffer.from(type, 'ascii') + const lengthBuffer = Buffer.alloc(4) + lengthBuffer.writeUInt32BE(data.length, 0) + const crcBuffer = Buffer.alloc(4) + crcBuffer.writeUInt32BE(crc32(Buffer.concat([typeBuffer, data])), 0) + return Buffer.concat([lengthBuffer, typeBuffer, data, crcBuffer]) + } + + const ihdr = Buffer.alloc(13) + ihdr.writeUInt32BE(width, 0) + ihdr.writeUInt32BE(height, 4) + ihdr.writeUInt8(8, 8) + ihdr.writeUInt8(6, 9) + ihdr.writeUInt8(0, 10) + ihdr.writeUInt8(0, 11) + ihdr.writeUInt8(0, 12) + + writeFileSync(filePath, Buffer.concat([ + pngSignature, + chunk('IHDR', ihdr), + chunk('IDAT', deflateSync(raw, { level: 9 })), + chunk('IEND', Buffer.alloc(0)), + ])) +} + +function roundedRectCoverage(x, y, width, height, radius) { + const clampedX = Math.max(radius, Math.min(width - radius, x)) + const clampedY = Math.max(radius, Math.min(height - radius, y)) + const dx = x - clampedX + const dy = y - clampedY + return dx * dx + dy * dy <= radius * radius ? 1 : 0 +} + +function antiAliasedRoundedRectCoverage(pixelX, pixelY, width, height, radius) { + const samplesPerAxis = 4 + let covered = 0 + + for (let sampleY = 0; sampleY < samplesPerAxis; sampleY += 1) { + for (let sampleX = 0; sampleX < samplesPerAxis; sampleX += 1) { + const x = pixelX + ((sampleX + 0.5) / samplesPerAxis) + const y = pixelY + ((sampleY + 0.5) / samplesPerAxis) + covered += roundedRectCoverage(x, y, width, height, radius) + } + } + + return covered / (samplesPerAxis * samplesPerAxis) +} + +function restoreIconBackgroundAlpha(filePath) { + const image = readPngRgba(filePath) + const { width, height, pixels } = image + const inset = Math.round(Math.min(width, height) * iconBackgroundInsetRatio) + const backgroundWidth = width - (inset * 2) + const backgroundHeight = height - (inset * 2) + const radius = Math.min(backgroundWidth, backgroundHeight) * iconCornerRadiusRatio + + for (let y = 0; y < height; y += 1) { + for (let x = 0; x < width; x += 1) { + const coverage = antiAliasedRoundedRectCoverage( + x - inset, + y - inset, + backgroundWidth, + backgroundHeight, + radius, + ) + if (coverage >= 1) continue + + const offset = ((y * width) + x) * 4 + const alpha = Math.round(coverage * 255) + pixels[offset] = iconBackground.r + pixels[offset + 1] = iconBackground.g + pixels[offset + 2] = iconBackground.b + pixels[offset + 3] = alpha + } + } + + writePngRgba(filePath, width, height, pixels) +} + +function writeIcoFile(outputPath, images) { + const headerLength = 6 + const entryLength = 16 + const directoryLength = headerLength + (images.length * entryLength) + const header = Buffer.alloc(directoryLength) + + header.writeUInt16LE(0, 0) + header.writeUInt16LE(1, 2) + header.writeUInt16LE(images.length, 4) + + let imageOffset = directoryLength + images.forEach(({ size, buffer }, index) => { + const offset = headerLength + (index * entryLength) + header.writeUInt8(size >= 256 ? 0 : size, offset) + header.writeUInt8(size >= 256 ? 0 : size, offset + 1) + header.writeUInt8(0, offset + 2) + header.writeUInt8(0, offset + 3) + header.writeUInt16LE(1, offset + 4) + header.writeUInt16LE(32, offset + 6) + header.writeUInt32LE(buffer.length, offset + 8) + header.writeUInt32LE(imageOffset, offset + 12) + imageOffset += buffer.length + }) + + writeFileSync(outputPath, Buffer.concat([header, ...images.map((image) => image.buffer)])) +} + +try { + ensureCommand('qlmanage') + ensureCommand('sips') + ensureCommand('iconutil') + + mkdirSync(resourcesDir, { recursive: true }) + + const sourceSvgPath = join(tempDir, 'prism-icon-source.svg') + const backgroundInset = iconCanvasSize * iconBackgroundInsetRatio + const backgroundSize = iconCanvasSize - (backgroundInset * 2) + const backgroundRadius = backgroundSize * iconCornerRadiusRatio + const symbolTranslateX = (iconCanvasSize / 2) - (prismLogoCenter.x * iconSymbolScale) + const symbolTranslateY = (iconCanvasSize / 2) - (prismLogoCenter.y * iconSymbolScale) + writeFileSync(sourceSvgPath, ` + + + + + + +`) + + execFileSync('qlmanage', ['-t', '-s', '1024', '-o', tempDir, sourceSvgPath], { + stdio: 'ignore', + }) + + const masterPngPath = `${sourceSvgPath}.png` + if (!existsSync(masterPngPath)) { + throw new Error('Quick Look did not create the source PNG.') + } + + const resourcePngPath = join(resourcesDir, 'icon.png') + copyFileSync(masterPngPath, resourcePngPath) + restoreIconBackgroundAlpha(resourcePngPath) + + const iconsetDir = join(tempDir, 'Prism.iconset') + mkdirSync(iconsetDir) + const iconsetEntries = [ + ['icon_16x16.png', 16], + ['icon_16x16@2x.png', 32], + ['icon_32x32.png', 32], + ['icon_32x32@2x.png', 64], + ['icon_128x128.png', 128], + ['icon_128x128@2x.png', 256], + ['icon_256x256.png', 256], + ['icon_256x256@2x.png', 512], + ['icon_512x512.png', 512], + ['icon_512x512@2x.png', 1024], + ] + + for (const [filename, size] of iconsetEntries) { + resizePng(resourcePngPath, join(iconsetDir, filename), size) + } + + execFileSync('iconutil', ['-c', 'icns', iconsetDir, '-o', join(resourcesDir, 'icon.icns')], { + stdio: 'ignore', + }) + + const icoImages = [] + for (const size of [16, 32, 48, 64, 128, 256]) { + const outputPath = join(tempDir, `icon-${size}.png`) + resizePng(resourcePngPath, outputPath, size) + icoImages.push({ size, buffer: readFileSync(outputPath) }) + } + writeIcoFile(join(resourcesDir, 'icon.ico'), icoImages) +} finally { + rmSync(tempDir, { recursive: true, force: true }) +} diff --git a/src/main/index.ts b/src/main/index.ts index 49b16fb..8192a7f 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -1,4 +1,4 @@ -import { app, BrowserWindow, dialog, ipcMain, Menu, nativeTheme, safeStorage, screen, session, shell } from 'electron' +import { app, BrowserWindow, dialog, ipcMain, Menu, nativeImage, nativeTheme, safeStorage, screen, session, shell } from 'electron' import type { BrowserWindowConstructorOptions, MenuItemConstructorOptions, OpenDialogOptions, WebContents } from 'electron' import { execFileSync } from 'child_process' import { existsSync, readFileSync } from 'fs' @@ -95,6 +95,7 @@ const NOW_PLAYING_CONFIG_DEFAULTS = { minHeight: 520, } +const STATIC_APP_ICON_FILENAME = 'icon.png' const MAIN_WINDOW_SYNC_SUPPRESSION_MS = 180 const MAIN_WINDOW_VISIBLE_GRAB_MARGIN = 64 const runtimeWindowCapabilities = resolveWindowCapabilities({ @@ -286,6 +287,39 @@ function getWindowStateStore(): FileBackedWindowStateStore { return windowStateStore } +function getStaticAppIconPath(): string | undefined { + const candidates = app.isPackaged + ? [join(process.resourcesPath, STATIC_APP_ICON_FILENAME)] + : [ + join(process.cwd(), 'resources', STATIC_APP_ICON_FILENAME), + join(__dirname, '../../resources', STATIC_APP_ICON_FILENAME), + ] + + return candidates.find((candidate) => existsSync(candidate)) +} + +function getStaticWindowIconOptions(): Pick { + if (process.platform === 'darwin') { + return {} + } + + const icon = getStaticAppIconPath() + return icon ? { icon } : {} +} + +function applyStaticDockIcon(): void { + if (process.platform !== 'darwin') { + return + } + + const iconPath = getStaticAppIconPath() + if (!iconPath) return + + const icon = nativeImage.createFromPath(iconPath) + if (icon.isEmpty()) return + app.dock?.setIcon(icon) +} + function broadcastNowPlayingState(state: NowPlayingState): void { for (const window of BrowserWindow.getAllWindows()) { if (window.isDestroyed() || window.webContents.isDestroyed()) continue @@ -895,6 +929,7 @@ async function showCustomDialog(options: DialogOptions): Promise { hasShadow: false, skipTaskbar: true, show: false, + ...getStaticWindowIconOptions(), webPreferences: { preload: join(__dirname, '../preload/index.js'), sandbox: false, @@ -936,6 +971,7 @@ function createMainWindow(): void { maximizable: true, fullscreenable: true, title: 'Prism', + ...getStaticWindowIconOptions(), webPreferences: { preload: join(__dirname, '../preload/index.js'), sandbox: false, @@ -1105,6 +1141,7 @@ function createScopePopoutWindow(kind: ScopeKind, rawBounds?: WindowBounds): Bro title: `Prism ${SCOPE_LABELS[kind]}`, alwaysOnTop: getWindowStateStore().getPopoutAlwaysOnTop(kind), show: false, + ...getStaticWindowIconOptions(), webPreferences: { preload: join(__dirname, '../preload/index.js'), sandbox: false, @@ -1271,6 +1308,7 @@ function createNowPlayingConfigWindow(): BrowserWindow { autoHideMenuBar: true, title: 'Prism Now Playing', show: false, + ...getStaticWindowIconOptions(), webPreferences: { preload: join(__dirname, '../preload/index.js'), sandbox: false, @@ -1827,6 +1865,7 @@ if (!hasSingleInstanceLock) { setupIPC() await getWindowStateStore().initialize() await syncNativeThemeAppearance() + applyStaticDockIcon() createMainWindow() queueProfileOpenPaths(extractProfilePathsFromArgv(process.argv)) void processPendingProfileOpenPaths() diff --git a/src/renderer/components/PrismLogo.tsx b/src/renderer/components/PrismLogo.tsx new file mode 100644 index 0000000..75af4b1 --- /dev/null +++ b/src/renderer/components/PrismLogo.tsx @@ -0,0 +1,26 @@ +import type { JSX } from 'react' + +interface PrismLogoProps { + className?: string +} + +export default function PrismLogo({ className }: PrismLogoProps): JSX.Element { + return ( + + ) +} diff --git a/src/renderer/components/Toolbar.tsx b/src/renderer/components/Toolbar.tsx index 026e964..d7a4c4c 100644 --- a/src/renderer/components/Toolbar.tsx +++ b/src/renderer/components/Toolbar.tsx @@ -4,6 +4,7 @@ import { useSettingsStore } from '../stores/settingsStore' import { useUpdateStore } from '../stores/updateStore' import { useUiStore } from '../stores/uiStore' import { getRendererWindowCapabilities } from '../windowCapabilities' +import PrismLogo from './PrismLogo' function SettingsIcon(): JSX.Element { return ( @@ -81,6 +82,7 @@ interface ToolbarProps { } const DEFAULT_PROFILE_ID = 'profile_default' +const PRISM_SUPPORT_URL = 'https://ko-fi.com/boof2015' const WAYLAND_REPOSITION_UNAVAILABLE_MESSAGE = 'Top/bottom repositioning is unavailable on native Wayland.' function isToolbarInteractiveTarget(target: EventTarget | null): boolean { @@ -409,6 +411,16 @@ export default function Toolbar({ onOpenSettings, settingsOpen }: ToolbarProps): void openReleasesPage() }, [openReleasesPage]) + const handleOpenSupport = useCallback(() => { + void window.electronAPI.openExternalUrl(PRISM_SUPPORT_URL).catch((error) => { + showBanner({ + tone: 'error', + message: getErrorMessage(error, 'Could not open Ko-fi.'), + actions: [], + }) + }) + }, [showBanner]) + const handleReposition = useCallback((position: 'top' | 'bottom') => { if (!supportsProgrammaticReposition) { return @@ -495,12 +507,18 @@ export default function Toolbar({ onOpenSettings, settingsOpen }: ToolbarProps): -

+ + + +