应用图标
打包后的应用图标是 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
├── src/main.rs
└── quickgui.config.tsCLI 会为 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({
language: "rust",
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 上显示不同的图像:
let icon = Image::open(
cx.app_paths()
.unwrap()
.resource_dir()
.join("icon.png"),
)
.expect("icon");
cx.open_window(WindowOptions::new("My App").icon(icon), App);窗口存在后,cx.set_window_icon(icon) 和 cx.clear_window_icon() 会更新该图像。在 macOS 上,窗口没有自己的图标。使用 cx.set_dock_icon(icon) 替换此进程的程序坞图像。
菜单栏和通知区图标是另一张图。见托盘图标。
#生成的尺寸
| Target | Sizes |
|---|---|
macOS .icns | 32, 64, 128, 256, 512, 1024 |
Windows .ico | 16, 24, 32, 48, 64, 128, 256 |
Linux hicolor | 16, 32, 48, 64, 128, 256, 512 |
表中的每种尺寸都会从源 PNG 生成。源图必须是正方形,至少 256×256,最多 16 MiB。
