diff --git a/apps/electron/build/icons/128x128.png b/apps/electron/build/icons/128x128.png new file mode 100644 index 0000000..425ffb4 Binary files /dev/null and b/apps/electron/build/icons/128x128.png differ diff --git a/apps/electron/build/icons/128x128@2x.png b/apps/electron/build/icons/128x128@2x.png new file mode 100644 index 0000000..9fe4117 Binary files /dev/null and b/apps/electron/build/icons/128x128@2x.png differ diff --git a/apps/electron/build/icons/32x32.png b/apps/electron/build/icons/32x32.png new file mode 100644 index 0000000..3c9a880 Binary files /dev/null and b/apps/electron/build/icons/32x32.png differ diff --git a/apps/electron/build/icons/64x64.png b/apps/electron/build/icons/64x64.png new file mode 100644 index 0000000..0f9e690 Binary files /dev/null and b/apps/electron/build/icons/64x64.png differ diff --git a/apps/electron/build/icons/icon.icns b/apps/electron/build/icons/icon.icns new file mode 100644 index 0000000..7ea0993 Binary files /dev/null and b/apps/electron/build/icons/icon.icns differ diff --git a/apps/electron/build/icons/icon.ico b/apps/electron/build/icons/icon.ico new file mode 100644 index 0000000..fc67bfb Binary files /dev/null and b/apps/electron/build/icons/icon.ico differ diff --git a/apps/electron/build/icons/icon.png b/apps/electron/build/icons/icon.png new file mode 100644 index 0000000..8e56359 Binary files /dev/null and b/apps/electron/build/icons/icon.png differ diff --git a/apps/electron/package.json b/apps/electron/package.json index 590d97c..accc2d8 100644 --- a/apps/electron/package.json +++ b/apps/electron/package.json @@ -41,6 +41,7 @@ "productName": "Tensamin", "executableName": "tensamin", "artifactName": "Tensamin-${version}-${os}-${arch}.${ext}", + "icon": "build/icons/icon.png", "directories": { "output": "release" }, @@ -52,10 +53,15 @@ { "from": "../web/dist", "to": "web" + }, + { + "from": "build/icons/icon.png", + "to": "icons/icon.png" } ], "linux": { "target": ["AppImage", "deb", "rpm"], + "icon": "build/icons", "executableName": "tensamin", "category": "Network", "maintainer": "Methanium", @@ -67,10 +73,12 @@ } }, "win": { - "target": ["nsis", "portable"] + "target": ["nsis", "portable"], + "icon": "build/icons/icon.ico" }, "mac": { - "target": ["dmg"] + "target": ["dmg"], + "icon": "build/icons/icon.icns" }, "publish": null } diff --git a/apps/electron/src/main/main.ts b/apps/electron/src/main/main.ts index a028573..c4ee840 100644 --- a/apps/electron/src/main/main.ts +++ b/apps/electron/src/main/main.ts @@ -34,6 +34,12 @@ function getRendererIndex() { return join(process.resourcesPath, "web", "index.html"); } +function getWindowIcon() { + if (process.platform === "darwin") return undefined; + if (app.isPackaged) return join(process.resourcesPath, "icons", "icon.png"); + return resolve(__dirname, "../../build/icons/icon.png"); +} + function getPlatform(): DesktopScreenShareCapabilities["platform"] { if (process.platform === "linux") return "linux"; if (process.platform === "darwin") return "macos"; @@ -191,6 +197,7 @@ async function createWindow() { minWidth: 900, minHeight: 600, title: "Tensamin", + icon: getWindowIcon(), frame: false, autoHideMenuBar: true, webPreferences: { diff --git a/apps/tauri/package.json b/apps/tauri/package.json index 77ba3ea..91c18bd 100644 --- a/apps/tauri/package.json +++ b/apps/tauri/package.json @@ -22,7 +22,7 @@ "build:mobile:raw": "tauri android build", "dev:mobile": "if command -v nix >/dev/null 2>&1; then nix develop --command bun dev:mobile:raw; else bun dev:mobile:raw; fi", "build:mobile": "bun run render-version.ts && if command -v nix >/dev/null 2>&1; then nix develop --command bun build:mobile:raw; else bun build:mobile:raw; fi && bun run render-version.ts --unrender", - "gen-icons": "tauri icon ./logo.json", + "gen-icons": "tauri icon ./logo.json && bun scripts/sync-electron-icons.ts", "format": "bunx prettier --write .", "lint": "eslint src" }, diff --git a/apps/tauri/scripts/sync-electron-icons.ts b/apps/tauri/scripts/sync-electron-icons.ts new file mode 100644 index 0000000..db5cc76 --- /dev/null +++ b/apps/tauri/scripts/sync-electron-icons.ts @@ -0,0 +1,19 @@ +import { copyFile, mkdir } from "node:fs/promises"; +import { dirname, join, resolve } from "node:path"; +import { fileURLToPath } from "node:url"; + +const scriptDir = dirname(fileURLToPath(import.meta.url)); +const tauriDir = resolve(scriptDir, ".."); +const clientDir = resolve(tauriDir, "../.."); +const tauriIconsDir = join(tauriDir, "src-tauri", "icons"); +const electronIconsDir = join(clientDir, "apps", "electron", "build", "icons"); + +const desktopIcons = ["32x32.png", "64x64.png", "128x128.png", "128x128@2x.png", "icon.png", "icon.ico", "icon.icns"]; + +await mkdir(electronIconsDir, { recursive: true }); + +await Promise.all( + desktopIcons.map((icon) => copyFile(join(tauriIconsDir, icon), join(electronIconsDir, icon))), +); + +console.log(`Synced ${desktopIcons.length} desktop icons to ${electronIconsDir}`); diff --git a/apps/tauri/src-tauri/icons/icon.icns b/apps/tauri/src-tauri/icons/icon.icns index daf2362..7ea0993 100644 Binary files a/apps/tauri/src-tauri/icons/icon.icns and b/apps/tauri/src-tauri/icons/icon.icns differ diff --git a/flake.nix b/flake.nix index f847bd6..3773515 100644 --- a/flake.nix +++ b/flake.nix @@ -6,8 +6,8 @@ outputs = {nixpkgs, ...}: let systems = ["x86_64-linux"]; forAllSystems = nixpkgs.lib.genAttrs systems; - version = "0.0.5"; - x86_64DebHash = "sha256-flC62rhhKyE/yRoNZRwXVHn/vwxE/Klxzj8uWhItDkY="; + version = "0.0.6"; + x86_64DebHash = "sha256-rNlyNZFgYVRvJzX1sBz/qLHUdZoyfvHl5xuwb2BtU48="; forgejoBaseUrl = "https://git.methanium.net/tensamin/client/releases/download/${version}"; in { packages = forAllSystems (system: let diff --git a/package.json b/package.json index 2b634e3..0c0e2b1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "tensamin", - "version": "0.0.6", + "version": "0.0.7", "private": true, "workspaces": [ "packages/*",