Skip to content

Commit bd9e8b5

Browse files
committed
feat(project): Initial Pro Audio Config release
Complete audio configuration tool for Linux with: - GTK-based graphical interface - PipeWire and PulseAudio support - Professional audio settings (sample rates, bit depths, buffer sizes) - Secure privilege escalation - Comprehensive documentation and installation
0 parents  commit bd9e8b5

24 files changed

+1951
-0
lines changed

.gitignore

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Generated by Cargo
2+
/target/
3+
**/*.rs.bk
4+
5+
# Remove Cargo.lock from ignore if creating a library, but keep for binaries
6+
Cargo.lock
7+
8+
# These are backup files generated by rustfmt
9+
**/*.rs.bk
10+
11+
# MSVC Windows builds, if you're including Windows support
12+
*.ilk
13+
*.pdb
14+
15+
# Editors buffers
16+
*~
17+
18+
# OS-specific files
19+
.DS_Store
20+
Thumbs.db
21+
22+
# IDE files
23+
.vscode/
24+
.idea/
25+
*.swp
26+
*.swo
27+
28+
# Build artifacts
29+
dist/
30+
pkg/
31+
32+
# Local configuration files
33+
.local/
34+
*.local
35+
36+
# Logs
37+
*.log
38+
39+
# Temporary files
40+
tmp/
41+
temp/

CONTRIBUTING.md

