Cómo configurar el ícono de la aplicación Electron / Atom Shell

147

¿Cómo configura el icono de la aplicación para su aplicación Electron?

Estoy intentando BrowserWindow({icon:'path/to/image.png'});pero no funciona.

¿Necesito empacar la aplicación para ver el efecto?

Jo E.
fuente
Puedes seguir github.com/onmyway133/blog/issues/66
onmyway133
Una cosa que puede hacer para Mac es colocar un postinstallscript en su proyecto que copiará el archivo .icns en su lugar en node_modules / automáticamente.
theram

Respuestas:

164

Establecer la iconpropiedad al crear el BrowserWindowúnico tiene un efecto en Windows y Linux.

Para configurar el icono en OS X, puede usar el paquete electrónico y configurar el icono con el --iconinterruptor.

Deberá estar en formato .icns para OS X. Hay un convertidor de iconos en línea que puede crear este archivo desde su .png.

Alex Warren
fuente
55
Establecer el ícono en BrowserWindow en un archivo .PNG se mostrará en la barra de tareas en Windows. Puede encontrar un ejemplo de cómo funciona en mi blog aquí: mylifeforthecode.com/… Puede ser que la ruta deba ser absoluta para que funcione, ya que la configuré en __dirname + 'ruta / a / icon.png'. Sin embargo, para configurar el ícono para el .exe necesitará usar un paquete electrónico o un hacker de recursos.
Shawn Rakowski
¿Puedes arreglar esta respuesta para que sea precisa?
Ana Betts
Gracias @ShawnRakowski, tienes razón: acabo de probar esto y la propiedad del icono también funciona en Windows. He actualizado mi respuesta para reflejar esto.
Alex Warren
1
Esto funcionó al principio, pero luego envié la aplicación distribuible a mi amigo y no funcionó. ¿Algunas ideas?
Chet
10
@Nick, tendrás que hacer algo como lo siguienteelectron-packager . YourApplicationName --all --icon "path/to/my/icon.ico"
Mateo
47

A continuación se muestra la solución que tengo:

mainWindow = new BrowserWindow({width: 800, height: 600,icon: __dirname + '/Bluetooth.ico'});
Sh4m
fuente
18
Vale la pena mencionar que __dirname es la ruta de su carpeta / src / (es decir, la carpeta de su archivo app.js / main.js).
Konstantin
.icnsinnecesario ?
ishandutta2007
20

También puedes hacerlo para macOS. Ok, no a través del código, sino con algunos pasos simples:

  1. Encuentre el archivo .icns que desea usar, ábralo y cópielo a través del menú Editar
  2. Encuentre el electron.app, generalmente en node_modules / electron / dist
  3. Abre la ventana de información.
  4. Seleccione el icono en la esquina superior izquierda (borde gris a su alrededor)
  5. Pegue el icono a través de cmd + v
  6. Disfruta tu ícono durante el desarrollo :-)

ingrese la descripción de la imagen aquí

En realidad es algo general no específico del electrón. Puede cambiar el ícono de muchas aplicaciones macOS como esta.

alexrjs
fuente
66
Esto es asombroso, gracias por esto. Necesitaba arrastrar y soltar para que funcionara, pero no obstante era increíble.
Robert Masen
Instrucciones completas: support.apple.com/kb/PH25383?locale=es_ES
AndroidDev
Esto parece funcionar solo para el desarrollo. Cuando ejecuto 'yarn dist', el archivo icns se reemplaza con el electrón predeterminado.
Dave
2
@Dave En realidad, dijo6. Enjoy your icon during *development* :-)
Mia
Bueno chicos ... Lo sé ... Pero esta solución tiene más de 2 años ... ;-) Y por cierto. deberías poder usar este "hack" también en una versión final, ya que simplemente lo cambias en la aplicación dist ... No lo he intentado por un tiempo ... Y quién sabe, tal vez hay una forma oficial, ahora ... ;-)
alexrjs
12

Package.json actualizado :

"build": {
  "appId": "com.my-website.my-app",
  "productName": "MyApp",
  "copyright": "Copyright © 2019 ${author}",
  "mac": {
    "icon": "./public/icons/mac/icon.icns",     <---------- set Mac Icons
    "category": "public.app-category.utilities"
  },
  "win": {
    "icon": "./public/icons/png/256x256.png" <---------- set Win Icon
  },
  "files": [
    "./build/**/*",
    "./dist/**/*",
    "./node_modules/**/*",
    "./public/**/*",       <---------- need for get access to icons
    "*.js"
  ],
  "directories": {
    "buildResources": "public" <---------- folder where placed icons
  }
},

Después de compilar la aplicación, puede ver iconos. Esta solución no muestra iconos en modo desarrollador. No configuro iconos en new BrowserWindow().

Andrey Patseiko
fuente
1

Si desea actualizar el ícono de la aplicación en la barra de tareas, luego Actualice lo siguiente en main.js (si usa typecript, entonces main.ts)

win.setIcon(path.join(__dirname, '/src/assets/logo-small.png'));

__dirnameapunta al directorio raíz (el mismo directorio que package.json) de su aplicación.

Hari Das
fuente
seguro de mac?
Anil8753
0

Tenga en cuenta que los ejemplos de la ruta del archivo de icono tienden a suponer que main.js está bajo el directorio base. Si el archivo no está en el directorio base de la aplicación, la especificación de ruta debe tener en cuenta ese hecho.

Por ejemplo, si main.js está bajo el subdirectorio src /, y el ícono está bajo assets / icons /, esta especificación de ruta de ícono funcionará:

icon: __dirname + "../assets/icons/icon.png"
Giao Vu
fuente
0

empaquetador de electrones


Establecer la propiedad del icono al crear el BrowserWindowúnico tiene un efecto en las plataformas Windows y Linux. tienes que empacar los .icns para max

Para configurar el icono en OS X usando electron-packager, configure el icono usando el interruptor --icon.

Deberá estar en formato .icns para OS X. Hay un convertidor de iconos en línea que puede crear este archivo desde su .png.

constructor de electrones


Como solución más reciente, encontré una alternativa para usar el --iconinterruptor. Esto es lo que puedes hacer.

  1. Cree un directorio con nombre builden el directorio de su proyecto y coloque .icnsel icono en el directorio con el nombre icon.icns.
  2. Ejecute el generador ejecutando el comando electron-builder --dir.

Encontrará que el ícono de su aplicación se recogerá automáticamente de esa ubicación de directorio y se usará para una aplicación mientras se empaqueta.

Nota : La respuesta dada es para la versión reciente electron-buildery probada con electron-builder v21.2.0

Kiran Maniya
fuente