Skip to content
This repository has been archived by the owner on Jan 6, 2022. It is now read-only.

Developer Documentation

Core edited this page Oct 30, 2021 · 10 revisions

Interacting with our electron-store instance

From the Main Process

app.cfg.get(item[, defaultValue]) [Function]

  • item String - The value you want to get from the config
  • defaultValue Bool (Optional) - Gets the default value of an item if the config doesn't exist

Fetches a value from the configuration.


app.cfg.set(key, value) [Function]

  • key String - The configuration value you are aiming to change (I.e. general.discordRPC)
  • value Any - The value you wish to set the config value to. (Must be JSON serializable)

Sets a value from the electron-store configuration.


app.cfg.store [Function]

Fetches the entire electron-store configuration


Read more about what you can do by reading the electron-store documentation.

From the Renderer Process

ipcRenderer.invoke('getStoreValue', item[, defaultValue]) [Function]

  • item String - The value you want to get from the config
  • defaultValue Bool (Optional) - Gets the default value of an item if the config doesn't exist

Fetches a value from the configuration.


ipcRenderer.invoke('setStoreValue', key, value) [Function]

  • key String - The configuration value you are aiming to change (I.e. general.discordRPC)
  • value Any - The value you wish to set the config value to. (Must be JSON serializable)

Sets a configuration value


ipcRenderer.sendSync('getStore') [Function]

Fetches the entire electron-store configuration.


ipcRenderer.sendSync('setStore', store) [Function]

  • store Object - The updated store that you want to set the electron-store configuration to

Custom Plugins on Apple Music Electron

AMEPluginHelper Class Documentation

The AMEPluginHelper class is available with common events and functions to help you develop your plugin, without having to reinvent the wheel. More events and functions are being added as development continues, here are the available class methods:


Start [Event Handler]

Executes once the application and web player has finished loading.


OnNavigation [Event Handler]

Executes when the user navigates different pages of the application or opens context menus.


OnPlaybackStateChanged [Event Handler]

  • status Bool - Playback state, play/pause represented as true/false respectively.
  • name String - Current song name.
  • artwork Object - Contains width, height and url of artwork.
  • playParams Object - Contains the id and kind of media playing.
  • albumName String - Current album name.
  • artistName String - Current song's artist.
  • genreNames Array - Array of Genres of this song.
  • remainingTime Integer - Playback time remaining on current song.
  • durrationInMillis Integer - Duration of the song in milliseconds.
  • startTime Integer - The time in milliseconds (since the UNIX epoch) that the current song started.
  • endTime Integer - The time in milliseconds (since the UNIX epoch) that the current song is expected to end.

Executes when the playback state has changed (new song, play/pause, etc). This event is sent the current playback state attributes. Run MusicKit.getInstance().nowPlayingItem.attributes in the renderer console whilst playing a song to view this object.

OnPlaybackStateChanged(args = {Attributes: null})

OnHide [Event Handler]

Executes when the app is hidden by the user


AddMenuItem(Text, OnClick) [Function]

  • Text String - Your menu item entry text.
  • OnClick Function - The onclick function, sends back the event to your function if defined.

Adds a menu item entry to the 👤 Profile menu

this.AddMenuItem({ Text: "My Text", OnClick: ()=>{ alert("Hello world!") } })
ipcRenderer Messages

We will only document the mainly useful ipcMessages, if you want to know all the ipcMessages that we use, see handler.js


ipcRenderer.send("minimize") [Function]

Minimizes the application.


ipcRenderer.send("maximize") [Function]

Maximizes the application.


ipcRenderer.send("back") [Function]

Navigate back a page.


ipcRenderer.send("resize-window", width, height) [Function]

  • width Integer - Pixels for width.
  • heigh Integer - Pixels for height.

Resize the window.


ipcRenderer.send("set-miniplayer", state) [Function]

  • state Bool - State of the miniplayer

ipcRenderer.send("alwaysOnTop", state) [Function]

  • state Bool - If you want alwaysOnTop disabled/enabled.

ipcRenderer.send("close") [Function]

Close the application.

Clone this wiki locally