Lines changed: 248 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,248 @@
1+
# Contributing to Pro Audio Config
2+
3+
Thank you for your interest in contributing to Pro Audio Config! This project aims to make professional audio configuration accessible to all Linux users, and we welcome contributions from the community.
4+
5+
## Development Workflow
6+
7+
### Branching Strategy
8+
9+
We use a multi-branch workflow to keep development organized and stable:
10+
11+
- **main**: Always stable and production-ready. Only thoroughly tested changes should be merged here.
12+
- **stage**: Used for integrating, testing, and reviewing new features before they reach `main`. Most pull requests should target this branch.
13+
- **feat/*** (feature branches): Create a new branch from `stage` for each new feature or bugfix. Use clear, descriptive names (e.g., `feat/pipewire-support` or `fix/device-detection`).
14+
15+
### How to Contribute
16+
17+
1. **Update your local repository:**
18+
```bash
19+
git checkout stage
20+
git pull
21+
```
22+
23+
2. **Create a new feature branch:**
24+
```bash
25+
git checkout -b feat/describe-feature
26+
```
27+
28+
3. **Work on your feature or fix.**
29+
Commit changes as needed.
30+
31+
4. **Push your branch and open a Pull Request to `stage`:**
32+
```bash
33+
git push -u origin feat/describe-feature
34+
```
35+
Then open a Pull Request targeting the `stage` branch.
36+
37+
5. **After review and testing, your changes will be merged into `stage`.**
38+
Periodically, stable changes from `stage` will be merged into `main`.
39+
40+
6. **Delete feature branches after merging** to keep the repository tidy.
41+
42+
### Branch Naming
43+
- Use one of the following prefixes for your branch names:
44+
- `feat/describe-feature` (new functionality)
45+
- `fix/describe-fix` (bug corrections)
46+
- `docs/topic` (documentation updates)
47+
- Please keep branch names short and descriptive.
48+
49+
## Commit Message Standards
50+
51+
```
52+
type(scope): brief description [issue #]
53+
54+
[Detailed explanation if needed]
55+
```
56+
57+
**Types:**
58+
- `feat`: New functionality
59+
- `fix`: Bug fixes
60+
- `docs`: Documentation changes
61+
- `style`: Code formatting
62+
- `refactor`: Code restructuring
63+
- `test`: Test-related changes
64+
- `audio`: Audio-specific changes
65+
- `ui`: User interface changes
66+
67+
**Examples:**
68+
```
69+
feat(pipewire): Add high-resolution sample rate support [issue #15]
70+
71+
Implemented 384kHz sample rate configuration for PipeWire.
72+
Includes validation for hardware capability detection.
73+
```
74+
75+
```
76+
fix(device-detection): Handle USB audio device hot-plugging [issue #23]
77+
78+
- Improved device enumeration after hot-plug events
79+
- Added fallback detection for PulseAudio systems
80+
- Fixed race condition in device scanning
81+
```
82+
83+
## Development Setup
84+
85+
### Prerequisites
86+
- Rust 1.70+
87+
- Cargo
88+
- GTK3 development libraries
89+
- PipeWire development headers (optional)
90+
91+
### Getting Started
92+
93+
1. **Fork the repository**
94+
```bash
95+
git clone https://github.com/Peter-L-SVK/TermTalk
96+
cd pro_audio_config
97+
```
98+
99+
2. **Build the project**
100+
```bash
101+
cargo build
102+
```
103+
104+
3. **Run tests**
105+
```bash
106+
cargo test
107+
```
108+
109+
4. **Test the application**
110+
```bash
111+
cargo run
112+
```
113+
114+
## Code Standards
115+
116+
### Rust Code Style
117+
- Follow Rustfmt formatting
118+
- Use clippy for linting
119+
- Document public APIs with /// comments
120+
- Write meaningful commit messages
121+
122+
### GTK/UI Guidelines
123+
- Maintain consistent UI patterns
124+
- Follow GNOME HIG where applicable
125+
- Ensure accessibility considerations
126+
- Test on different GTK themes
127+
128+
### Audio Code Standards
129+
- Handle both PipeWire and PulseAudio gracefully
130+
- Provide clear error messages for audio operations
131+
- Include fallback mechanisms for different systems
132+
- Test across multiple audio hardware configurations
133+
134+
## Testing Requirements
135+
136+
### Running Tests
137+
```bash
138+
# Run all tests
139+
cargo test
140+
141+
# Run specific test suites
142+
cargo test --lib # Library tests
143+
cargo test --tests # Integration tests
144+
cargo test audio # Audio module tests
145+
```
146+
147+
### Test Coverage
148+
- Unit tests for core logic
149+
- Integration tests for audio operations
150+
- UI tests for critical user flows
151+
- Cross-distribution testing encouraged
152+
153+
### Audio System Testing
154+
New features require testing on:
155+
- PipeWire systems (primary)
156+
- PulseAudio systems (fallback)
157+
- Different audio hardware (USB, PCI, HDMI)
158+
- Various Linux distributions
159+
160+
## Versioning Policy
161+
162+
### Release Tagging
163+
- Use semantic versioning (MAJOR.MINOR.PATCH) for GitHub releases
164+
- Follow conventional commit messages for automated versioning
165+
- Major versions (2.0.0) for breaking changes
166+
- Minor versions (1.1.0) for new features
167+
- Patch versions (1.0.1) for bug fixes
168+
169+
## Ways to Contribute
170+
171+
### 🐛 Reporting Bugs
172+
- Check existing issues to avoid duplicates
173+
- Use the bug report template
174+
- Include system information (distribution, audio hardware, PipeWire version)
175+
- Provide steps to reproduce the issue
176+
177+
### 💡 Suggesting Features
178+
- Check the roadmap in README.md first
179+
- Explain the use case and benefits
180+
- Consider if it aligns with the project's goals
181+
182+
### 🔧 Code Contributions
183+
- Fix bugs
184+
- Implement new features
185+
- Improve documentation
186+
- Add tests
187+
- Optimize performance
188+
189+
### 📚 Documentation
190+
- Improve README.md
191+
- Add code comments
192+
- Create tutorials or guides
193+
- Translate documentation
194+
195+
## Pull Request Process
196+
197+
1. **Create a feature branch** from `stage`
198+
2. **Make your changes** with proper commit messages
199+
3. **Write or update tests** as needed
200+
4. **Update documentation** for new features
201+
5. **Ensure all tests pass**
202+
6. **Submit pull request** to `stage` branch with:
203+
- Descriptive title and description
204+
- Reference to related issues
205+
- Screenshots for UI changes
206+
207+
## Areas Needing Help
208+
209+
### High Priority
210+
- Additional audio backend support (JACK)
211+
- Package creation (RPM, DEB, Flatpak)
212+
- Improved error handling and user feedback
213+
214+
### Medium Priority
215+
- Internationalization (i18n)
216+
- Preset configurations
217+
- Advanced audio routing UI
218+
- Setting all available devices in one session
219+
220+
### Documentation
221+
- User guides for different audio setups
222+
- Troubleshooting common issues
223+
- Developer documentation
224+
225+
## Communication
226+
227+
### Discussion Channels
228+
- GitHub Issues for bugs and features
229+
- Pull Requests for code review
230+
- Project discussions for ideas
231+
232+
### Code of Conduct
233+
- Be respectful and inclusive
234+
- Provide constructive feedback
235+
- Help others learn and contribute
236+
237+
## Recognition
238+
239+
Contributors will be:
240+
- Listed in the README.md (if desired)
241+
- Credited in release notes
242+
- Acknowledged in the about dialog
243+
244+
---
245+
246+
Thank you for helping make Linux audio configuration better for everyone! 🎵
247+
248+
*"Stop fighting config files. Start making great audio."*

Cargo.toml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
[package]
2+
name = "pro-audio-config"
3+
version = "0.1.0"
4+
edition = "2021"
5+
6+
[dependencies]
7+
gtk = { version = "0.15", features = ["v3_22"] }
8+
gio = "0.15"
9+
glib = "0.15"
10+
dirs = "5.0"
11+
async-channel = "2.0"
12+
whoami = "1.0"
13+
14+
[dev-dependencies]
15+
mockall = "0.11"

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2025 Peter Leukanič
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

0 commit comments

Comments
 (0)