跳到正文

应用图标

打包后的应用图标是 Finder、程序坞、Windows 任务栏、开始菜单和 Linux 桌面启动器显示的图像。把 PNG 放在 resources/icon.png。运行时也可以更换窗口图标或 macOS 程序坞图标。

#源图标

在 resources/icon.png 添加一张至少 256×256 像素的正方形 PNG。1024×1024 是合适的源图。quickgui build 会把它缩放到 macOS、Windows 和 Linux 需要的每种尺寸。

my-app/
├── resources/
│   └── icon.png
├── main.go
└── quickgui.config.ts

CLI 会为 macOS 写入 .icns,为 Windows 安装程序写入 .ico,并为 Linux 写入 Freedesktop hicolor 尺寸。开发模式的重载会跳过生成的容器;生产构建以及已配置的 macos.icon 仍会安装图标。

可选的 resources/icon.iconset/icon_<n>x<n>.png 会用手工绘制的文件替换对应尺寸。该文件夹只是构建输入,不会复制进打包后的应用。

只有当源 PNG 不在 resources/icon.png 时,才需要在 CLI 配置里设置 icon。

#平台专用图标

已经有平台容器时使用这些文件:

resources/icon.png
resources/icon.icns
resources/icon.ico

未设置 macos.icon 时使用 resources/icon.icns。未设置 windows.icon 时,NSIS 安装程序使用 resources/icon.ico。当 resources/icon.png 和 icon 都省略时,linux.icon 作为正方形 PNG 使用。

export default defineConfig({
  name: "My App",
  identifier: "com.example.my-app",
  entry: ".",
  macos: { icon: "packaging/AppIcon.icns" },
  windows: { icon: "packaging/AppIcon.ico" },
});

macos.icon 必须是 .icns。windows.icon 是 .ico。这些配置路径会覆盖 resources/ 中的文件。

文档类型图标是打包资源里的文件名。见打包资源。

#窗口与程序坞图标

打包图标是应用身份。窗口可以在 Windows 和 X11 上显示不同的图像:

native.NewWindow(native.WindowOptions{
	Title: "My App",
	Icon:  &native.ImageSource{Path: iconPath},
	Component: App,
})

iconPath 是绝对文件系统路径。按打包资源所示从 GetPaths 拼接。窗口存在后,调用 window.SetIcon(source) 或 window.ClearIcon()。

在 macOS 上,窗口没有自己的图标。使用 native.Desktop.SetDockIcon(&native.ImageSource{Path: iconPath}) 替换此进程的程序坞图像。传入 nil 可恢复捆绑图标。

菜单栏和通知区图标是另一张图。见托盘图标。

#生成的尺寸

TargetSizes
macOS .icns32, 64, 128, 256, 512, 1024
Windows .ico16, 24, 32, 48, 64, 128, 256
Linux hicolor16, 32, 48, 64, 128, 256, 512

表中的每种尺寸都会从源 PNG 生成。源图必须是正方形,至少 256×256,最多 16 MiB。