Updated README.
This commit is contained in:
		
							
								
								
									
										167
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										167
									
								
								README.md
									
									
									
									
									
								
							@@ -115,12 +115,177 @@ yay -S python-plyer
 | 
			
		||||
- Accessible names and descriptions for all controls
 | 
			
		||||
- Thread expansion/collapse with audio feedback
 | 
			
		||||
 | 
			
		||||
## Sound Pack Creation and Installation
 | 
			
		||||
 | 
			
		||||
### Creating Custom Sound Packs
 | 
			
		||||
 | 
			
		||||
Sound packs in Bifrost allow you to customize the audio feedback for different events. Each sound pack consists of a directory containing audio files and a configuration file.
 | 
			
		||||
 | 
			
		||||
#### Sound Pack Structure
 | 
			
		||||
 | 
			
		||||
A sound pack must contain:
 | 
			
		||||
1. **pack.json** - Configuration file with metadata and sound mappings
 | 
			
		||||
2. **Audio files** - WAV or OGG files for each sound event
 | 
			
		||||
 | 
			
		||||
#### Required Sound Events
 | 
			
		||||
 | 
			
		||||
Your sound pack should include audio files for these events:
 | 
			
		||||
- `private_message` - Direct message received
 | 
			
		||||
- `mention` - User mentioned in post
 | 
			
		||||
- `boost` - Post boosted/reblogged
 | 
			
		||||
- `reply` - Reply to user's post
 | 
			
		||||
- `post_sent` - User successfully posted
 | 
			
		||||
- `timeline_update` - New posts in timeline
 | 
			
		||||
- `notification` - General notification
 | 
			
		||||
- `startup` - Application started (optional)
 | 
			
		||||
- `shutdown` - Application closing (optional)
 | 
			
		||||
- `expand` - Thread expanded (optional)
 | 
			
		||||
- `collapse` - Thread collapsed (optional)
 | 
			
		||||
- `success` - General success feedback (optional)
 | 
			
		||||
- `error` - Error occurred (optional)
 | 
			
		||||
 | 
			
		||||
#### Creating pack.json
 | 
			
		||||
 | 
			
		||||
Create a `pack.json` file with this format:
 | 
			
		||||
 | 
			
		||||
```json
 | 
			
		||||
{
 | 
			
		||||
  "name": "My Custom Pack",
 | 
			
		||||
  "description": "A description of your sound pack",
 | 
			
		||||
  "author": "Your Name",
 | 
			
		||||
  "version": "1.0",
 | 
			
		||||
  "sounds": {
 | 
			
		||||
    "private_message": "dm.wav",
 | 
			
		||||
    "mention": "mention.ogg",
 | 
			
		||||
    "boost": "boost.wav",
 | 
			
		||||
    "reply": "reply.wav",
 | 
			
		||||
    "post_sent": "sent.wav",
 | 
			
		||||
    "timeline_update": "update.wav",
 | 
			
		||||
    "notification": "notification.wav",
 | 
			
		||||
    "startup": "startup.wav",
 | 
			
		||||
    "shutdown": "shutdown.wav",
 | 
			
		||||
    "expand": "expand.wav",
 | 
			
		||||
    "collapse": "collapse.wav",
 | 
			
		||||
    "success": "success.wav",
 | 
			
		||||
    "error": "error.wav"
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### Audio File Requirements
 | 
			
		||||
 | 
			
		||||
- **Formats**: WAV or OGG Vorbis only
 | 
			
		||||
- **Size**: Maximum 10MB per file
 | 
			
		||||
- **Duration**: Keep sounds short (1-3 seconds recommended)
 | 
			
		||||
- **Quality**: 44.1kHz, 16-bit recommended for WAV files
 | 
			
		||||
 | 
			
		||||
#### Example Directory Structure
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
MyPack/
 | 
			
		||||
├── pack.json
 | 
			
		||||
├── dm.wav
 | 
			
		||||
├── mention.ogg
 | 
			
		||||
├── boost.wav
 | 
			
		||||
├── reply.wav
 | 
			
		||||
├── sent.wav
 | 
			
		||||
├── update.wav
 | 
			
		||||
├── notification.wav
 | 
			
		||||
├── startup.wav
 | 
			
		||||
├── shutdown.wav
 | 
			
		||||
├── expand.wav
 | 
			
		||||
├── collapse.wav
 | 
			
		||||
├── success.wav
 | 
			
		||||
└── error.wav
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Installing Sound Packs
 | 
			
		||||
 | 
			
		||||
#### Method 1: Manual Installation
 | 
			
		||||
 | 
			
		||||
1. Create your sound pack directory structure as shown above
 | 
			
		||||
2. Copy the directory to `~/.local/share/bifrost/sounds/`
 | 
			
		||||
3. Restart Bifrost or go to Settings → Audio to select the new pack
 | 
			
		||||
 | 
			
		||||
#### Method 2: ZIP Installation
 | 
			
		||||
 | 
			
		||||
1. **Create ZIP file correctly**: 
 | 
			
		||||
   - Navigate to your sound pack directory
 | 
			
		||||
   - Select ALL files (pack.json and audio files)
 | 
			
		||||
   - Create a ZIP file containing just the files, NOT the folder
 | 
			
		||||
   - **Important**: The ZIP should contain `pack.json` at the root, not `MyPack/pack.json`
 | 
			
		||||
 | 
			
		||||
2. **Install via Soundpack Manager**:
 | 
			
		||||
   - Open Bifrost
 | 
			
		||||
   - Press **Ctrl+Alt+S** to open Soundpack Manager
 | 
			
		||||
   - Click "Install from ZIP file"
 | 
			
		||||
   - Select your ZIP file
 | 
			
		||||
   - The soundpack will be validated and installed automatically
 | 
			
		||||
 | 
			
		||||
#### Method 3: Repository Installation
 | 
			
		||||
 | 
			
		||||
If you have access to a soundpack repository:
 | 
			
		||||
 | 
			
		||||
1. Open Soundpack Manager (**Ctrl+Alt+S**)
 | 
			
		||||
2. Browse available soundpacks from configured repositories  
 | 
			
		||||
3. Click "Install" next to the desired soundpack
 | 
			
		||||
4. The soundpack will download and install automatically
 | 
			
		||||
 | 
			
		||||
### ZIP File Creation Tips
 | 
			
		||||
 | 
			
		||||
**Correct ZIP structure:**
 | 
			
		||||
```
 | 
			
		||||
