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
- Create a new folder with your theme name
- Add a
sound.json
configuration file - Create a
sounds/
directory with your audio files - 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
{
"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:
{
"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:
{
"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:
- Windows: Check Program Files or Program Files (x86)
- macOS: Look in Applications folder
- Linux: Check
/opt/
,/usr/local/bin/
. Runningwhich horizon-electron
might point towards it, as well
Testing Your Theme
- Place your theme folder in the sound themes directory (see Sound Theme Folder Location above for the exact path)
- Restart the application
- Go to
Settings → Notifications → Sound Theme
and select your theme - 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
andsounds/
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.