86 stable releases
Uses new Rust 2024
| new 2.9.3 | Dec 20, 2025 |
|---|---|
| 2.9.2 | Dec 17, 2025 |
| 2.8.62 | Nov 24, 2025 |
| 2.8.55 | Oct 30, 2025 |
| 2.7.1 | Jul 31, 2025 |
#38 in Games
580KB
6K
SLoC
offline-chess-puzzles 2.9.3
GUI to solve puzzles from the lichess puzzle database
A big thank you to lichess for creating the puzzle database, to the project chess-engine which I used as a starting point for the GUI here, and to the awesome Iced GUI library project in which the interface is made.
- Cloned from https://github.com/brianch/offline-chess-puzzles: tweaked the clarity of messages and added Dutch translation.
- To build the binary on Linux with Rust cargo, these packages are required:
libasound2-devlibgtk-3-devlibsqlite3-dev - The binary needs the fitting version of libraries:
libasound2t64libssl3t64libssl3t64libsqlite3-0libgcc-s1libc6
Usage
- Download the app in the Releases page.
- The necessary file
lichess_db_puzzle.csv(from the lichess link above), will be downloaded by the app if it is not found. By default it will be saved to the app's storage directory, but the location of the lichess database file can be changed in thesettings.jsonfile that will be created in the storage directory (see below). Alternatively, a symlink could be placed in the storage directory.- It is good to get the csv file directly so it's fresh, and can easily be replaced if needed.
- To play you simply search positions according to your needs, click
Searchand a puzzle will be loaded.- The initial search is somewhat slow (especially when searching by opening: it's a plaintext database).
- For a promotion move, first select the piece to promote to (in the Search tab), before making the pawn move.
- The binary has all resources built in: font, translations, sound files, and pieces.
- The storage directory that will be used can be specified with the environment variable
OCP_HOME. If not given, it will create and use the directory.offline_chess_puzzlesin the user's home directory.- A settings file
settings.jsonwill be written to the storage directory. - If favorite positions are selected, they will be stored in the sqlite3 database
favorites.dbin this storage directory.
- A settings file
Possible use cases
- Practice offline, it has filters by puzzle rating, theme and opening.
- Teach the tactical motifs to students, since it's simple to select easy puzzles from a theme (it lack arrows, but there's an analysis function)
- Setting a very small search limit might be useful for those who want to practice by repetition (you'll get the same puzzles each time, in random order). But there's no build-in functionality specific for this yet.
Features
- All the filters we have in Lichess (except a few minor opening variations), plus rating range.
- Flip the board to solve from the opponent's perspective (to practice seeing what is being threatened against us).
- A number of piece themes and a bunch of board themes.
- Analysis board (with basic engine support).
- Hint (see which piece to move).
- Settings are remembered and loaded when you open the app again (
settings.json). - Navigate to the previous/next puzzles.
- Favorite puzzles can be remembered and searched from.
- Export part of the search to PDF.
- Save puzzle as a .jpg file.
License:
The code is distributed under the MIT License. See LICENSE for more information.
Assets authors / licenses:
- The piece set "cburnett" is a work of Colin M.L. Burnett and used under the CC-BY-SA 3.0 unported license (more info on the license.txt file in that directory).
- The "california" piece set is a work of Jerry S. licensed under CC BY-NC-SA 4.0 (https://sites.google.com/view/jerrychess/home)
- The piece sets "Cardinal", "Dubrovny", "Gioco", "Icpieces", "Maestro", "Staunty", "Governor" and "Tatiana" are work of "sadsnake1", licensed under CC BY-NC-SA 4.0. And obtained from the lila (lichess) repository.
- The piece set and font "Chess Alpha" is a work of Eric Bentzen and free for personal non commercial use. Full info in the documents in the "font" directory.
- The original Merida chess font is a work of Armando Hernandez Marroquin and distributed as 'freeware' and the shaded version used here and obtained from the lichess repository is a work of Felix Kling ("DeepKling" here on github).
Dependencies
~120–170MB
~2.5M SLoC