diff --git a/broadcast-client/src-tauri/tauri.conf.json b/broadcast-client/src-tauri/tauri.conf.json index 1e0c654..9337ac5 100644 --- a/broadcast-client/src-tauri/tauri.conf.json +++ b/broadcast-client/src-tauri/tauri.conf.json @@ -49,9 +49,7 @@ "icon": [ "icons/32x32.png", "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" + "icons/256x256.png" ] } } diff --git a/call-client/src-tauri/tauri.conf.json b/call-client/src-tauri/tauri.conf.json index 35427c6..d2671b5 100644 --- a/call-client/src-tauri/tauri.conf.json +++ b/call-client/src-tauri/tauri.conf.json @@ -55,9 +55,7 @@ "icon": [ "icons/32x32.png", "icons/128x128.png", - "icons/128x128@2x.png", - "icons/icon.icns", - "icons/icon.ico" + "icons/256x256.png" ] } } diff --git a/scripts/build-linux-deb-all.sh b/scripts/build-linux-deb-all.sh index e1ab2a1..a9ede4d 100644 --- a/scripts/build-linux-deb-all.sh +++ b/scripts/build-linux-deb-all.sh @@ -192,6 +192,58 @@ build_one_target() { (cd "$abs_project" && npm run "$npm_cmd") } +ensure_tauri_icons() { + local project_dir="$1" + local icons_dir="$REPO_ROOT/$project_dir/src-tauri/icons" + mkdir -p "$icons_dir" + + if [[ -f "$icons_dir/32x32.png" && -f "$icons_dir/128x128.png" && -f "$icons_dir/256x256.png" ]]; then + return 0 + fi + + echo "==> [$project_dir] 生成默认图标资源(32/128/256)" + python3 - "$icons_dir" "$project_dir" <<'PY' +import binascii +import os +import struct +import sys +import zlib + +icons_dir = sys.argv[1] +project_name = sys.argv[2] + +if "broadcast" in project_name: + color = (16, 185, 129) # green +else: + color = (37, 99, 235) # blue + +def png_chunk(tag: bytes, data: bytes) -> bytes: + return ( + struct.pack("!I", len(data)) + + tag + + data + + struct.pack("!I", binascii.crc32(tag + data) & 0xFFFFFFFF) + ) + +def write_png(path: str, size: int, rgb: tuple[int, int, int]) -> None: + row = bytes(rgb) * size + raw = b"".join(b"\x00" + row for _ in range(size)) + ihdr = struct.pack("!IIBBBBB", size, size, 8, 2, 0, 0, 0) + idat = zlib.compress(raw, 9) + png = ( + b"\x89PNG\r\n\x1a\n" + + png_chunk(b"IHDR", ihdr) + + png_chunk(b"IDAT", idat) + + png_chunk(b"IEND", b"") + ) + with open(path, "wb") as f: + f.write(png) + +for size in (32, 128, 256): + write_png(os.path.join(icons_dir, f"{size}x{size}.png"), size, color) +PY +} + collect_debs() { local project_dir="$1" local arch_label="$2" @@ -217,6 +269,7 @@ collect_debs() { build_project() { local project_dir="$1" + ensure_tauri_icons "$project_dir" if [[ "$BUILD_ARCH" == "all" || "$BUILD_ARCH" == "amd64" ]]; then echo "" echo "######## $project_dir: amd64 ########"