- io.github.bemagri.nomines.yml: builds libsigc++/glibmm/cairomm/pangomm/gtkmm from tarballs against the GNOME 46 runtime, then the app from the v1.0.0 tag - Icon: app-id-named PNGs (128/512) for flatpak export, svg kept for native installs; desktop file Icon updated - README/AGENTS.md: flatpak build instructions and version traps
124 lines
2.5 KiB
Markdown
124 lines
2.5 KiB
Markdown
# 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+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
|
||
```
|
||
|
||
## 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:
|
||
|
||
```bash
|
||
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.
|