app
Contrôle le cycle de vie des événements de votre application.
Processus : Main
L’exemple suivant montre comment quitter l’application lors de la fermeture de la dernière fenêtre :
const { app } = require('electron')
app.on('window-all-closed', () => {
app.quit()
})
Événements
L'objet app
émet les événements suivants :
Événement : 'will-finish-launching'
Émis lorsque l'application a terminé le démarrage de base. Sur Windows et Linux, l'événement will-finish-launching
est le même que l'événement ready
. Sur macOS, cet événement représente la notification applicationWillFinishLaunching
de NSApplication
.
Dans la plupart des cas, vous devriez pouvoir tout faire dans l'évènement ready
.
Événement : 'ready'
Retourne :
event
EventlaunchInfo
Record<string, any> | NotificationResponse macOS
Émis lorsqu'Electron a terminé l’initialisation. Sous macOS, launchInfo
contient le userInfo
des NSUserNotification
ou les informations de UNNotificationResponse
utilisées pour ouvrir l’application, si elle a été lancée à partir du Centre de notifications. Vous pouvez également appeler app.isReady()
pour vérifier si cet événement a déjà été émis et app.whenReady()
pour obtenir une Promesse qui sera résolue lorsque Electron sera initialisé.
Note: The ready
event is only fired after the main process has finished running the first tick of the event loop. If an Electron API needs to be called before the ready
event, ensure that it is called synchronously in the top-level context of the main process.
Événement : 'window-all-closed'
Émis lorsque toutes les fenêtres ont été fermées.
Si vous n'ête pas abonné à cet événement et que toutes les fenêtres sont fermées, le comportement par défaut consiste à quitter l'application. Dans le cas contraire étant abonné, vous pouvez contrôler le fait que l'application se ferme ou pas. Si l'utilisateur appuie sur Cmd + Q
, ou que le développeur appelle app.quit()
, Electron essaira d'abord de fermer toutes les fenêtres et puis émettra l'événement will-quit
et dans ce cas, l'événement window-all-closed
ne sera pas émis.
Événement : 'before-quit'
Retourne :
event
Event
Émis avant que l'application ne commence à fermer ses fenêtres. L'appel à event.preventDefault()
empêchera le comportement par défaut, qui est d'arrêter l'application.
Remarque : Si la sortie de l'application a été initiée par autoUpdater.quitAndInstall()
, before-quit
sera émis ensuite émettant lui même l'événement close
vers toutes les fenêtres pour les fermer.
Note: Sous Windows, cet événement ne sera pas émis si l'application doit être fermée suite à une extinction/re-démarrage du système ou à une déconnexion de l'utilisateur.
Événement : 'will-quit'
Retourne :
event
Event
Émis lorsque toutes les fenêtres ont été fermées et que l'application va se fermer. L'appel à event.preventDefault()
empêchera le comportement par défaut, qui est d'arrêter l'application.
Consultez la description de l’événement window-all-closed
pour voir les différences entre les événements will-quit
et window-all-closed
.
Note: Sous Windows, cet événement ne sera pas émis si l'application doit être fermée suite à une extinction/re-démarrage du système ou à une déconnexion de l'utilisateur.
Événement : 'quit'
Retourne :
event
EventexitCode
Integer
Émis lorsque l'application s'arrête.
Note: Sous Windows, cet événement ne sera pas émis si l'application doit être fermée suite à une extinction/re-démarrage du système ou à une déconnexion de l'utilisateur.
Événement : 'open-file' macOS
Retourne :
event
Eventpath
string
Émis lorsque l’utilisateur souhaite ouvrir un fichier avec l’application. L’événement open-file
est habituellement émis lorsque l’application est déjà ouverte et que le système d’exploitation souhaite réutiliser l’application pour ouvrir le fichier. open-file
est également émis lorsqu’un fichier est déposé sur le dock et que l’application n’est pas encore en cours d’exécution. Assurez-vous d’écouter l’événement open-file
très tôt dans le démarrage de votre application pour gérer ce cas (même avant que l’événement ready
ne soit émis).
Vous devrez appeler event.preventDefault()
si vous souhaitez gérer cet événement.
Sur Windows, vous devrez analyser process.argv
(dans le main process) pour obtenir le chemin d'accès.
Événement : 'open-url' macOS
Retourne :
event
Eventurl
string
Émis lorsque l’utilisateur souhaite ouvrir une URL avec l’application. Le fichier de votre application Info.plist
doit définir le schéma d'URL dans la touche CFBundleURLTypes
et définir NSPrincipalClass
à AtomApplication
.
Comme pour l'événement open-file
, assurez-vous d’enregistrer un listener pour l’événement open-url
très tôt lors du démarrage de votre application afin de détecter si l’application est ouverte pour gérer une URL. Si vous enregistrez l'écouteur en réponse à l'événement ready
, vous manquerez les URL qui déclenchent le lancement de votre application.
Événement : 'activate' macOS
Retourne :
event
EventhasVisibleWindows
boolean
Émis lorsque l'application est activée. Différentes actions peuvent déclencher cet événement, comme le lancement de l’application pour la première fois, essayer de relancer l’application lorsqu’elle est déjà en cours d’exécution, ou en cliquant sur l'icône du dock de l’application ou de l’icône de la barre des tâches.
Événement : 'did-become-active' macOS
Retourne :
event
Event
Émis lorsque l'application est activée. Contrairement à l'événement activate
, l'événement did-become-active
est émit à chaque fois que l'application devient active, et pas seulement sur l'icône du Dock de l'application ou quand l'application est relancée. Il est également émis lorsqu'un utilisateur passe à l'application via le commutateur d'application macOS.
Événement : 'user-did-resign-active' macOS
Retourne :
event
Event
Émis lorsque l'application n'est plus active et n'a pas de focus. Cela peut être déclenché, par exemple, en cliquant sur une autre application ou en utilisant le commutateur d'application macOS vers basculer vers une autre application.
Événement : 'continue-activity' macOS
Retourne :
event
Eventtype
string - Une chaîne de caractère identifiant l'activité. Correspond àNSUserActivity.activityType
.userInfo
inconnu - Contient l'état spécifique de l'application stocké par l'activité sur un autre appareil.- Objet
details
webpageURL
string (facultatif) - Chaîne identifiant l’URL de la page Web consultée par l’activité sur un autre appareil, le cas échéant.
Émis au cours de Handoff lorsqu’une activité d’un appareil différent demande à reprendre. Vous devrez appeler event.preventDefault()
si vous souhaitez gérer cet événement.
Une activité d'utilisateur peut être poursuivie seulement dans une application qui a le même identifiant d'équipe développeur que l'application d'origine de la source d'activité et qui prend en charge le type d'activité. La prise en charge d’activité types est spécifiée dans le Info.plist
de l'application sous la clé NSUserActivityType
.
Événement: 'wil-continue-activity' macOS
Retourne :
event
Eventtype
string - Une chaîne de caractère identifiant l'activité. Correspond àNSUserActivity.activityType
.
Émis au cours de Handoff lorsqu’une activité d’un appareil différent demande à reprendre. Vous devrez appeler event.preventDefault()
si vous souhaitez gérer cet événement.
Événement : 'continue-activity-error' macOS
Retourne :
event
Eventtype
string - Une chaîne de caractère identifiant l'activité. Correspond àNSUserActivity.activityType
.error
string - Une chaîne de caractères avec la description localisée de l'erreur.
Émis pendant Handoff lorsqu’une activité effectuée à partir d’un autre appareil échoue à reprendre.
Événement : 'activity-was-continued' macOS
Retourne :
event
Eventtype
string - Une chaîne de caractère identifiant l'activité. Correspond àNSUserActivity.activityType
.userInfo
unknown- Contient l'état spécifique de l'application stocké par l'activité.
Émis pendant Handoff après qu’une activité de cet appareil a été reprise avec succès sur un autre.
Événement : 'update-activity-state' macOS
Retourne :
event
Eventtype
string - Une chaîne de caractère identifiant l'activité. Correspond àNSUserActivity.activityType
.userInfo
unknown- Contient l'état spécifique de l'application stocké par l'activité.
Émis lorsque Handoff est sur le point de reprendre sur un autre appareil. Si vous avez besoin de mettre à jour l'état à transférer, vous devez appeler immédiatement event.preventDefault()
, construire un nouveau dictionnaire userInfo
et appeler app.updateCurrentActivity()
sans plus tarder. Sinon, l'opération échouera et continue-activity-error
sera appelée.
Événement : 'new-window-for-tab' macOS
Retourne :
event
Event
Émis lorsque l'utilisateur clique sur le bouton natif de nouvel onglet de macOS. Le bouton de nouvel onglet n'est visible que si la BrowserWindow actuelle
possède un tabbingIdentifier
Événement : 'browser-window-blur'
Retourne :
event
Eventwindow
BrowserWindow
Émis lorsqu'une browserWindow perd le focus.
Événement : 'browser-window-focus'
Retourne :
event
Eventwindow
BrowserWindow
Émis lorsqu'un browserWindow acquiert le focus.
Événement : 'browser-window-created'
Retourne :
event
Eventwindow
BrowserWindow
Émis lorsqu'une nouvelle browserWindow est créé.
Événement : 'web-contents-created'
Retourne :
event
EventwebContents
WebContents
Émis lorsqu'un nouveau webContents est créé.
Événement 'certificate-error'
Retourne :
event
EventwebContents
WebContentsurl
stringerror
string - Le code d'erreurcertificate
Certificatecallback
FunctionisTrusted
boolean - Détermine si le certificat doit être considéré comme digne de confiance
isMainFrame
boolean
Émis lorsque la vérification du certificate
pour l'url
a échouée. Pour approuver le certificat, vous devez empêcher le comportement par défaut avec event.preventDefault()
et appeler callback(true)
.
const { app } = require('electron')
app.on('certificate-error', (event, webContents, url, error, certificate, callback) => {
if (url === 'https://github.com') {
// Logique de vérification.
event.preventDefault()
callback(true)
} else {
callback(false)
}
})
Événement : 'select-client-certificate'
Retourne :
event
EventwebContents
WebContentsurl
URLcertificateList
Certificate[]callback
Functioncertificate
Certificate (facultatif)
Émis lorsqu'un certificat client est demandé.
L' url
correspondant à l’entrée de navigation demande le certificat client et le callback
peut être appelée avec une entrée filtrée dans la liste. L’utilisation de event.preventDefault()
empêche l’application d’utiliser le premier certificat du store.
const { app } = require('electron')
app.on('select-client-certificate', (event, webContents, url, list, callback) => {
event.preventDefault()
callback(list[0])
})
Événement : 'login'
Retourne :
event
EventwebContents
WebContents (optional)- Objet
authenticationResponseDetails
url
URLpid
number
- Objet
authInfo
isProxy
booleanscheme
stringhost
stringport
Integerrealm
string
callback
Functionusername
string (facultatif)password
string (facultatif)
Emitted when webContents
or Utility process wants to do basic auth.
Le comportement par défaut est d'annuler toutes les authentifications. Pour remplacer cela vous devez empêcher le comportement par défaut avec event.preventDefault()
et appeler callback(username, password)
avec les identifiants.
const { app } = require('electron')
app.on('login', (event, webContents, details, authInfo, callback) => {
event.preventDefault()
callback('username', 'secret')
})
Si callback
est appelé sans nom d'utilisateur ou mot de passe, la demande d'authentification sera annulée et l'erreur d'authentification sera renvoyée à la page .
Événement : 'gpu-info-update'
Émis chaque fois qu'il y a une mise à jour d'informations GPU.
Événement : 'render-process-gone'
Retourne :
event
EventwebContents
WebContentsdetails
RenderProcessGoneDetails
Émis lorsque le processus de rendu disparait de manière inattendue. C'est habituelement parce qu'il s'est planté ou qu'il a été tué.
Événement : 'child-process-gone'
Retourne :
event
Event- Objet
details
type
string - Type de processus. Une des valeurs suivantes:Utility
Zygote
Sandbox helper
GPU
Pepper Plugin
Pepper Plugin Broker
Unknown
reason
string - La raison pour laquelle le processus enfant s'est terminé. Valeurs possibles :clean-exit
- Le Processus s'est terminé avec le code de sortie zéroabnormal-exit
- Le Processus s'est terminé avec un code de sortie différent de zérokilled
- Le processus a reçu un SIGTERM ou a été tué autrement de l'extérieurcrashed
- Le processus s'est plantéoom
- Le processus est tombé à cours de mémoirelaunch-failed
- Le processus n'a pu se lancer avec succèsintegrity-failure
- Les vérifications d'intégrité du code Windows ont échouées
exitCode
number - Le code de sortie du processus (cad: l'état de waitpid sur posix, de GetExitCodeProcess sur Windows).serviceName
string (facultatif) - Le nom non localisé du processus.name
string (facultatif) : Nom du processus. Exemples pour l'utilitaire :Audio Service
,Content Decryption Module Service
,Network Service
,Video Capture
, etc.
Cet événement est émis lorsque le processus enfant disparaît de façon inattendue. C'est habituelement parce qu'il s'est planté ou qu'il a été tué. Cela n'inclut pas le processus de rendu.
Événement : 'accessibility-support-changed' macOS Windows
Retourne :
event
EventaccessibilitySupportEnabled
boolean -true
quand le support de l'accessibilité de Chromium est activé, sinonfalse
.
Émis lorsque le support de l’accessibilité du Chrome change. Cet événement se déclenche lorsque les technologies d’assistance, tels que les lecteurs d’écran sont activés ou désactivés. Voir https://www.chromium.org/developers/design-documents/accessibility pour plus de détails.
Évènement : 'session-created'
Retourne :
session
Session
Émis lorsque Electron vient de créer une nouvelle session
.
const { app } = require('electron')
app.on('session-created', (session) => {
console.log(session)
})
Évènement : 'second-instance'
Retourne :
event
Eventargv
string[] - un tableau d’arguments de la ligne de commande de la deuxième instanceworkingDirectory
string - Le répertoire de travail de la seconde instanceadditionalData
unknown- Objet JSON des données supplémentaires transmises par la deuxième instance
Cet événement sera émis dans l'instance principale de votre application quand une seconde instance a été exécutée et appelle app.requestSingleInstanceLock()
.
argv
est un tableau des arguments de la ligne de commande de la seconde instance, et workingDirectory
est son répertoire de travail actuel. Les applications répondent habituellement à cela en faisant de leur fenêtre principale, une fenêtre centrée et non réduite au minimum.
Note: la liste d'arguments argv
ne sera pas exactement identique à celle transmise à la deuxième instance. L’ordre des arguments peut être modifié et certains arguments supplémentaires peuvent être ajoutés. Si vous devez conserver les mêmes arguments, il est conseillé d’utiliser additionalData
à la place.
Note: Si la seconde instance a été lancée par un utilisateur différent du premier, le tableau argv
ne va pas inclure les arguments.
L'émission de cet évènement est garantie si elle suit celle de l'évènement ready
de app
.
Note: Des arguments de ligne de commande supplémentaires peuvent être rajoutés par Chromium, tels que --original-process-start-time
.
Méthodes
L'objet app
dispose des méthodes suivantes :
Note : Certaines méthodes ne sont seulement disponibles que sur des systèmes d'exploitation spécifiques et sont étiquetés comme tels.
app.quit()
Essayez de fermer toutes les fenêtres. L’événement before-quit
sera émis d’abord. Si toutes les fenêtres sont fermées avec succès, l’événement will-quit
sera émis et mettra fin à l’application par défaut.
Cette méthode garantit que tous les écouteurs d’événements de beforeunload
et unload
seront correctement exécutées. Il est possible qu’une fenêtre annule la fermeture en retournant false
dans l'écouteur d’événement beforeunload
.
app.exit([exitCode])
exitCode
Integer (facultatif)
Sort immédiatement avec exitCode
. exitCode
est par défaut à 0.
Toutes les fenêtres seront immédiatement fermées sans interroger l'utilisateur, et les événements before-quit
et will-quit
ne seront pas émis.
app.relaunch([options])
Relance l’application lorsque l’instance en cours se termine.
Par défaut, la nouvelle instance utilisera le même répertoire de travail et les mêmes arguments de la ligne de commande que ceux de l'instance actuelle. Si args
est spécifié, args
sera passé comme argument de ligne de commande à la place. Lorsque execPath
est spécifié, execPath
sera exécuté pour redémarrer à la de l’application actuelle.
Notez bien que cette méthode ne ferme pas l'application, vous devez appeler app.quit
ou app.exit
après avoir appelé app.relaunch
pour faire redémarrer votre application.
Quand app.relaunch
est appelé plusieurs fois, plusieurs instances vont être appelées après que l'instance actuelle soit fermée.
Voici un exemple qui redémarre une nouvelle instance immédiatement en ajoutant un nouvel argument de ligne de commande à la nouvelle instance :
const { app } = require('electron') app.relaunch({ args: process.argv.slice(1).concat(['--relaunch']) }) app.exit(0)
app.isReady()
Retourne boolean
- true
si Electron a fini de s'initialiser sinon, false
. Voir également app.whenReady()
.
app.whenReady()
Retourne une Promise<void>
- qui est résolue quand Electron est initialisé. Peut être utilisé comme une alternative pratique à la vérification de app.isReady()
et à l’abonnement à l’événement ready
si l’application n’est pas encore prête.
app.focus([options])
Sous Linux, donne le focus à la première fenêtre visible. Sur macOS, fait de l'application l'application active. Sous Windows, donne le focus à la première fenêtre de l'application.
L'option steal
doit être utilisée avec parcimonie.
app.hide()
macOS
Masque toutes les fenêtres de l'application sans les minimiser.
app.isHidden()
macOS
Retourne boolean
- true
si l’application, y compris toutes ses fenêtres, est masquée (par exemple avec Command-H
), false
dans le cas contraire.
app.show()
macOS
Affiche les fenêtres de l'application après qu'elles aient été occultées. Cela ne leur donne pas automatiquement le focus.
app.setAppLogsPath([path])
path
string (facultatif) - Chemin personnalisé pour vos logs. Il doit être absolu.
Définit ou crée un répertoire qui peut être manipulé par app.getPath()
ou app.setPath(pathName, newPath)
.
L'appel à app.setAppLogsPath()
sans paramètre path
définira ce répertoire comme étant ~/Library/Logs/YourAppName
sur macOS et userData
sur Linux et Windows.
app.getAppPath()
Retourne string
- Répertoire courant de l'application.
app.getPath(name)
name
string - Vous pouvez demander les chemins suivants par leur nom:home
Répertoire d'accueil de l'utilisateur.appData
Répertoire de données d'utilisateur de l'application, pointant par défaut sur:%APPDATA%
sur Windows$XDG_CONFIG_HOME
ou~/.config
sur Linux~/Library/Application Support
sur macOS
userData
Répertoire de stockage des fichiers de configuration de votre application, qui par défaut, est le répertoireappData
joint au nom de votre application. Par convention les fichiers stockant des données utilisateur doivent être disposés dans ce répertoire, et il n’est pas recommandé d'y écrire des fichiers trop volumineux car certains environnements peuvent sauvegarder ce répertoire sur le stockage cloud.sessionData
Répertoire de stockage des données générées parSession
, telles que localStorage, cookies, cache disque, dictionnaires téléchargés, état réseau, fichiers devtools. Par défaut, pointe suruserData
. Chromium peut y stocker un très grand cache disque, donc si votre application ne s’appuie pas sur le stockage du navigateur tel lStorage ou les cookies pour enregistrer les données utilisateur, il est recommandé de définir ce répertoire à d’autres emplacements pour éviter de polluer le répertoireuserData
.temp
Dossier temporaire.exe
Le fichier exécutable actuel.module
La bibliothèque delibchromiumcontent
.desktop
Le dossier du Bureau de l’utilisateur actuel.documents
Dossier "Mes Documents" d'un utilisateur.downloads
Dossier pour les téléchargements de l’utilisateur.music
Dossier de musique de l’utilisateur.pictures
Dossier des images de l’utilisateur.videos
Dossier des vidéos de l’utilisateur.recent
Dossier des fichiers récents de l'utilisateur (Windows seulement).logs
Répertoire du dossier de log de votre application.crashDumps
Dossier où les rapports d'incidents sont stockés.
Retourne string
- Un chemin vers le répertoire spécial ou le fichier associé à name
. En cas d'échec, une Error
sera levée.
Si app.getPath('logs')
est appelé sans que app.setAppLogsPath()
soit appelé en premier, un répertoire de logs par défaut sera créé équivalent à un appel app.setAppLogsPath()
sans paramètre path
.
app.getFileIcon(path[, options])
path
string
Retourne Promise<NativeImage>
- rempli avec l'icône de l'application, qui est une NativeImage.
Récupère une icône associée à un chemin.
Sur Windows, il y a 2 types d'icônes :
- Icônes associées à certaines extensions de fichier, comme
.mp3
,.png
, etc. - Icônes à l’intérieur du fichier lui-même, comme les
.exe
,.dll
,.ico
.
Sur Linux et macOS, les icônes dépendent de l'application associée au type Mime de fichier.
app.setPath(name, path)
name
stringpath
string
Remplace le chemin path
par un répertoire spécial ou un fichier associé à name
. Si le chemin spécifie un répertoire qui n'existe pas, une Erreur
est levée. Dans ce cas, le répertoire doit être créé avec fs.mkdirSync
ou similaire.
Vous pouvez remplacer uniquement les chemins d’un name
défini dans app.getPath
.
Par défaut, les cookies et la cache des pages web seront stockés dans le répertoire sessionData
. Si vous voulez changer cet emplacement, vous devez remplacer le chemin sessionData
avant que l'événement ready
du module app
soit émis.
app.getVersion()
Retourne string
- La version de l'application chargée. Si aucune version n'est trouvée dans le fichier package.json
de l'application, la version du bundle courant ou de l'exécutable est renvoyée.
app.getName()
Retourne string
- Le nom de l'application, qui figure dans le fichier package.json
.
Habituellement, le champ name
de package.json
est un nom court en minuscule, selon la spécification des modules npm. Vous devriez dans la plupart des cas renseigner également un champ productName
, qui contient le nom complet et capitalisé de votre application, et qui sera préféré à name
par Electron.
app.setName(name)
name
string
Remplace le nom de l'application actuelle.
Note: Cette fonction remplace le nom utilisé en interne par Electron; elle n'affecte pas le nom utilisé par l'OS.
app.getLocale()
Renvoie string
- Les paramètres régionaux actuels de l'application, récupérés à l'aide de la librairie l10n_util
de Chromium. Les valeurs de retour possibles sont documentées ici.
Pour définir les paramètres régionaux, vous devez utiliser un commutateur de ligne de commande au démarrage de l’application, qui peut être trouvé ici.
Note: Lors de la distribution de votre application packagée, vous devez également expédier le dossier locales
.
Note : Cette API doit être appelée après l'émission de l'événement ready
.
Note: Un exemple de retour des valeurs de cette API par rapport aux autres API concernant les locales et langues, est visible sur app.getPreferredSystemLanguages()
.
app.getLocaleCountryCode()
Retourne string
- Code à deux lettre selon ISO 3166 du pays du système d'exploitation de l'utilisateur. La valeur est tirée des API natives d'OS.
Note: Quand il est impossible de détecter le code du pays de la localisation, le retour est une chaîne vide.
app.getSystemLocale()
Retourne string
- Locale actuelle du système. Sous Windows et Linux, elle est récupérée à l'aide de la bibliothèque i18n
de Chromium. Sur macOS, c'est l'objet [NSLocale currentLocale]
qui est utilisé. Pour obtenir la langue système actuelle de l'utilisateur, et qui d'ailleurs n'est pas toujours la même que la locale , il est préférable d'utiliser app.getPreferredSystemLanguages()
.
Les différents systèmes d'exploitation utilisent également les données régionales différemment :
- Windows 11 utilise le format régional pour les nombres, les dates et les heures.
- macOS Monterey utilise la région pour le formatage des nombres, dates, heures, et pour sélectionner le symbole de devise à utiliser.
Par conséquent, cette API peut être utilisée pour le choix d'un format, pour le rendu des dates et des heures dans une application de calendrier, surtout lorsque le développeur veut que le format soit cohérent avec l'OS.
Note : Cette API doit être appelée après l'émission de l'événement ready
.
Note: Un exemple de retour des valeurs de cette API par rapport aux autres API concernant les locales et langues, est visible sur app.getPreferredSystemLanguages()
.
app.getPreferredSystemLanguages()
Retourne string[]
- Langues système préférées de l'utilisateur en commenant celle à privilégier, y compris les codes pays, le cas échéant. Un utilisateur peut modifier cette liste ou y faire des ajouts sous Windows ou macOS via les paramètres Langue et Région.
L'API utilise GlobalizationPreferences
(avec un repli sur GetSystemPreferredUILanguages
) sur Windows, \[NSLocale preferredLanguages\]
sur macOS, et g_get_language_names
sur Linux.
Cette API peut être utilisée par exemple pour décider de la langue dans laquelle l'application sera présentée.
Voici quelques exemples de valeurs de retour des différentes API de langue et de locale selin des configurations différentes:
Pour Windows, la locale de l'application est l'allemand, le format régional est finlandais (Finlande), et les langues préférées du système de la plus préférée à la moins sont le français (Canada), l'anglais (États-Unis), le chinois simplifié (Chine), le finnois et l'espagnol (Amérique latine) :
app.getLocale() // 'de'
app.getSystemLocale() // 'fi-FI'
app.getPreferredSystemLanguages() // ['fr-CA', 'en-US', 'zh-Hans-CN', 'fi', 'es-419']
Sur macOS, la locale de l'application est l'allemand, la région est la Finlande, et les langues préférées du système de la plus préférée à la moins sont le français (Canada), l'anglais (États-Unis), le chinois simplifié et l'espagnol (Amérique latine) :
app.getLocale() // 'de'
app.getSystemLocale() // 'fr-FI'
app.getPreferredSystemLanguages() // ['fr-CA', 'en-US', 'zh-Hans-FI', 'es-419']
Les langues et les régions disponibles et les valeurs de retour possibles diffèrent entre les deux systèmes d'exploitation.
Comme on peut le voir avec l'exemple ci-dessus, sous Windows, il est possible qu'une langue système préférée n'ait pas de code de pays, et que l'une des langues système préférées corresponde à la langue utilisée pour le format régional. Sur macOS, la région sert davantage de code de pays par défaut : l'utilisateur n'a pas besoin d'avoir le finnois comme langue préférée pour utiliser la Finlande comme région, et l'indicatif du pays FI
est utilisé comme indicatif du pays pour les langues système préférées qui n'ont pas de pays associés dans le nom de langue.
app.addRecentDocument(path)
macOS Windows
path
string
Ajoute le path
à la liste des documents récents.
Cette liste est gérée par l'OS. Sous Windows, vous pouvez parcourir la liste à partir de la barre des tâches et sur macOS à partir du menu du dock.
app.clearRecentDocuments()
macOS Windows
Efface la liste des documents récents.
app.setAsDefaultProtocolClient(protocol[, path, args])
protocol
string - Le nom de votre protocole, sans le préfixe://
. Par exemple, si vous souhaitez que votre application gère les lienselectron://
, appelez cette méthode avecelectron
comme paramètre.path
string (facultatif) Windows -Chemin vers l'exécutable d'Electron. Par défautprocess.execPath
args
string[] (facultatif) Windows - Arguments transmis à l'exécutable. Par défaut, un tableau vide
Returns boolean
- Si l'appel a réussi.
Définit l'exécutable courant comme gestionnaire par défaut pour un protocole (alias le schéma URI). Il vous permet d'intégrer votre application plus profondément dans le système d'exploitation. Une fois enregistré, tous les liens avec votre-protocole://
seront ouverts avec l'exécutable courant. L'ensemble du lien, y compris le protocole, sera transmis à votre application comme paramètre.
Remarque: Sur macOS, vous ne pouvez enregistrer que les protocoles qui ont été ajoutés à votre application info.plist
, qui ne peut pas être modifié au moment de l'exécution. Cependant, vous pouvez changer le fichier pendant la compilation avec Electron Forge, Electron Packager, ou en modifiant info.plist
avec un éditeur de texte. Veuillez vous référer pour d'avantage de d étails à la documentation d'Apple.
Remarque : Dans un environnement Windows Store (lorsque empaqueté en tant qu'appx
) cette API retournera true
pour tous les appels, mais la clé de registre qu'elle définit ne sera pas accessible par d'autres applications. Afin d'enregistrer votre application Windows Store comme gestionnaire de protocole par défaut, vous devez déclarer le protocole dans votre manifest.
L'API utilise le registre Windows et LSSetDefaultHandlerForURLScheme
en interne.
app.removeAsDefaultProtocolClient(protocol[, path, args])
macOS Windows
protocol
string - Le nom de votre protocole, sans le préfixe://
.path
string (facultatif) Windows -process.execPath
par défautargs
string[] (facultatif) Windows - Un tableau vide par défaut
Returns boolean
- Si l'appel a réussi.
Cette méthode vérifie si l'exécutable courant est le gestionnaire par défaut pour un protocole (aka le schéma URI). Si c'est le cas, cela supprimera l'application comme gestionnaire par défaut.
app.isDefaultProtocolClient(protocol[, path, args])
protocol
string - Le nom de votre protocole, sans le préfixe://
.path
string (facultatif) Windows -process.execPath
par défautargs
string[] (facultatif) Windows - Un tableau vide par défaut
Retourne boolean
- Si l'exécutable actuel et le gestionnaire par défaut d'un protocole (schéma URI).
Remarque: Sur macOS, vous pouvez utiliser cette méthode pour vérifier si l'application a bien été enregistré comme gestionnaire de protocole par défaut pour un protocole. Vous pouvez également confirmer cela en vérifiant ~/Library/Preferences/com.apple.LaunchServices.plist
sur votre machine macOS. Veuillez vous référer à la documentation d'Apple pour plus de détails.
L'API utilise le registre Windows et LSCopyDefaultHandlerForURLScheme
en interne.
app.getApplicationNameForProtocol(url)
url
string - une URL avec le nom du protocole à vérifier. Contrairement aux autre méthodes de cette famille, celle-ci accepte un URL en entier, y compris://
au minimum (par exemple :https://
).
Retourne string
- Nom de l'application qui gère le protocole, ou un string vide s'il n'y a pas de gestionnaire. Par exemple, si Electron est le gestionnaire par défaut de l'URL, il pourrait s'agit de Electron
sur Windows et Mac. Par contre, ne vous fiez pas au format précis qui ne garantit pas de ne pas changer. Attendez-vous à un format différent sur Linux, probablement avec un préfixe .desktop
.
Cette méthode retourne le nom de l'application du gestionnaire par défaut pour le protocole d'une URL (schéma d'URI).
app.getApplicationInfoForProtocol(url)
macOS Windows
url
string - une URL avec le nom du protocole à vérifier. Contrairement aux autre méthodes de cette famille, celle-ci accepte un URL en entier, y compris://
au minimum (par exemple :https://
).
Retourne Promise<Object>
- Se résout avec un objet contenant les éléments suivants :
icon
NativeImage - l’icône d’affichage de l’application qui gère le protocole.path
string - chemin d’installation de l’application qui gère le protocole.name
string - nom complet de l’application qui gère le protocole.
Cette méthode retourne une promesse qui contient le nom de l'application, l'icone et le chemin du gestionnaire par défaut pour le protocole (aka le schéma URI) d'une URL.
app.setUserTasks(tasks)
Windows
tasks
Task[] - Tableau d'objetsTask
Ajoute tasks
à la catégorie Tasks de la Jumplist sur Windows.
tasks
est un tableau d’objets Task.
Returns boolean
- Si l'appel a réussi.
Remarque : Si vous souhaitez personnaliser encore plus la JumpList, utilisez app.setJumpList(categories)
à la place.
app.getJumpListSettings()
Windows
Retourne Object
:
minItems
Integer - Le nombre minimum d'éléments qui seront affichés dans la JumpList (pour une description plus détaillée de cette valeur, voir les documentations MSDN).removedItems
JumpListItem[] - Tableau des objetsJumpListItem
qui correspondent aux éléments que l'utilisateur a explicitement retirés des catégories personnalisées dans la liste de saut de . Ces éléments ne doivent pas être ajoutés de nouveau à la JumpList dans l'appel suivant àapp.setJumpList()
, Windows n'affichera aucune catégorie personnalisée qui contient les éléments supprimés.
app.setJumpList(categories)
Windows
catégories
JumpListCategory[] |null
- Tableau d'objetsJumpListCategory
.
Retourne string
Définit ou supprime une JumpList personnalisée pour l'application et renvoie l'une des chaînes de caractères suivantes :
ok
- Tout s'est bien passé.error
- Une ou plusieurs erreurs se sont produites, activez la journalisation de la durée d'exécution pour déterminer la cause probable.invalidSeparatorError
- Une tentative a été faite pour ajouter un séparateur à une catégorie personnalisée dans la de la ligne de commande. Les séparateurs ne sont autorisés que dans la catégorie standardTasks
.fileTypeRegistrationError
- Tentative d'ajout d'un lien de fichier dans la JumpList pour un type de fichier que l'application n'est pas enregistrée pour gérer.customCategoryAccessDeniedError
- Les catégories personnalisées ne peuvent pas être ajoutées à la JumpList en raison de la confidentialité de l'utilisateur ou des paramètres de politique de groupe.
Si cetagories
est null
, la JumpList personnalisée précédemment définie (si existante) sera remplacée par la JumpList standard de l'application (gérée par Windows).
Remarque : Si un objet JumpListCategory
n'a ni de type
ni de propriété name
définie le type
est donc supposé être tasks
. Si la propriété name
est définie mais que le type
est omis, alors le type
est assumé être custom
.
Remarque : Les utilisateurs peuvent supprimer des éléments des catégories personnalisées, et Windows n'autorisera pas l'ajout d'un élément supprimé dans une catégorie personnalisée avant le prochain appel réussi à app.setJumpList(categories)
. Toute tentative de réajouter un élément supprimé à une catégorie personnalisée plus tôt, cela entraînera l'omission de toute la catégorie personnalisée dans la JumpList. La liste des éléments supprimés peut être obtenue à l'aide de app.getJumpListSettings()
.
Remarque: La longueur maximale de la propriété description
d’un élément d'une JumpList est de 260 caractères. Au-delà de cette limite, l'élément ne sera ni ajouté à la liste ni affiché.
Voici un exemple très simple de la création d'une JumpList personnalisé :
const { app } = require('electron')
app.setJumpList([
{
type: 'custom',
name: 'Recent Projects',
items: [
{ type: 'file', path: 'C:\\Projects\\project1.proj' },
{ type: 'file', path: 'C:\\Projects\\project2.proj' }
]
},
{ // possède un name donc `type` est déduit comme "custom"
name: 'Tools',
items: [
{
type: 'task',
title: 'Tool A',
program: process.execPath,
args: '--run-tool-a',
iconPath: process.execPath,
iconIndex: 0,
description: 'Runs Tool A'
},
{
type: 'task',
title: 'Tool B',
program: process.execPath,
args: '--run-tool-b',
iconPath: process.execPath,
iconIndex: 0,
description: 'Runs Tool B'
}
]
},
{ type: 'frequent' },
{ // n'a pas de name ni de type donc `type` est déduit comme "tasks"
items: [
{
type: 'task',
title: 'New Project',
program: process.execPath,
args: '--new-project',
description: 'Create a new project.'
},
{ type: 'separator' },
{
type: 'task',
title: 'Recover Project',
program: process.execPath,
args: '--recover-project',
description: 'Recover Project'
}
]
}
])
app.requestSingleInstanceLock([additionalData])
additionalData
Record<any, any> (optional) - A JSON object containing additional data to send to the first instance.
Retourne boolean
La valeur renvoyée par cette méthode indique si cette instance de votre application a obtenu le verrou ou non. Si elle n'a pas réussi à obtenir le verrou vous pouvez supposer qu'une autre instance de votre application est déjà en cours d'exécution avec le verrou et sortir immédiatement.
I.e. Cette méthode renvoie true
si votre processus est l’instance principale de votre application et que votre application doit continuer à se charger. Elle renvoie false
si votre process devrait quitter immédiatement, puisqu'il a envoyé ses paramètres à une instance qui possède déjà le verrou.
Sur macOS, le système impose automatiquement une instance unique lorsque les utilisateurs essaient d'ouvrir une seconde instance de votre application dans Finder, et les événements open-file
et open-url
seront émis pour cela. Cependant, lorsque les utilisateurs démarrent votre application en ligne de commande , le mécanisme d'instance unique du système sera contourné, et vous devez utiliser cette méthode pour assurer une seule instance.
Un exemple d'activation de la fenêtre de l'instance primaire lorsqu'une seconde instance démarre :
const { app, BrowserWindow } = require('electron')
let myWindow = null
const additionalData = { myKey: 'myValue' }
const gotTheLock = app.requestSingleInstanceLock(additionalData)
if (!gotTheLock) {
app.quit()
} else {
app.on('second-instance', (event, commandLine, workingDirectory, additionalData) => {
// Print out data received from the second instance.
console.log(additionalData)
// Quelqu'un a essayé d'exécuter une seconde instance vous devez donner le focus à notre fenêtre.
if (myWindow) {
if (myWindow.isMinimized()) myWindow.restore()
myWindow.focus()
}
})
app.whenReady().then(() => {
myWindow = new BrowserWindow({})
myWindow.loadURL('https://electronjs.org')
})
}
app.hasSingleInstanceLock()
Retourne boolean
Cette méthode retourne un booléen indiquant si cette instance de votre application détient actuellement le verrou d'instance unique. Vous pouvez demander le verrou avec app.requestSingleInstanceLock()
et le débloquer avec app.releaseSingleInstanceLock()
app.releaseSingleInstanceLock()
Libère tous les verrous créés par requestSingleInstanceLock
. Cela permettra plusieurs instances de l’application de s’exécuter côte à côte de nouveau .
app.setUserActivity(type, userInfo[, webpageURL])
macOS
type
string - Identifie de façon unique l'activité. Correspond àNSUserActivity.activityType
.userInfo
n'importe quel - état spécifique à l'application à stocker pour utilisation par un autre appareil.webpageURL
string(facultatif) - La page Web à charger dans un navigateur si aucune application appropriée n’est installée sur l’appareil de reprise. Le schéma doit êtrehttp
ouhttps
.
Créée un NSUserActivity
et le défini en tant qu'activité courante. L’activité est admissible à un Handoff vers un autre appareil par la suite.
app.getCurrentActivityType()
macOS
Retourne string
- Type de l’activité en cours d’exécution.
app.invalidateCurrentActivity()
macOS
Invalide l’activité utilisateur du Handoff actuel.
app.resignCurrentActivity()
macOS
Marque l’activité de l’utilisateur du Handoffcourant comme inactive sans l’invalider.
app.updateCurrentActivity(type, userInfo)
macOS
type
string - Identifie de façon unique l'activité. Correspond àNSUserActivity.activityType
.userInfo
n'importe quel - état spécifique à l'application à stocker pour utilisation par un autre appareil.
Modifie l'activité en cours si son type correspond à type
, en fusionnant les entrées de userInfo
dans son dictionnaire userInfo
courant.
app.setAppUserModelId(id)
Windows
id
string
Passe le Application User Model ID à id
.
app.setActivationPolicy(policy)
macOS
policy
string - Peut prendre comme valeur 'regular', 'accessory' ou 'prohibited'.
Définit la stratégie d’activation pour une application donnée.
Types de stratégie d’activation :
- 'regular' - L’application est une application ordinaire qui apparaît dans le Dock et peut avoir une interface utilisateur.
- 'accessory' - L’application n’apparaît pas dans le Dock et n’a pas de barre de menus, mais elle peut être activée par programme ou en cliquant sur l’une de ses fenêtres.
- 'prohibied' - L'application n'apparaît pas dans le Dock et ne peut pas créer de fenêtres ou être activée.
app.importCertificate(options, callback)
Linux
- Objet
options
certificate
string - Chemin pour le fichier pkcs12.password
string - La Passphrase pour le certificat.
callback
Functionresult
Integer - Résultat de l'importation.
Importe le certificat au format pkcs12 dans l'entrepôt de certificats de la plateforme. callback
est appelé avec le résult
de l’opération d’import, la valeur 0
indiquant la réussite tandis que toute autre valeur indique la défaillance selon Chromium net_error_list.
app.configureHostResolver(options)
- Objet
options
enableBuiltInResolver
boolean (facultatif) - Indique si le résolveur d'hôte intégré est utilisé de préférence à getaddrinfo. Lorsque cette option est activée, le résolveur intégré tentera d'utiliser les paramètres DNS du système pour faire lui même des recherches DNS. Activé par défaut sur macOS, désactivé par défaut sur Windows et Linux.secureDnsMode
string (facultatif) - Peut être 'off', 'automatic' ou 'secure'. Configure le mode DNS-overHTTP. Si égal à "off", aucune recherche DoH ne sera effectuée . Si c'est "automatic, les recherches DoH seront effectués en premier si le DoH est disponible et les recherches DNS non sécurisés seront exécutés en tant que repli. Et lorsque la valeur est "sécure", seules les recherches DoH seront effectuées. La valeur par défaut est 'automatic'.secureDnsServers
string[] (facultatif) : liste des modèles de serveur DNS-over-HTTP . Voir RFC8484 § 3 pour plus de détails sur le format du modèle. La plupart des serveurs prennent en charge la méthode POST ; le modèle pour ces serveurs est simplement une URI. Notez que pour certains fournisseurs DNS, le résolveur sera automatiquement mis à niveau vers DoH, sauf si DoH est explicitement désactivé, et même s’il n’y a pas de serveur DoH fourni dans cette liste.enableAdditionalDnsQueryTypes
booléen (facultatif) - Contrôle si des types de requête DNS supplémentaires, par exemple HTTPS (type DNS 65) sont autorisés en plus des requêtes A et AAAA traditionnelles lorsqu’une demande est effectuée via un DNS non sécurisé. N’a aucun effet sur Secure DNS qui accepte toujours des types supplémentaires. La valeur par défaut est true.
Configure la résolution de l’hôte (DNS et DNS-over-HTTPS). Par défaut, les résolveurs suivants seront utilisés, dans cet ordre :
- DNS-over-HTTPS, si le fournisseur DNS le prend en charge, puis
- le résolveur intégré (activé sur macOS uniquement par défaut), puis
- le résolveur du système (p. ex.
getaddrinfo
).
Cela peut être configuré pour restreindre l’utilisation de DNS non chiffrés (secureDnsMode: "secure"
), ou désactiver DNS-over-HTTPS (secureDnsMode: « off »
). Il est également possible d’activer ou de désactiver le résolveur intégré.
Pour désactiver le DNS non sécurisé, vous pouvez spécifier un secureDnsMode
de "secure"
. Si vous procédez ainsi , vous devez vous assurer de fournir une liste de serveurs DNS-over-HTTPS à utiliser, dans le cas où la configuration DNS de l’utilisateur n’inclut pas un fournisseur qui prend en charge DoH.
const { app } = require('electron')
app.whenReady().then(() => {
app.configureHostResolver({
secureDnsMode: 'secure',
secureDnsServers: [
'https://cloudflare-dns.com/dns-query'
]
})
})
Cette API doit être appelée après l'émission de l'événement ready
.
app.disableHardwareAcceleration()
Désactive l'accélération matérielle pour l'application courante.
Cette méthode peut seulement être appelée avant que app soit prêt.
app.disableDomainBlockingFor3DAPIs()
Par défaut, Chromium désactive les API 3D (par exemple WebGL) jusqu’au redémarrage par domaine si les processus GPU se bloquent trop fréquemment. Cette fonction désactive ce comportement.
Cette méthode peut seulement être appelée avant que app soit prêt.
app.getAppMetrics()
Retourne ProcessMetric[]qui est un tableau d'objets de type ProcessMetric
correspondant aux statistiques d'usage de la mémoire et du processeur par chacun des processus associés à l'application.
app.getGPUFeatureStatus()
Retourne GPUFeatureStatus - Le Graphics Feature Status de chrome://gpu/
.
Note : Cette information n'est utilisable qu'après l'émission de l'événement gpu-info-update
.
app.getGPUInfo(infoType)
infoType
string - Les valeurs possibles sontbasic
etcomplete
.
Retourne Promise<unknown>
Si infoType
vaut complete
: La Promise est remplie avec Object
contenant toutes les informations sur le GPU, comme pour l'objet GPUInfo de Chromium. Cela inclut les informations de version et driver montrées sur la page chrome://gpu
.
Si infoType
vaut basic
: La Promise est remplie avec Object
contenant moins d'attributs que si l'on utilise complete
. Voilà un exemple de réponse basique :
{
auxAttributes:
{
amdSwitchable: true,
canSupportThreadedTextureMailbox: false,
directComposition: false,
directRendering: true,
glResetNotificationStrategy: 0,
inProcessGpu: true,
initializationTime: 0,
jpegDecodeAcceleratorSupported: false,
optimus: false,
passthroughCmdDecoder: false,
sandboxed: false,
softwareRendering: false,
supportsOverlays: false,
videoDecodeAcceleratorFlags: 0
},
gpuDevice:
[{ active: true, deviceId: 26657, vendorId: 4098 },
{ active: false, deviceId: 3366, vendorId: 32902 }],
machineModelName: 'MacBookPro',
machineModelVersion: '11.5'
}
L'utilisation de basic
sera à privilégier lorsque seules les informations de base comme vendorId
ou deviceId
sont nécessaires.
app.setBadgeCount([count])
Linux macOS
count
Integer (facultatif) - Si une valeur est fournie, le badge prend celle-ci, sinon, sur macOS, cela affiche un point blanc (e. . nombre de notifications inconnu). Sous Linux, si aucune valeur n'est fournie, le badge ne s'affichera pas.
Returns boolean
- Si l'appel a réussi.
Définit le badge de compteur pour l'application actuelle. Définir le nombre à 0
masquera le badge .
Sur macOS, il s'affiche sur l'icône du dock. Sous Linux, il ne fonctionne que pour le lanceur Unity.
Remarque : Le lanceur Unity nécessite un fichier .desktop
pour fonctionner. Pour plus d’informations, veuillez lire la documentation d’intégration d'Unity.
Remarque : Sous macOS, vous devez vous assurer que votre application dispose de l’autorisation pour afficher les notifications pour que cette méthode fonctionne.
app.getBadgeCount()
Linux macOS
Retourne Integer
- Valeur actuelle affichée sur le badge du compteur.
app.isUnityRunning()
Linux
Retourne boolean
- Indique si l'environnement de bureau actuel est le lanceur Unity.
app.getLoginItemSettings([options])
macOS Windows
Si vous avez fourni des options path
et args
à app.setLoginItemSettings
, vous devez passer les mêmes arguments ici pour que openAtLogin
soit défini correctement.
Retourne Object
:
openAtLogin
boolean -true
indique si l'application est configurée pour s'ouvrir à la connexion.openAsHidden
boolean macOS Deprecated -true
if the app is set to open as hidden at login. This does not work on macOS 13 and up.wasOpenedAtLogin
boolean macOS -true
if the app was opened at login automatically.wasOpenedAsHidden
boolean macOS Deprecated -true
if the app was opened as a hidden login item. Cela indique que l'application ne devrait pas ouvrir la moindre fenêtre au démarrage. This setting is not available on MAS builds or on macOS 13 and up.restoreState
boolean macOS Deprecated -true
if the app was opened as a login item that should restore the state from the previous session. This indicates that the app should restore the windows that were open the last time the app was closed. This setting is not available on MAS builds or on macOS 13 and up.status
string macOS - can be one ofnot-registered
,enabled
,requires-approval
, ornot-found
.executableWillLaunchAtLogin
boolean Windows -true
si l’application est configurée pour s’ouvrir à la connexion et que sa clé d’exécution n’est pas désactivée. Ceci diffère deopenAtLogin
car il ignore l’optionargs
, cette propriété sera true si l’exécutable donné est lancé lors de la connexion avec **n'importe quels ** arguments.launchItems
Object[] Windowsname
chaîne Windows - nom d’une entrée de Registre.path
string_Windows_ : exécutable d’une application qui correspond à une entrée de Registre.args
string[] Windows - les arguments de ligne de commande à transmettre à l’exécutable.scope
chaîne Windows - soituser
soitmachine
. Indique si l’entrée de Registre est sousHKEY_CURRENT USER
ouHKEY_LOCAL_MACHINE
.enabled
booléen Windows -true
si la clé de Registre de l’application est approuvée au démarrage et s’affiche donc commeenabled
dans le Gestionnaire des tâches et les paramètres Windows.
app.setLoginItemSettings(settings)
macOS Windows
settings
ObjectopenAtLogin
booléen (facultatif) -true
pour ouvrir l’application lors de la connexion,false
pour supprimer l’application en tant qu’élément de connexion. Par défaut,false
.openAsHidden
boolean (optional) macOS Deprecated -true
to open the app as hidden. Par défaut,false
. The user can edit this setting from the System Preferences soapp.getLoginItemSettings().wasOpenedAsHidden
should be checked when the app is opened to know the current value. This setting is not available on MAS builds or on macOS 13 and up.type
string (optional) macOS - The type of service to add as a login item. Valeur par défaut,mainAppService
. Only available on macOS 13 and up.mainAppService
- The primary application.agentService
- The property list name for a launch agent. The property list name must correspond to a property list in the app’sContents/Library/LaunchAgents
directory.daemonService
string (optional) macOS - The property list name for a launch agent. The property list name must correspond to a property list in the app’sContents/Library/LaunchDaemons
directory.loginItemService
string (optional) macOS - The property list name for a login item service. The property list name must correspond to a property list in the app’sContents/Library/LoginItems
directory.
serviceName
string (optional) macOS - The name of the service. Required iftype
is non-default. Only available on macOS 13 and up.path
string (facultatif) Windows - L'exécutable à lancer à la connexion. Valeur par défaut,process.execPath
.args
string[] (facultatif) Windows - Arguments de ligne de commande à transmettre à l’exécutable. Par défaut, un tableau vide. Prenez soin d’envelopper les chemins dans des guillemets.enabled
booléen (facultatif) Windows -true
modifiera la clé de Registre approuvée au démarrage etvalide/ invalide
l’application dans le Gestionnaire des tâches et les paramètres Windows.true
par défaut.name
string (facultatif) Windows - nom de la valeur à écrire dans le registre. La valeur par défaut est l'AppUserModelId() de l’application.
Configurer les paramètres de l'application lors de l'ouverture de session.
Pour travailler avec l'autoUpdater
d'Electron sous Windows et qui utilise Squirrel, vous aurez besoin de configurer le chemin de lancement vers Update.exe et de passer les arguments qui spécifient le nom de votre application. Par exemple :
const { app } = require('electron')
const path = require('node:path')
const appFolder = path.dirname(process.execPath)
const updateExe = path.resolve(appFolder, '..', 'Update.exe')
const exeName = path.basename(process.execPath)
app.setLoginItemSettings({
openAtLogin: true,
path: updateExe,
args: [
'--processStart', `"${exeName}"`,
'--process-start-args', '"--hidden"'
]
})
For more information about setting different services as login items on macOS 13 and up, see SMAppService
.
app.isAccessibilitySupportEnabled()
macOS Windows
Retourne un boolean
- true
si le support d'accessibilité de Chrome est activé et sinon false
. Cette API retournera true
si des technologies d'assistance, comme les lecteurs d'écran, sont détectées. Voir https://www.chromium.org/developers/design-documents/accessibility pour de plus amples informations.
app.setAccessibilitySupportEnabled(enabled)
macOS Windows
enabled
boolean - Active ou désactive le rendu de l'arbre d'accessibilité
Active manuellement le support de l'accessibilité de Chrome, permettant de mettre à disposition des utilisateurs les commutateurs d'accessibilité dans les paramètres de l'application. Consultez les documents d'accessibilité de Chromium pour plus de détails. Désactivé par défaut.
Cette API doit être appelée après l'émission de l'événement ready
.
Remarque : Le rendu de l'arborescence d'accessibilité peut affecter significativement les performances de votre application. Il ne doit pas être activé par défaut.
app.showAboutPanel()
Affichez les options du panneau À propos de l’application. Ces options peuvent être modifiées en utilisant app.setAboutPanelOptions(options)
. Cette fonction s'exécute de manière asynchrone.
app.setAboutPanelOptions(options)
- Objet
options
applicationName
string (optional) - Nom de l'application.applicationVersion
string (optional) - Version de l'application.copyright
string (optional) - Information copyright.version
string (facultatif) macOS - Le numéro de version de l'application.crédits
string (facultatif) macOS Windows - Crédits.auteurs
string[] (facultatif) Linux - Liste des auteurs d'applications.site web
string (facultatif) Linux - Le site web de l'application.iconPath
string (facultatif) Linux Windows - Chemin vers l'icône de l'application au format de fichier JPEG ou PNG. Sous Linux, sera affiché en 64x64 pixels tout en conservant le ratio. Sous Windows, un PNG 48x48 donnera la meilleure qualité visuelle.
Configure les options de la fenêtre "À propos de". Sous macOS, cela remplacera les valeurs définies dans le fichier .plist
de l’application. Voir la documentation Apple pour de plus amples informations. Sous Linux, les valeurs doivent être définies pour être affichées ; il n'y a pas de valeur par défaut.
Si vous ne définissez pas credits
mais que vous souhaitez quand même les afficher dans votre app, AppKit cherchera un fichier nommé "Credits.html", "Credits.rtf", et "Credits.rtfd", dans cet ordre, dans le bundle retourné par la méthode la classe main de NSBundle. Le premier fichier trouvé est utilisé, et si aucun n'est trouvé, la zone info est laissée vide. Consultez la documentation Apple pour plus d'informations.
app.isEmojiPanelSupported()
Retourne boolean
- indique si la version actuelle de l'OS autorise ou non les sélecteurs natifs d'émojis.
app.showEmojiPanel()
macOS Windows
Montrer le sélecteur d'émoji natif de la plateforme.
app.startAccessingSecurityScopedResource(bookmarkData)
MAS
bookmarkData
string - Les données de marque-page encodées en base64 renvoyées par les méthodesdialog.showOpenDialog
oùdialog.showSaveDialog
.
Retourne une Function
- Cette fonction doit être appelée une fois que vous avez fini d'accéder au fichier de sécurité utilisé. Si vous ne vous souvenez pas d’arrêter d’accéder au signet, les ressources du noyau seront divulguées et votre application perdra sa capacité à atteindre complètement l’extérieur du bac à sable, jusqu’à ce que votre application soit redémarrée.
const { app, dialog } = require('electron')
const fs = require('node:fs')
let filepath
let bookmark
dialog.showOpenDialog(null, { securityScopedBookmarks: true }).then(({ filePaths, bookmarks }) => {
filepath = filePaths[0]
bookmark = bookmarks[0]
fs.readFileSync(filepath)
})
// ... restart app ...
const stopAccessingSecurityScopedResource = app.startAccessingSecurityScopedResource(bookmark)
fs.readFileSync(filepath)
stopAccessingSecurityScopedResource()
Commence à accéder à une ressource étendue de sécurité. Avec cette méthode, les applications Electron qui sont empaquetées pour le Mac App Store peuvent atteindre en dehors de leur sandbox pour accéder aux fichiers choisis par l'utilisateur. Voir la documentation de Apple pour une description du fonctionnement de ce système.
app.enableSandbox()
Active le mode "full sandbox" dans l'application. Cela signifie que tous les moteurs de rendu seront lancés en bac à sable, quelle que soit la valeur du drapeau sandbox
dans WebPreferences
.
Cette méthode peut seulement être appelée avant que app soit prêt.
app.isInApplicationsFolder()
macOS
Retourne boolean
- Si l'application est actuellement en cours d'exécution à partir du dossier d'applications du système . A utiliser en combinaison avec app.moveToApplicationsFolder()
app.moveToApplicationsFolder([options])
macOS
Retourne boolean
- Si le déplacement a réussi. Veuillez noter que si le déplacement réussit, votre application se fermera et sera relancée.
Aucune boîte de dialogue de confirmation ne sera présentée par défaut. Si vous souhaitez que l’utilisateur confirme l’opération, vous pouvez le faire à l’aide de l’API dialog
.
NOTE: Cette méthode renvoie des erreurs si quelque chose d'autre qu'une erreur utilisateur fait échouer le déplacement. Par exemple, si l'utilisateur annule la boîte de dialogue d'autorisation, cette méthode renvoie false. Si nous ne réussissons pas à effectuer la copie, alors cette méthode lancera une erreur. Le message contenu dans l'erreur devrait être suffisamment informatif pour que vous puissiez déterminer précisément quel est le problème.
Par défaut, si une application du même nom que celle qui a été déplacée existe dans le répertoire Applications et n' est pas en cours d'exécution, l'application existante sera mise à la corbeille et l'application active sera déplacée à sa place. Si elle est en cours d'exécution, l'application en cours préexistante prendra le focus et l'application précédemment active se fermera. Ce comportement peut être modifié en fournissant le gestionnaire de conflits facultatif, où le booléen retourné par le gestionnaire détermine si le conflit de déplacement est résolu avec le comportement par défaut. c'est-à-dire que retourner false
ne garantira aucune action supplémentaire, retourner true
entraînera le comportement par défaut et la méthode continuera.
Par exemple :
const { app, dialog } = require('electron')
app.moveToApplicationsFolder({
ConftHandler: (conflictType) => {
if (conflictType === 'exiss') {
return dialog.showMessageBoxSync({
type: 'question',
boutons: ['Arrêter le déplacement', 'Continuer le déplacement'],
defaultId: 0,
message : 'Une application avec ce nom existe déjà'
}) === 1
}
}
})
Cela signifierait que si une application existe déjà dans le répertoire de l'utilisateur, si l'utilisateur choisit de "Continuer le déplacement", alors la fonction continuera avec son comportement par défaut et l'application existante sera mise à la corbeille et l'application active sera déplacée à sa place.
app.isSecureKeyboardEntryEnabled()
macOS
Retourne boolean
- si Secure Keyboard Entry
est activé.
Par défaut cette API retournera false
.
app.setSecureKeyboardEntryEnabled(enabled)
macOS
enabled
booléen - Activer ou désactiverSecure Keyboard Entry
Définis si Secure Keyboard Entry
est activée dans votre application.
En utilisant cette API, on peut éviter que des informations importantes telles que le mot de passe et d’autres informations sensibles soient interceptées par d’autres processus.
Consultez la documentation d’Apple pour plus détails.
Note: Activez Secure Keyboard Entry
uniquement lorsque cela est nécessaire et désactivez-le quand il n'est plus nécessaire.
app.setProxy(config)
config
ProxyConfig
Retourne une Promise<void>
- Elle se résout lorsque l'opération de sélection de proxy est terminée.
Sets the proxy settings for networks requests made without an associated Session. Currently this will affect requests made with Net in the utility process and internal requests made by the runtime (ex: geolocation queries).
This method can only be called after app is ready.
app.resolveProxy(url)
url
URL
Returns Promise<string>
- Resolves with the proxy information for url
that will be used when attempting to make requests using Net in the utility process.
Propriétés
app.accessibilitySupportEnabled
macOS Windows
Propriété de type boolean
qui est true
lorsque le support d'accessibilité de Chrome est activé et false
si il ne l'est pas. Cette propriété sera true
si l'utilisation de technologies d'assistance, telles que les lecteurs d'écran, a été détectée. Définir cette propriété à true
active manuellement la prise en charge de l'accessibilité de Chrome, permettant aux développeurs d'exposer le basculement d'accessibilité aux utilisateurs dans les paramètres de l'application.
Voir la documentation sur l'accessibilité de Chromium pour plus de détails. Désactivé par défaut.
Cette API doit être appelée après l'émission de l'événement ready
.
Remarque : Le rendu de l'arborescence d'accessibilité peut affecter significativement les performances de votre application. Il ne doit pas être activé par défaut.
app.applicationMenu
Une propriété Menu | null
qui renvoie Menu
si on a été défini et null
autrement. Les utilisateurs peuvent passer un Menu pour définir cette propriété.
app.badgeCount
Linux macOS
Propriété de type Integer
qui retourne le nombre de badges pour l'application courante. La valeur 0
masquera le badge.
Sous macOS, paramétrer ceci avec n'importe quel entier non nul l'affichera sur l'icône du dock. Sous Linux, cette propriété ne fonctionne que pour le lanceur Unity.
Remarque : Le lanceur Unity nécessite un fichier .desktop
pour fonctionner. Pour plus d’informations, veuillez lire la documentation d’intégration d'Unity.
Remarque : Sous macOS, vous devez vous assurer que votre application a la permission d'afficher des notifications pour que cette propriété soit prise en compte.
app.commandLine
Lecture seule
Un objet CommandLine
qui vous permet de lire et de manipuler les arguments de ligne de commande que Chromium utilise.
app.dock
macOS Readonly
Un objet Dock
| undefined
qui vous permet d'effectuer des actions sur l'icône de votre application dans le dock de l'utilisateur sous macOS.
app.isPackaged
Lecture seule
Une propriété boolean
qui renvoie true
si l'application est packagée, false
sinon. Pour de nombreuses applications, cette propriété peut être utilisée pour distinguer les environnements de développement et de production.
nom de l'application
Une propriété string
qui indique le nom de l'application courante, qui est le nom dans le fichier package.json
de l'application.
Habituellement, le champ name
de package.json
est un nom court en minuscule, selon la spécification des modules npm. Vous devriez dans la plupart des cas renseigner également un champ productName
, qui contient le nom complet et capitalisé de votre application, et qui sera préféré à name
par Electron.
format@@0 app.userAgentFallback
Une string
qui est la chaîne d'agent utilisateur que Electron utilisera comme solution de repli global.
C'est l'agent utilisateur qui sera utilisé quand aucun agent utilisateur n'est défini au niveau webContents
ou session
. Il est utile pour s'assurer que l'ensemble de votre application a le même agent utilisateur. Vous devez définir une valeur personnalisée dès que possible dans l'initialisation de votre application pour vous assurer que votre valeur de remplacement est utilisée.
app.runningUnderARM64Translation
Lecture seule macOS Windows
Propriété de type boolean
qui renvoie true
lorsque l'application fonctionne actuellement sous un traducteur ARM64 (comme l'environnement de traduction Rosetta sous macOS ou WOW sous Windows).
Vous pouvez utiliser cette propriété pour demander aux utilisateurs de télécharger la version arm64 de votre application alors qu'ils exécutent à tort la version x64 sous Rosetta ou WOW.