Skip to content

Sound Theme Creation Guide ​

WARNING

This page is about a feature slated for release in an upcoming version. Adding your own sound themes is currently not supported, but will be soon.

Overview ​

Sound themes allow you to customize the audio experience in Horizon without modifying the source code. This guide will walk you through creating your own sound theme.

Quick Start ​

  1. Create a new folder with your theme name
  2. Add a sound.json configuration file
  3. Create a sounds/ directory with your audio files
  4. Package as a zip/7z archive for submission

File Structure ​

Your sound theme should follow this structure:

your-theme-name/
├── sound.json
└── sounds/
    ├── attention.ogg
    ├── chat.ogg
    ├── login.ogg
    ├── logout.ogg
    ├── modalert.ogg
    ├── newnote.ogg
    ├── silence.ogg
    └── system.ogg

Configuration File (sound.json) ​

The sound.json file defines your theme's metadata and sound mappings.

Basic Template ​

json
{
  "name": "Your Theme Name",
  "version": "1.0.0",
  "description": "A brief description of your theme",
  "author": "Your Name",
  "sounds": {
    "attention": "sounds/attention",
    "chat": "sounds/chat",
    "login": "sounds/login",
    "logout": "sounds/logout",
    "modalert": "sounds/modalert",
    "newnote": "sounds/newnote",
    "silence": "sounds/silence",
    "system": "sounds/system"
  },
  "formats": {
    "preferred": "ogg",
    "fallback": ["mpeg", "wav"]
  }
}

Configuration Fields ​

Metadata ​

  • name: The display name shown in the settings UI
  • version: Theme version (start at "1.0.0")
  • description: Brief description of your theme
  • author: Your name or username

Sound Mappings ​

The sounds object maps each sound event to an audio file (without extension):

  • attention: Played for attention-grabbing events
  • chat: Played when receiving chat messages
  • login: Played when successfully logging in
  • logout: Played when logging out
  • modalert: Played for moderator alerts
  • newnote: Played when receiving new notes/messages
  • silence: A silent audio file (used to mute certain events)
  • system: Played for system messages

Audio Formats ​

  • preferred: The main audio format to use
  • fallback: Array of backup formats in order of preference

Audio Requirements ​

Supported Formats ​

  • OGG Vorbis (recommended for best compatibility)
  • MPEG (mp3 files, widely supported)
  • WAV (uncompressed)

File Naming ​

  • Files should match the keys in your sounds configuration
  • Don't include the file extension in the JSON (e.g., use "attention" not "attention.ogg")
  • The client will automatically look for files with your preferred and fallback extensions

Advanced Features ​

Custom Sound Mappings ​

You can map sounds to different files or reuse the same file for multiple events:

json
{
  "sounds": {
    "attention": "sounds/notification",
    "chat": "sounds/notification",
    "login": "sounds/success",
    "logout": "sounds/success",
    "modalert": "sounds/alert",
    "newnote": "sounds/mail",
    "silence": "sounds/silence",
    "system": "sounds/beep"
  }
}

Multiple Format Support ​

If you want to provide multiple formats, include them in your sounds/ directory:

sounds/
├── attention.ogg
├── attention.mp3
├── attention.wav
├── chat.ogg
├── chat.mp3
└── ...

Minimal Fallback Setup ​

If you only want to provide one format, set an empty fallback array:

json
{
  "formats": {
    "preferred": "ogg",
    "fallback": []
  }
}

Sound Theme Folder Location ​

Sound themes need to be placed in the correct directory within your F-Chat Horizon installation. The location varies depending on your operating system:

Full Path Structure ​

The sound themes are located at:

<installdir>/resources/app.asar.unpacked/sound-themes/

Installation Directory by OS ​

Windows:

  • Usually: C:\Program Files\Horizon\
  • Full path: C:\Program Files\Horizon\resources\app.asar.unpacked\sound-themes\

macOS:

  • Usually: /Applications/Horizon/
  • Full path: /Applications/Horizon/resources/app.asar.unpacked/sound-themes/

Linux:

  • Usually: /opt/Horizon/ or /usr/local/bin/Horizon/
  • Full path: /opt/Horizon/resources/app.asar.unpacked/sound-themes/

Finding Your Installation ​

If you're unsure where F-Chat Horizon is installed:

  1. Windows: Check Program Files or Program Files (x86)
  2. macOS: Look in Applications folder
  3. Linux: Check /opt/, /usr/local/bin/. Running which horizon-electron might point towards it, as well

Testing Your Theme ​

  1. Place your theme folder in the sound themes directory (see Sound Theme Folder Location above for the exact path)
  2. Restart the application
  3. Go to Settings → Notifications → Sound Theme and select your theme
  4. Test different events to ensure all sounds work correctly (Will eventually add buttons to easily test.)

Submitting themes ​

Packaging ​

  • Create a zip or 7z archive containing your theme folder
  • The archive should contain the theme folder with sound.json and sounds/ directory
  • Name your archive clearly (e.g., my-awesome-theme.zip)

Before Submitting ​

  • [ ] Test all sounds in the application
  • [ ] Ensure all required sound files are present
  • [ ] Verify your sound.json syntax is valid

Submission ​

Submit your packaged theme archive in the #sound-theme-submissions channel.

Happy theming! ​