3.8 KiB · text History b9e9582
[package]
name = "icon-studio"
version = "0.1.0"
edition = "2021"
description = "Application icon designer for the Casabeza and neiam palettes"
authors = ["Gabe <gabe@neiam.org>"]
license = "GPL-3.0-or-later"

# Packaging. Both tools read the release binary out of target/release, so
# `cargo build --release` has to have run first — `cargo deb --no-build`
# and `cargo generate-rpm` only assemble.
#
# This is a GUI application, so unlike markprompter it also installs a
# .desktop entry and hicolor icons; without them it would install and
# then be invisible in every application menu. The icon is generated by
# the studio itself from presets/icon-studio.toml.
[package.metadata.deb]
name = "neiam-icon-studio"
section = "graphics"
# rfd reaches the file-chooser portal through libdbus, which it dlopens
# at runtime rather than links, so dpkg-shlibdeps cannot see it.
depends = "$auto, libdbus-1-3"
assets = [
    # target/release is special: cargo-deb rewrites it to the real
    # target directory.
    ["target/release/icon-studio", "usr/bin/", "755"],
    ["icon-studio.desktop", "usr/share/applications/", "644"],
    ["assets/icons/icon-studio-48.png", "usr/share/icons/hicolor/48x48/apps/icon-studio.png", "644"],
    ["assets/icons/icon-studio-64.png", "usr/share/icons/hicolor/64x64/apps/icon-studio.png", "644"],
    ["assets/icons/icon-studio-128.png", "usr/share/icons/hicolor/128x128/apps/icon-studio.png", "644"],
    ["assets/icons/icon-studio-256.png", "usr/share/icons/hicolor/256x256/apps/icon-studio.png", "644"],
    ["README.md", "usr/share/doc/neiam-icon-studio/README.md", "644"],
    ["presets/*.toml", "usr/share/neiam-icon-studio/presets/", "644"],
]

[package.metadata.generate-rpm]
name = "neiam-icon-studio"
assets = [
    { source = "target/release/icon-studio", dest = "/usr/bin/icon-studio", mode = "0755" },
    { source = "icon-studio.desktop", dest = "/usr/share/applications/icon-studio.desktop", mode = "0644" },
    { source = "assets/icons/icon-studio-48.png", dest = "/usr/share/icons/hicolor/48x48/apps/icon-studio.png", mode = "0644" },
    { source = "assets/icons/icon-studio-64.png", dest = "/usr/share/icons/hicolor/64x64/apps/icon-studio.png", mode = "0644" },
    { source = "assets/icons/icon-studio-128.png", dest = "/usr/share/icons/hicolor/128x128/apps/icon-studio.png", mode = "0644" },
    { source = "assets/icons/icon-studio-256.png", dest = "/usr/share/icons/hicolor/256x256/apps/icon-studio.png", mode = "0644" },
    { source = "README.md", dest = "/usr/share/doc/neiam-icon-studio/README.md", doc = true, mode = "0644" },
    { source = "presets/*.toml", dest = "/usr/share/neiam-icon-studio/presets/", mode = "0644" },
]

# The same dlopened libdbus, named by soname so it resolves to whatever
# package provides it: dbus-libs on Fedora, libdbus-1-3 on openSUSE.
[package.metadata.generate-rpm.requires]
"libdbus-1.so.3()(64bit)" = "*"

[lib]
name = "icon_studio"
path = "src/lib.rs"

[[bin]]
name = "icon-studio"
path = "src/main.rs"

[dependencies]
# glow as well as the default wgpu: eframe 0.34 made wgpu the default
# renderer, and main() keeps the glow one this has always run on.
eframe = { version = "0.37", features = ["glow"] }
egui = "0.37"
tiny-skia = "0.11"
ab_glyph = "0.2"
image = { version = "0.25", default-features = false, features = ["png"] }
serde = { version = "1", features = ["derive"] }
toml = "0.8"
# Bundle export. No compression backends beyond deflate: a PNG is already
# deflated, so zstd/bzip2 would add dependencies to save nothing.
zip = { version = "9", default-features = false, features = ["deflate"] }
rfd = { version = "0.17", default-features = false, features = ["xdg-portal"] }

[profile.release]
opt-level = 2

[dev-dependencies]
zip = { version = "9", default-features = false, features = ["deflate"] }
image = { version = "0.25", default-features = false, features = ["png"] }