This repo hosts GNOME Hearts, an old
(2013) GTK2/libglade2/Python2 Hearts card game; hearts/, a from-scratch
modern rewrite of it; the infrastructure to keep the original running on
modern systems; and a git submodule of GNOME's actively-maintained
Aisleriot card game collection,
used as a build/architecture reference for both.
gnome-hearts-0.3.1/— the original upstream source (autotools, C core + embedded Python2 AI scripts). Seedocs/user/anddocs/developer/for its archived documentation.hearts/— a from-scratch rewrite of the same game in Python, GTK4 and libadwaita, built and run natively (no container). Implements the Standard ruleset only — seehearts/README.mdfor exact scope.aisleriot/— git submodule, GNOME's modern GTK3/Meson solitaire collection, used as an architecture reference and as the source of theanglo.svgcard art reused byhearts/.ansible/— one playbook per buildable component.
The modern rewrite, playable against 3 AI opponents.
ansible-playbook ansible/hearts.ymlor manually:
cd hearts
meson setup build
meson compile -C build
meson test -C build # engine unit tests (pure Python, no display needed)
sudo ninja -C build install
heartsTo run without installing:
cd hearts
PYTHONPATH="$PWD" meson devenv -C build python3 -m hearts.mainRequires the aisleriot submodule checked out (git submodule update --init aisleriot) for its card art, plus Meson, Ninja, Python 3, and
PyGObject with the GTK4/libadwaita/Rsvg typelibs. See hearts/README.md
and ansible/README.md for details and exact package names per
distribution.
The original game. Requires GTK2/libglade2/libgnomeui/Python2, none of which are installable on a modern host, so it's built inside a distrobox container and exported to the host as a normal desktop app.
ansible-playbook ansible/gnome-hearts.ymlRequires Docker (running, user in the docker group) and distrobox
already installed. Run manually inside the container:
distrobox enter -n gnome-hearts -- gnome-heartsansible-playbook ansible/aisleriot.ymlor manually:
cd aisleriot
meson setup build -Dtheme_kde=false -Dtheme_pysol=false --prefix=/usr/local
ninja -C build
sudo ninja -C build install
solRequires the aisleriot submodule checked out and Meson/Ninja installed.
See ansible/README.md for full requirements and options for all three
playbooks.