soundpack.zip
 | 
			
		||||
├── pack.json
 | 
			
		||||
├── dm.wav
 | 
			
		||||
├── mention.ogg
 | 
			
		||||
└── other_audio_files...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Incorrect ZIP structure (will fail):**
 | 
			
		||||
```
 | 
			
		||||
soundpack.zip
 | 
			
		||||
└── MyPack/
 | 
			
		||||
    ├── pack.json
 | 
			
		||||
    ├── dm.wav
 | 
			
		||||
    └── other_files...
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Common Commands for ZIP Creation
 | 
			
		||||
 | 
			
		||||
**Linux/macOS:**
 | 
			
		||||
```bash
 | 
			
		||||
cd MyPack
 | 
			
		||||
zip -r ../MyPack.zip *
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
**Windows (PowerShell):**
 | 
			
		||||
```powershell
 | 
			
		||||
cd MyPack
 | 
			
		||||
Compress-Archive -Path * -DestinationPath ..\MyPack.zip
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Troubleshooting
 | 
			
		||||
 | 
			
		||||
- **"Invalid filename in archive"**: Ensure filenames only contain letters, numbers, dots, dashes, and underscores
 | 
			
		||||
- **"No valid audio files found"**: Check that you have WAV or OGG files and they're properly formatted
 | 
			
		||||
- **"Invalid pack.json format"**: Verify your JSON syntax and required fields (name, sounds)
 | 
			
		||||
- **Installation fails**: Make sure you zipped the files themselves, not the containing folder
 | 
			
		||||
 | 
			
		||||
### Sound Pack Security
 | 
			
		||||
 | 
			
		||||
Bifrost's soundpack system includes security measures:
 | 
			
		||||
- Maximum file sizes (10MB per file, 50MB total download)
 | 
			
		||||
- File type validation (only WAV/OGG audio files allowed)
 | 
			
		||||
- Path sanitization (prevents directory traversal attacks)  
 | 
			
		||||
- Repository validation (HTTPS required for remote repositories)
 | 
			
		||||
 | 
			
		||||
## Contributing
 | 
			
		||||
 | 
			
		||||
This is a vibe coding project where AI handles implementation. Human contributors can:
 | 
			
		||||
- Test accessibility with different screen readers
 | 
			
		||||
- Suggest features and improvements
 | 
			
		||||
- Create new sound packs
 | 
			
		||||
- Create new sound packs (see Sound Pack Creation section above)
 | 
			
		||||
- Report bugs and usability issues
 | 
			
		||||
 | 
			
		||||
## License
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user