NotiVR Docs

Building a Pack

Developing a custom pack is simple, to get started all you need is a text editor and some icons.

Create a pack folder

Start with this layout:

my-pack/
  pack.json
  icons/
    my-icon.png
  sounds/
    my-sound.ogg

Your folder name is the local pack ID. Use only letters, numbers, hyphens, and underscores.

Add any PNG icons you want to use, along with any OGG notification sounds.

Your pack needs at least 1 icon OR sound file.

Create pack.json

Every pack needs a manifest at the root, this tells NotiVR what is in your pack and who made it.

Here is an example of a pack that adds a custom icon and sound for Discord.

{
  "SchemaVersion": 1,
  "Name": "My Pack",
  "Author": "Your Name",
  "Description": "Icons and sounds for my favourite apps",
  "Version": "1.0.0",
  "Icons": [
    {
      "Android": ["com.discord"],
      "iOS": ["com.hammerandchisel.discord"],
      "PNG": "icons/my-icon.png"
    }
  ],
  "Sounds": {
    "ding": {
      "Name": "Ding",
      "Ogg": "sounds/my-sound.ogg",
      "Android": ["com.discord"],
      "iOS": ["com.hammerandchisel.discord"]
    }
  }
}

Alternatively if I'm just adding icons, no sounds, keep sounds as an empty object.

{
  "SchemaVersion": 1,
  "Name": "My Pack",
  "Author": "Your Name",
  "Description": "Icons for my favourite apps",
  "Version": "1.0.0",
  "Icons": [
    {
      "Android": ["com.discord"],
      "iOS": ["com.hammerandchisel.discord"],
      "PNG": "icons/my-icon.png"
    }
  ],
  "Sounds": {}
}

The Android and iOS arrays tell NotiVR which apps this icon belongs to. In this example, if you receive a notification from com.discord on Android or com.hammerandchisel.discord on iOS, this custom icon will be used instead of the default.

You need at least one of these fields to be populated, otherwise NotiVR will not use this icon.

For more information on how to configure your icons and sounds, see the pack.json reference.

Install the local pack

Copy the whole pack folder into:

{NotiVR Install Location}/assets/packs/

So if your pack is named my-pack, the manifest should end up at:

{NotiVR Install Location}/assets/packs/my-pack/pack.json

Test in NotiVR

Open NotiVR and go to the Packs page.

You should see your pack in the list. Clicking on it will open a dialog showing you the icons and sounds available in your pack.

If the pack does not appear, click the 'Refresh' button in the top right of the Packs page.

If that still doesn't work, check:

  • pack.json exists at the pack root
  • SchemaVersion is 1
  • image paths in PNG fields point to .png files
  • sound paths in Ogg fields point to .ogg files
  • the pack folder name uses a valid ID

Priority and overrides

There may be cases where a user has multiple packs installed that provide the same icon or sound. In this case, NotiVR will use the pack that is higher in the list.

You can drag the packs up and down in the list to change their priority. The higher the pack is in the list, the higher its priority is.

Developer tips

  • Finding the package or bundle ID for each app can be tricky. Using Developer Mode can make this process easier.
  • Make sure your icons are 512x512 pixels or less. 128x128 is recommended.
  • Sounds must be less than 10 seconds long. Less than 2 seconds is recommended.

Next Steps

Once your pack works locally and you've tested it, you can publish it to the Steam Workshop.

See Workshop Publishing.

On this page