An accessible talking clock application designed for visually impaired users, built with wxPython for native Windows accessibility support.
- Screen Reader Accessible: Fully compatible with NVDA, JAWS, and Windows Narrator
- Customizable Chimes: Hourly, half-hour, and quarter-hour chime options
- Clock Packs: Switchable clock sound themes (Default, Digital, Westminster)
- Text-to-Speech: Announces time on demand with customizable voice settings
- Quiet Hours: Automatically silence chimes during specified times
- Portable Mode: Run from USB drive without installation
┌─────────────────────────────────────────┐
│ AccessiClock _ □ X│
├─────────────────────────────────────────┤
│ Current Time: │
│ ┌─────────────────────────────────────┐ │
│ │ 3:45:30 PM │ │
│ └─────────────────────────────────────┘ │
│ Ready. Use Tab to navigate controls. │
│ │
│ Clock: [Default ▼] │
│ Volume: 50% [Change Volume] │
│ │
│ Chime Intervals: │
│ [✓] Hourly chimes │
│ [ ] Half-hour chimes │
│ [ ] Quarter-hour chimes │
│ │
│ [Test Chime] [Announce Time] [Settings] │
└─────────────────────────────────────────┘
- Python 3.10 or higher
- Windows 10/11 (primary), Linux/macOS (limited support)
# Clone the repository
git clone https://github.com/orinks/AccessiClock.git
cd AccessiClock
# Create virtual environment
python -m venv .venv
.venv\Scripts\activate # Windows
# or: source .venv/bin/activate # Linux/macOS
# Install dependencies
pip install -e .
# Run the application
python -m accessiclockpip install -e ".[dev]"| Key | Action |
|---|---|
| Space | Announce current time |
| F5 | Test chime sound |
| Tab | Navigate between controls |
| Ctrl+, | Open settings |
| Alt+F4 | Exit application |
AccessiClock includes three built-in clock packs:
- Default: Pleasant melodic chimes
- Digital: Simple electronic beeps
- Westminster: Classic Westminster-style chimes
You can also import custom clock packs or create your own.
A clock pack is a folder containing:
my_clock_pack/
├── clock.json # Manifest file (required)
├── hour.wav # Hourly chime sound
├── half_hour.wav # Half-hour chime sound
├── quarter_hour.wav # Quarter-hour chime sound
├── preview.wav # Preview/test sound
└── startup.wav # Startup sound (optional)
Example clock.json:
{
"name": "My Custom Clock",
"author": "Your Name",
"description": "A custom clock pack.",
"version": "1.0.0",
"sounds": {
"hour": "hour.wav",
"half_hour": "half_hour.wav",
"quarter_hour": "quarter_hour.wav",
"preview": "preview.wav"
}
}Settings are stored in:
- Windows:
%APPDATA%\AccessiClock\config.json - Linux:
~/.config/AccessiClock/config.json - Portable mode:
./data/config.json
# Run all tests
PYTHONPATH=src pytest tests/ -v
# Run with coverage
PYTHONPATH=src pytest tests/ --cov=accessiclockAccessiClock/
├── src/accessiclock/
│ ├── __init__.py
│ ├── app.py # Main application class
│ ├── main.py # Entry point
│ ├── constants.py # Application constants
│ ├── paths.py # Path management
│ ├── audio/
│ │ ├── player.py # Audio playback
│ │ └── tts_engine.py # Text-to-speech
│ ├── services/
│ │ ├── clock_service.py # Chime scheduling
│ │ └── clock_pack_loader.py # Clock pack management
│ ├── clocks/ # Built-in clock packs
│ │ ├── default/
│ │ ├── digital/
│ │ └── westminster/
│ └── ui/
│ ├── main_window.py # Main window
│ └── dialogs/ # Settings & clock manager
├── tests/ # Unit tests
├── scripts/ # Utility scripts
└── pyproject.toml # Project configuration
python scripts/generate_sounds.pyAccessiClock is designed with accessibility as a primary goal:
- All controls are keyboard accessible
- Logical tab order for screen reader navigation
- Status messages announced via accessible labels
- High contrast support (uses system colors)
- Large, readable clock display
- Native Windows widgets for automatic accessibility support
MIT License - see LICENSE file for details.
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Write tests for new functionality
- Ensure all tests pass
- Submit a pull request
- Report issues on GitHub Issues
- For accessibility feedback, please mention your screen reader and version