StrikeChess is a feature-rich chess application for playing against engines and analyzing positions. With a sleek, customizable interface, comprehensive time controls, and powerful analysis tools, StrikeChess provides everything you need for studying and playing chess.
- Quick Start
- Features
- How to Play
- Settings
- Keyboard Shortcuts
- PGN Files
- Screenshots
- Troubleshooting
- Technical Details
- Developing with StrikeChess
- Credits
- License
- Support
- Python 3.14 or newer
pip install -r requirements.txt
python main.pyπ macOS users: Use
pip3andpython3instead
π Detailed installation instructions | π¦ Creating a standalone executable
Interface - Intuitive drag-and-drop with smooth animations, legal move indicators, coordinate labels Game Modes - Human vs Engine, Human vs Human, play as either color Board Controls - Flip board (Ctrl+F), automatic orientation, last move arrows, check highlighting
Default Engine - Stockfish 17.1 included for all platforms Custom Engines - Load any UCI-compatible engine Strength Control - Adjustable via ponder mode, automatic move timing based on clock Force Move - Make the engine play immediately
Real-time Analysis - Position evaluation with animated bar (F3/F4) Visual Indicators - Best move arrows, evaluation display, mate distance Opening Recognition - Extensive opening database with name display Position Setup - FEN editor with paste and validation support
Seven preset time controls with four increment options each:
| Time Control | Increment Options |
|---|---|
| 1 minute | 0, 6, 12, or 30 seconds |
| 3 minutes | 0, 6, 12, or 30 seconds |
| 5 minutes | 0, 6, 12, or 30 seconds |
| 10 minutes | 0, 6, 12, or 30 seconds |
| 20 minutes | 0, 6, 12, or 30 seconds |
| 30 minutes | 0, 6, 12, or 30 seconds |
| 1 hour | 0, 6, 12, or 30 seconds |
| 2 hours | 0, 6, 12, or 30 seconds |
Features - Digital countdown clocks, automatic increment, flag detection
Move History - Complete move table with navigation Game Review - Jump to any position, scroll through moves PGN Support - Save and load games with proper headers and metadata Position Editor - Set up custom positions via FEN
Choose from 8 carefully designed themes (4 dark, 4 light):
| Theme | Shortcut | Description |
|---|---|---|
| Dark Forest | Alt+1 |
Deep greens with natural tones |
| Dark Mint | Alt+2 |
Cool teals and aqua shades |
| Dark Nebula | Alt+3 |
Purple and violet cosmic colors |
| Dark Ocean | Alt+4 |
Navy blues with ocean depths |
| Theme | Shortcut | Description |
|---|---|---|
| Light Forest | Alt+5 |
Soft greens and earth tones |
| Light Mint | Alt+6 |
Fresh teals and aqua highlights |
| Light Nebula | Alt+7 |
Bright purples and lavender |
| Light Ocean | Alt+8 |
Sky blues and ocean surface |
All themes provide coordinated color schemes across UI elements, custom board colors, matching evaluation bars, and readable text in all conditions.
Distinct audio feedback for different moves:
| Move Type | Sound |
|---|---|
| Standard moves | Basic piece movement |
| Captures | Distinctive capture sound |
| Castling | Special castling sound |
| Check | Alert when king is in check |
| Pawn promotion | Promotion sound effect |
| Game over | End-of-game sound |
Drag and Drop
- Click and hold a piece
- Dots appear on legal squares
- Drag to a legal square
- Release to play your move
When promoting a pawn:
- Play the promotion move
- A dialog appears with piece options
- Click your desired piece (β Queen, β Rook, β Bishop, or β Knight)
- The promotion completes
To analyze a position:
- Click Start Analysis (or press
F3) - The evaluation bar animates to show position assessment
- The best move appears as an arrow on the board
- The variation panel shows the principal line
- Click Stop Analysis (or press
F4) to end
| Display | Meaning |
|---|---|
+2.50 |
White is ahead by 2.5 pawns |
-1.75 |
Black is ahead by 1.75 pawns |
M5 |
White has checkmate in 5 moves |
M-5 |
Black has checkmate in 5 moves |
Navigate through your game history:
- β¬ οΈ Left Arrow / Mouse Wheel Up -> Previous move
- β‘οΈ Right Arrow / Mouse Wheel Down -> Next move
- π±οΈ Click -> Jump to move
- Copy a FEN string
- Double-click the FEN editor (below the board) to paste from clipboard
- Valid positions load automatically
- Invalid FEN strings show a red warning
- Edit any FEN string to set custom positions
Access settings via Ctrl+, or the toolbar button.
Human Name Set your player name (appears in saved PGN files)
Engine Color
- Black - You play White, engine plays Black
- White - You play Black, engine plays White
Ponder Mode Enable to let the engine think during your turn (stronger play, uses more CPU)
Time Control Select base time and increment for both players
πΎ Note: Settings are preserved between sessions in
~/.StrikeChess/settings.json
| Shortcut | Action |
|---|---|
Ctrl+N |
New game |
Ctrl+Q |
Quit application |
Ctrl+, |
Open settings |
F1 |
About dialog |
| Shortcut | Action |
|---|---|
Ctrl+O |
Load game from PGN |
Ctrl+S |
Save game as PGN |
| Shortcut | Action |
|---|---|
Ctrl+L |
Load engine |
Ctrl+U |
Unload engine |
Ctrl+P |
Force engine to play move now |
| Shortcut | Action |
|---|---|
F3 |
Start position analysis |
F4 |
Stop position analysis |
| Shortcut | Action |
|---|---|
Ctrl+F |
Flip board |
β / β |
Navigate move history |
Mouse Wheel |
Scroll through moves |
| Shortcut | Theme |
|---|---|
Alt+1 |
Dark Forest |
Alt+2 |
Dark Mint |
Alt+3 |
Dark Nebula |
Alt+4 |
Dark Ocean |
Alt+5 |
Light Forest |
Alt+6 |
Light Mint |
Alt+7 |
Light Nebula |
Alt+8 |
Light Ocean |
- Click Save as PGN (
Ctrl+S) - Choose location and filename
- Game is saved with complete headers and metadata
Example PGN Output:
[Event "StrikeChess Game"]
[Site "Computer"]
[Date "2025.11.16"]
[Round "1"]
[White "Player"]
[Black "Stockfish 17.1"]
[Result "1-0"]
1. e4 e5 2. Nf3 Nc6 3. Bb5 a6 4. Ba4 Nf6 5. O-O Be7 1-0
- Click Load from PGN (
Ctrl+O) - Select a valid PGN file
- Game loads with all moves
- Navigate through the game freely
- Continue playing from any position
π§ Configuring time controls and engine settings
π Reviewing game history with the move table
π¬ Analyzing a position with evaluation bar and variation display
π Selecting a promotion piece
Problem: "Cannot load UCI engine" error appears
Solutions:
- β Verify the file is a UCI-compatible chess engine
- β Ensure the engine matches your platform (Windows/Linux/macOS)
- β Check CPU architecture compatibility (x86_64, ARM, etc.)
- β On macOS: The app automatically removes quarantine attributes
- β On Linux: The app automatically sets executable permissions
If macOS blocks the engine:
- The app attempts to remove quarantine attributes automatically
- If issues persist, manually run:
xattr -d com.apple.quarantine /path/to/engineProblem: "Cannot load game" error
Solutions:
- β Verify the file contains valid PGN format
- β Check for missing or malformed headers
- β Ensure move notation is correct
- β Try opening the file in a text editor to check for corruption
If analysis is slow:
- Reduce Threads - The engine uses half your CPU cores by default
- Reduce Hash - The engine uses 25% of available RAM
- Disable Ponder - Turn off thinking during opponent's turn
- Close Applications - Free system resources
StrikeChess prevents multiple instances:
- Only one copy can run at a time
- If you see a warning, close the existing instance first
- Check system tray/dock for running instances
StrikeChess requires the following Python packages:
| Package | Version | Purpose |
|---|---|---|
| chess | ~= 1.11.0 | Chess logic and move generation library |
| psutil | ~= 7.1.0 | System resource monitoring for engine optimization |
| PySide6 | ~= 6.10.0 | Qt-based GUI framework for cross-platform interface |
Stockfish 17.1 chess engine is bundled with StrikeChess:
- π License: GNU General Public License v3.0 (GPLv3)
- π» Source: https://github.com/official-stockfish/Stockfish
- π Platforms: Windows (x64), Linux (x64), macOS (Universal)
- π Official Site: https://stockfishchess.org
π See
NOTICE.txtfor complete Stockfish licensing information.
| Requirement | Minimum | Recommended |
|---|---|---|
| Python | 3.14 | 3.14+ |
| OS | Windows 10+ / macOS 11+ / Modern Linux | Latest stable |
| RAM | 2GB | 4GB+ (for analysis) |
| Storage | 50MB | 100MB+ (with saved games) |
StrikeChess uses postponed evaluation of type annotations (PEP 749 & PEP 649), introduced in Python 3.14, which eliminates the need for from __future__ import annotations while maintaining clean, modern Python syntax.
1. Install Python 3.14 or newer:
| Platform | Installation |
|---|---|
| πͺ Windows | Download Python 3.14 installer |
| π§ Linux | sudo apt-get install python3.14 (or use your distribution's package manager) |
| π macOS | Download Python 3.14 installer |
2. Install dependencies:
pip install -r requirements.txtπ macOS users: Use
pip3instead ofpip
3. Launch StrikeChess:
python main.pyπ macOS users: Use
python3instead ofpython
1. Install PyInstaller:
pip install pyinstallerπ macOS users: Use
pip3instead ofpip
2. Build the executable:
pyinstaller --clean bundle.spec3. Find your executable:
- πͺ Windows:
dist/StrikeChess.exe - π§π Linux/macOS:
dist/StrikeChess
StrikeChess/
βββ main.py # Application entry point
βββ bundle.spec # PyInstaller build configuration
βββ requirements.txt # Python dependencies
βββ LICENSE.txt # MIT License
βββ NOTICE.txt # Third-party licenses (Stockfish GPLv3)
βββ strikechess/
β βββ __init__.py # Qt resource compilation
β βββ settings.json # Default settings
β βββ openings.json # Opening name database
β βββ assets/ # Images, sounds, engines, themes
β βββ services/ # Core game logic
β βββ ui/ # User interface components
β βββ utils.py # Helper functions
The codebase follows:
- β Type hints throughout for clarity
- β Descriptive names for variables and methods
- β PEP 8 style guidelines
- β Service-based architecture separating concerns
- β Signal/slot pattern for event handling
Thanks to all contributors to the Python programming language for creating an ever-evolving ecosystem!
- Source: https://github.com/python/cpython
- Downloads: https://www.python.org/downloads
Kudos to Niklas Fiekas for the excellent python-chess library that powers StrikeChess's game logic!
- Source: https://github.com/niklasf/python-chess
- PyPI: https://pypi.org/project/chess
Hats off to the PySide6 team for bringing Qt's powerful GUI framework to Python!
Shoutout to Giampaolo Rodola for psutil, enabling intelligent resource management!
Big thanks to the Stockfish developers for continuously improving the world's strongest open-source chess engine!
- Source: https://github.com/official-stockfish/Stockfish
- Downloads: https://stockfishchess.org/download
StrikeChess is licensed under the MIT License.
See LICENSE.txt for full text.
You're free to use, modify, and distribute StrikeChess under the MIT License. If you create derivative works:
1. Include the original copyright notice:
Copyright (C) 2025 BoΕ‘tjan Mejak
Copyright (C) 2025 Your Name
2. If bundling Stockfish, you must:
- β Include Stockfish's copyright notice
- β Include the full GPLv3 license text
- β Provide access to Stockfish source code
π See
NOTICE.txtfor the complete template.
- Chess variants (Chess960, 3-check, King of the Hill, etc.) are not supported
- Online play - StrikeChess is designed for local play and analysis only
- Multiple PGN games - Only one game per PGN file is loaded
For bugs, feature requests, or questions:
- π Issues: Report problems or suggest improvements
- π Feedback: Use the thumbs down in issue discussions for bugs you'd like prioritized