Security News
Weekly Downloads Now Available in npm Package Search Results
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Get the icon of a file or app as a PNG image
Requires macOS 10.10 or later. macOS 10.13 or earlier needs to download the Swift runtime support libraries.
npm install file-icon
import fs from 'node:fs';
import {fileIconToBuffer, fileIconToFile} from 'file-icon';
// An app name can be used
const buffer = await fileIconToBuffer('Safari');
fs.writeFileSync('safari-icon.png', buffer);
// An array of app names
const apps = ['Finder', 'Safari'];
const buffers = await fileIconToBuffer(apps);
buffers.map((buffer, index) => fs.writeFileSync(`${apps[index]}-icon.png`, buffer));
// Or a bundle ID
const buffer2 = await fileIconToBuffer('com.apple.Safari', {size: 64});
fs.writeFileSync('safari-icon.png', buffer2);
// Or a an array of bundle IDs
const bundleIds = ['com.apple.Finder', 'com.apple.Safari'];
const buffers2 = await fileIconToBuffer(bundleIds);
buffers2.map((buffer, index) => fs.writeFileSync(`${bundleIds[index]}-icon.png`, buffer));
// Or a process ID
const buffer3 = await fileIconToBuffer(257);
fs.writeFileSync('pid.png', buffer3);
// Or an array of process IDs
const pids = [257, 16];
const buffers3 = await fileIconToBuffer(pids, {size: 128});
buffers3.map((buffer, index) => fs.writeFileSync(`${pids[index]}-icon.png`, buffer));
// Or a path to an app / file
const buffer4 = await fileIconToBuffer('/Applications/Safari.app');
fs.writeFileSync('safari-icon.png', buffer4);
// Or an array of filenames
const paths = ['/Applications/Safari.app', '/Applications/Calculator.app'];
const buffers4 = await fileIconToBuffer(paths);
buffers4.map((buffer, index) => fs.writeFileSync(`${paths[index].split(/\/|\./)[2]}-icon.png`, buffer));
fs.writeFileSync('jpeg-file-type-icon.png', buffer4);
// Or a mix of all of them!
await fileIconToBuffer(['Finder', 257, 'com.apple.Calculator', '/Applications/Safari.app']);
// You can also use `fileIconToFile` and provide `options.destination` with the path to write to
await fileIconToFile('Safari', {destination: 'safari-icon.png'});
// You can also use same length arrays for `input` and `options.destination`
await fileIconToFile(['Safari', 'Finder'], {destination: ['safari-icon.png', 'finder-icon.png']});
console.log('Done');
Returns a Promise<Buffer>
for a PNG image if input
is of type string
or number
.
Returns a Promise<Buffer[]>
for multiple PNG images if input
is of type Array<string | number>
.
Type: string | number | Array<string | number>
Either:
Type: object
Type: number
Default: 1024
Maximum: 1024
Size of the returned icon.
Returns a Promise
that resolves when the files are written to options.destination
.
Type: string | number | Array<string | number>
Type: object
Type: number
Default: 1024
Maximum: 1024
Size of the returned icon.
Required
Type: string | string[]
Output file for the icon. If input
is a single value, options.destination
must be of type string
. If input
is an Array
, options.destination
must be of type string[]
with the same length
as input
.
FAQs
Get the icon of a file or app as a PNG image (macOS)
The npm package file-icon receives a total of 0 weekly downloads. As such, file-icon popularity was classified as not popular.
We found that file-icon demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.
Security News
A Stanford study reveals 9.5% of engineers contribute almost nothing, costing tech $90B annually, with remote work fueling the rise of "ghost engineers."
Research
Security News
Socket’s threat research team has detected six malicious npm packages typosquatting popular libraries to insert SSH backdoors.