# NoMines A modern GTK4/gtkmm implementation of the classic Minesweeper game with multiple difficulty levels, a persistent leaderboard, keyboard shortcuts, and light/dark theme support. ![Game Screenshot](screenshots/screen1.png) ## Features - Multiple difficulty levels: Beginner, Intermediate, Expert, and Master - Persistent leaderboard tracking the best time per difficulty - Follows the system light/dark theme - Win/lose animations, including a confetti win celebration - Keyboard shortcuts: `R` / `Ctrl+N` new game, `1`–`4` difficulty, `L` leaderboard - Right-click chording on revealed cells - Modern GTK4 user interface with client-side decorations - Modern C++20 implementation ## Building from Source ### Dependencies - GTK 4.0 or later - gtkmm 4.0 or later - sigc++ 3.0 or later - Meson build system - Ninja build system ### Ubuntu/Debian Install dependencies: ```bash sudo apt install build-essential meson ninja-build libgtkmm-4.0-dev libsigc++-3.0-dev ``` ### Fedora Install dependencies: ```bash sudo dnf install gcc-c++ meson ninja-build gtkmm4.0-devel libsigc++3-devel ``` ### Arch Linux Install dependencies: ```bash sudo pacman -S base-devel meson ninja gtkmm-4.0 libsigc++-3.0 ``` ### Building the Project Clone the repository: ```bash git clone https://github.com/bemagri/nomines cd nomines ``` Configure and build with Meson: ```bash meson setup build meson compile -C build ``` Run the game: ```bash ./build/nomines ``` ### Installing To install system-wide: ```bash meson install -C build ``` ## Using Nix If you use the Nix package manager, you can build and run the application with: ```bash nix build ./result/bin/nomines ``` Or run it directly from the flake: ```bash nix run ``` The Nix flake also provides a development shell with all dependencies: ```bash nix develop ``` ## Contributing Contributions are welcome! Please feel free to submit a Pull Request. ## License This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.