- Category
- Developer Tools
- Rank
- No. 1693Tools index
Previous survey · No. 1699 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- GyulyVGC
- GitHub
- 7 stars
- Date
About
Get process icons in a cross-platform way from Rust.
What it does
Picon turns an executable path or application name into an icon ready for an Iced interface. It selects a native retrieval strategy for each supported operating system, then returns either an image handle or an SVG handle. Missing or unsupported icons produce no result.
Why it's ranked here
Picon solves a narrow desktop problem with substantial platform-specific work already handled. Windows supports packaged and conventional applications, macOS uses the system workspace, and Linux or BSD searches desktop metadata and icon themes. The verdict is positive for Iced applications, but its deliberate framework coupling sharply limits broader reuse.
What's good
The platform implementations respect native conventions instead of forcing one brittle lookup method everywhere. Windows cleans up operating-system graphics resources automatically and checks packaged application manifests before executable extraction. macOS locates enclosing application bundles, crops padding, and resizes output. Continuous integration builds, lints, formats, and tests across every declared platform family.
Tradeoffs
The returned values are tied directly to Iced, and the author explicitly says the crate is not general purpose. Inputs also differ by platform: executable paths on Windows and macOS, names elsewhere. Linux and BSD accept only PNG or SVG results. The public test module is empty, so the repository provides little executable behavioral coverage.
How to use it well
Use Picon inside an Iced desktop application that needs recognizable process or application icons across several operating systems. Check platform support, supply the input form expected by the target system, and handle missing results. Choose another library or adapt this code when you need framework-neutral bytes, arbitrary image formats, or a general icon-discovery service.
Technical notes+
Cargo.toml defines a Rust 2024 library crate with target-specific dependencies and Iced image and SVG features. src/lib.rs exposes IS_OS_SUPPORTED, IconHandle, and get_icon, while src/platform/mod.rs selects implementations at compile time. src/platform/windows/manifest.rs parses AppxManifest.xml and chooses the asset nearest 64 pixels; src/platform/windows/hicon.rs converts Windows HICON data from BGRA to RGBA with RAII cleanup. src/platform/macos/mod.rs obtains NSImage data through NSWorkspace, crops ten percent per edge, and renders 64 by 64 TIFF bytes. src/platform/linux/mod.rs scans desktop entries and resolves PNG or SVG theme assets. .github/workflows/ci.yml covers Ubuntu, macOS, Windows, FreeBSD, OpenBSD, and NetBSD, although src/lib.rs contains only an empty test module.
Observed
- License
- MIT
- Primary language
- Rust
- Packaging
- Cargo library package published through the crates.io surface
- Interface
- Rust library API returning Iced image or SVG handles
- Platform support
- Windows, Linux, macOS, FreeBSD, OpenBSD, and NetBSD
- Continuous integration
- Formatting, build, lint, and test jobs cover all declared operating system families
- Test structure
- The public library source contains an empty test module
Read from README.md, Cargo.toml, src/lib.rs, src/platform/mod.rs, src/platform/linux/mod.rs, src/platform/macos/mod.rs, src/platform/windows/mod.rs, src/platform/windows/hicon.rs, src/platform/unsupported/mod.rs, src/platform/windows/manifest.rs, LICENSE, CHANGELOG.md, .github/dependabot.yml, .github/workflows/ci.yml.
What it can do
Extract process icons from running applications
Process ID or process name → Process icon image
Retrieve application icons across different operating systems
Application executable path → Application icon in standard format
Convert process icons to Rust-compatible image formats
Raw process icon data → Rust image data structure
Query system processes for their associated icons
System process list → Icon data for each process
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
