XFingerCrack is a modern, feature-rich typing test application built with Qt6 and QML. It provides comprehensive metrics for measuring and improving typing speed and accuracy, with support for multiple languages, customizable themes, and detailed performance analytics. Inspired by MonkeyType
- Dual Test Modes: Support for both time-based and word-count-based typing tests
- Real-time Metrics: Live WPM (Words Per Minute) and accuracy tracking during tests
- Performance Graph: Visual representation of typing speed throughout the test duration
- Character Analysis: Detailed character-by-character accuracy statistics
- Test History: SQLite-based persistent storage of all test results with comprehensive filtering
- Multi-language Support: Available in English, Turkish, German
- Customizable Themes: Multiple light and dark theme options
- Sound Effects: Configurable keyboard click sounds and error notifications
- Keyboard Navigation: Full keyboard shortcuts for efficient workflow
- Word Generator: Language-specific word lists including general vocabulary and programming keywords(took from MonkeyType)
- Statistics Dashboard: Average WPM, total tests, current streak tracking
- Test Filtering: Filter history by mode, and duration
- Best Results: Track and display top performances for both test modes
- Qt 6.10.2 or higher
- Qt Core
- Qt Quick
- Qt QML
- Qt Charts
- Qt Widgets
- Qt Multimedia
- Qt SQL
- SQLite 3
- CMake 3.16 or higher
- Google Test (automatically fetched via CMake)
git clone https://github.com/xaprier/XFingerCrack.git
cd XFingerCrack# Create build directory
mkdir build && cd build
# Configure with CMake
cmake ..
# Build the project
cmake --build .
# Optional: Run tests
ctest --output-on-failure# Release build with optimizations
cmake -DCMAKE_BUILD_TYPE=Release ..
# Debug build with symbols
cmake -DCMAKE_BUILD_TYPE=Debug ..
# Specify custom Qt installation
cmake -DCMAKE_PREFIX_PATH=/path/to/Qt/6.10.2/gcc_64 ..# Install to system (requires root/sudo)
sudo cmake --install .
# Install to custom location
cmake --install . --prefix /path/to/install# From build directory
./fingercrack
# After system installation
fingercrack- Select Test Mode: Choose between Time-based or Words-based mode from the toolbar
- Configure Settings: Set duration/word count, language, and theme preferences
- Start Typing: Click on the typing area and begin typing the displayed text
- View Results: After completion, review detailed statistics and performance graphs
- Track Progress: Access history to monitor improvement over time
Tab: Start new testEsc: Stop current testEnter: Restart test (from results screen)Ctrl+H: Open history viewCtrl+S: Open settingsCtrl+Q: Quit application
- Available durations: 15s, 30s, 60s, 120s
- Tests run for the specified duration
- Real-time countdown display
- Available word counts: 10, 25, 50, 100
- Tests complete after typing the specified number of words
- Progress indicator shows remaining words
fingercrack/
├── include/ # Header files
│ ├── AppInfo.hpp
│ ├── ConfigManager.hpp
│ ├── TestHistory.hpp
│ ├── TestResult.hpp
│ ├── ThemeManager.hpp
│ ├── TranslationManager.hpp
│ ├── TypingTest.hpp
│ └── WordGenerator.hpp
├── src/ # Implementation files
│ ├── AppInfo.cpp
│ ├── ConfigManager.cpp
│ ├── main.cpp
│ ├── TestHistory.cpp
│ ├── TestResult.cpp
│ ├── ThemeManager.cpp
│ ├── TranslationManager.cpp
│ ├── TypingTest.cpp
│ ├── WordGenerator.cpp
│ └── XFingerCrackApplication.cpp
├── qml/ # QML UI files
│ ├── components/ # Reusable UI components
│ ├── pages/ # Main application pages
│ └── main.qml
├── resources/ # Application resources
│ ├── sounds/ # Audio effects
│ ├── themes.json # Theme definitions
│ ├── translations/ # UI translations
│ └── wordlist/ # Language-specific word lists
├── tests/ # Unit tests
│ ├── test_configmanager.cpp
│ ├── test_testhistory.cpp
│ ├── test_typingtest.cpp
│ └── test_wordgenerator.cpp
└── CMakeLists.txt # Build configuration
AppInfo: Application metadata provider for version information and URLs
ConfigManager: Settings persistence using QSettings, manages user preferences
ThemeManager: JSON-based theme loading and management system
TranslationManager: Multi-language support with Qt Linguist integration
WordGenerator: Language-specific word generation from JSON wordlists
TypingTest: Core test logic, input processing, and metrics calculation
TestResult: Test data collection, analysis, and statistics generation
TestHistory: SQLite database interface for persistent test storage
- Singleton: Used for application-wide managers (ConfigManager, ThemeManager)
- Observer: Qt signals/slots for reactive UI updates
- Model-View: Separation of business logic (C++) from UI (QML)
- Strategy: Pluggable word generators for different languages
Generate API documentation using Doxygen:
# Generate documentation
doxygen Doxyfile
# Documentation will be generated in docs/html/
# Open in browser
firefox docs/html/index.html
# or
xdg-open docs/html/index.htmlThe documentation includes:
- Complete API reference for all classes
- Detailed method and parameter descriptions
- Class hierarchy and inheritance diagrams
- Cross-referenced source code
- File structure overview
# Run all tests
cd build
ctest
# Run specific test suite
./fingercrack_tests --gtest_filter=ConfigManagerTest.*
# Run with verbose output
ctest --verbose
# Generate coverage report (if configured)
cmake -DCMAKE_BUILD_TYPE=Coverage ..
make coverageEdit resources/themes.json to add new themes:
{
"id": "custom-theme",
"name": "Custom Theme",
"background": "#000000",
"surface": "#1a1a1a",
"text": "#ffffff",
"textSecondary": "#888888",
"accent": "#007acc",
"correct": "#00ff00",
"incorrect": "#ff0000",
"border": "#333333"
}Contributions are welcome. Please follow these guidelines:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Follow the existing code style and conventions
- Add tests for new functionality
- Ensure all tests pass (
ctest) - Commit with clear, descriptive messages
- Push to your fork and submit a pull request
This project is licensed under the GNU GPLv3 License - see the LICENSE file for details.
All the UI and theming screenshots can be found in the assets/screenshots directory.
| Ayu Light | GitHub Light | Solarized Light |
|---|---|---|
![]() |
![]() |
![]() |
| Catppuccin Mocha | Dracula | Nord |
|---|---|---|
![]() |
![]() |
![]() |
| Everforest | Gruvbox Dark | One Dark |
|---|---|---|
![]() |
![]() |
![]() |
| Rose Pine | Tokyo Night | Moonlight |
|---|---|---|
![]() |
![]() |
![]() |
| Test Screen | Result Screen | Settings |
|---|---|---|
![]() |
![]() |
![]() |
| History - Recent Tests | History - Statistics | History - Best Results |
|---|---|---|
![]() |
![]() |
![]() |
















