Header bar now holds only Difficulty + Leaderboard. A status bar above the board shows the flag counter (left), the New Game button (center) and the timer (right) as LCD-style panels styled with theme-aware CSS.
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.
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+Nnew game,1–4difficulty,Lleaderboard - 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:
sudo apt install build-essential meson ninja-build libgtkmm-4.0-dev libsigc++-3.0-dev
Fedora
Install dependencies:
sudo dnf install gcc-c++ meson ninja-build gtkmm4.0-devel libsigc++3-devel
Arch Linux
Install dependencies:
sudo pacman -S base-devel meson ninja gtkmm-4.0 libsigc++-3.0
Building the Project
Clone the repository:
git clone https://github.com/bemagri/nomines
cd nomines
Configure and build with Meson:
meson setup build
meson compile -C build
Run the game:
./build/nomines
Installing
To install system-wide:
meson install -C build
Using Nix
If you use the Nix package manager, you can build and run the application with:
nix build
./result/bin/nomines
Or run it directly from the flake:
nix run
The Nix flake also provides a development shell with all dependencies:
nix develop
Building a Flatpak
NoMines ships a Flatpak manifest (io.github.bemagri.nomines.yml) that builds
the gtkmm stack (libsigc++, glibmm, gtkmm) against the GNOME 46 runtime:
flatpak install -y flathub org.gnome.Platform//46 org.gnome.Sdk//46
flatpak-builder --user --install --force-clean build-flatpak io.github.bemagri.nomines.yml
flatpak run io.github.bemagri.nomines
Note: the manifest's commit must match the pushed v1.0.0 tag (update it if
the history is rebased before pushing).
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.
