Icône, nom affiché et propriétés de l'exe has been fixed.
See more details at : https://github.com/pdulvp/pdcartes-rami/issues/12
- carré vert aux coins arrondis et R d'or, aux couleurs du premier tapis,
installé sous hicolor et compilé dans l'exe: le jeu se reconnaît dans la
barre des tâches et s'y épingle, là où Icon= pointait sur l'icône
générique du thème
- PDCartes Rami au menu du bureau et en barre de titre, au lieu du nom de
paquet; setApplicationName() laissé intact, c'est le chemin de QSettings
et le renommer orphelinerait profils et réglages
- bloc VERSIONINFO dans l'exe: nom, version, description et copyright dans
la feuille de propriétés, windres nourri en UTF-8 (-c 65001) pour les
accents
- R en Zen Dots et non en Zen Tokyo Zoo: la lettre rainurée de l'enseigne
n'est plus qu'une bouillie rayée à seize pixels
- dessin, PNG et ICO fabriqués par tools/make-icon.py et versionnés; bâtir
le jeu ne demande ni Inkscape ni fonte installée, et hicolor-icon-theme
passe en dépendance du .deb
Une icône pour le jeu, et le lanceur qui la porte
<sub>2026-10-24-2135-une-icone-pour-le-jeu-et-le-lanceur-du-bureau.md — 2026-10-24 21:35</sub>
Le jeu n'a pas d'icône. Sa fenêtre porte celle que le bureau donne à ce qui
n'en a pas, le .desktop déclare Icon=applications-games -- l'icône
générique du thème, partagée avec tous les jeux installés -- et l'exe de
Windows est un exe blanc dans l'explorateur. Épinglé, le jeu ne se reconnaît
pas dans la barre.
Un carré vert aux coins arrondis, un R d'or dedans : les couleurs du tapis
et la lettre de l'enseigne.
Décisions
est en Zen Tokyo Zoo, et c'est elle qu'on aurait reprise -- mais sa lettre
est rainurée, faite de filets fins, et rendue à 32 puis 16 pixels elle n'est
plus qu'une bouillie rayée (vérifié, les deux rendues côte à côte). Zen Dots
est l'autre fonte du logo, celle de PDCARTES : ronde, géométrique, pleine,
elle tient à 16 pixels. Une icône se juge à sa plus petite taille.
une fois pour toutes : un SVG qui nomme une fonte s'affiche en Sans partout
où elle n'est pas installée, et elle ne l'est sur aucune des deux machines
visées -- le jeu l'embarque dans son binaire, il ne la pose pas sur le
système.
- Les PNG, l'ICO et le SVG sont fabriqués ici et versionnés. Inkscape et
ImageMagick font le travail une fois ; le build, lui, ne fait qu'installer
des fichiers. Qui compile le jeu n'a pas à les avoir. Le script qui les a
produits reste dans tools/, pour refaire la série si le dessin change.
- Les couleurs sortent de la palette, pas d'un nuancier. Teinte 142, celle
du premier tapis (defaultFeltHue) : le fond va de #2a6b42 à #143620
-- le drap et son bord -- et le R est le gold de Palette, #e2bc6b,
avec l'ombre portée que TitleMark donne déjà à l'enseigne.
- La fenêtre prend son icône du thème quand il l'a, du binaire sinon.
QIcon::fromTheme(nom, repli) : installé sous Linux, le bureau sert sa
propre copie et respecte le thème de l'utilisateur ; lancé depuis l'arbre de
build, et sur Windows où il n'y a pas de thème, le repli vient des
ressources. En PNG et non en SVG : le greffon SVG n'est qu'un Recommends,
et une fenêtre sans icône parce qu'un greffon manque serait le défaut qu'on
corrige.
Étapes
- [x] tools/make-icon.py -- le script, et assets/icon/ : le SVG maître,
les PNG de 16 à 256, l'ICO.
- [x] src/main.cpp -- setWindowIcon, thème d'abord, ressources ensuite.
- [x] CMakeLists.txt -- la ressource Qt icone, l'installation sous
hicolor côté Linux, le .rc compilé dans l'exe côté Windows.
- [x] data/pdcartes-rami.desktop -- Icon=pdcartes-rami.
- [x] Le .deb : hicolor-icon-theme en dépendance, et vérifier le contenu
du paquet.
- [x] Bâtir en série, les deux côtés, et regarder l'icône rendue.
Vérifié
Les deux côtés bâtis en série, et les deux paquets faits.
Le .deb porte le lanceur, les sept PNG sous hicolor/<taille>x<taille>/apps
et le dessin sous scalable/apps, tous nommés pdcartes-rami.png|svg comme
le Icon= du .desktop les nomme. hicolor-icon-theme est bien ajouté aux
dépendances trouvées dans le binaire et ne les remplace pas (`Depends:
hicolor-icon-theme, libc6 (>= 2.34), libqt6core6t64 (>= 6.8.2), ...`).
desktop-file-validate ne dit rien.
L'icône de la fenêtre, sondée aux deux chemins en ajoutant le temps d'un build
quelques lignes à main() :
- sans rien d'installé, hasThemeIcon est faux et c'est le repli qui sert --
icône non nulle, les sept tailles présentes, et le pixel du centre du 16
est ffe2bc6b, l'or de la palette ;
- l'arbre installé dans un préfixe de passage et XDG_DATA_DIRS pointé
dessus, hasThemeIcon est vrai : l'icône vient du thème.
Dans l'exe de Windows, la table des ressources porte sept RT_ICON et un seul
RT_GROUP_ICON d'identifiant 1, et les sept images s'y retrouvent octet
pour octet depuis l'ICO.
Le dessin regardé aux tailles réelles, sur fond clair et sur fond sombre : le
R se lit encore à seize pixels.
Les deux détails qui ont coincé
Le filet d'or a été dessiné puis retiré. Un trait d'or à l'intérieur du
bord -- la tranche de la table, en petit -- tenait joliment à 128 et 256.
Rendu à 16 et à 24, il n'est plus un trait mais un halo gris-olive tout autour
du carré, qui donne une icône sale et floue là où elle doit être nette. Les
deux versions ont été rendues côte à côte avant de trancher. Une icône se
juge à sa plus petite taille, et ce qui ne survit pas à seize pixels n'a pas
sa place dans le dessin.
L'ICO est écrit à la main plutôt que par ImageMagick. magick recomprime
chaque taille en bitmap non compressé -- 109 ko pour les sept, contre 16 ko en
gardant les PNG -- et, pire, il part de la grande image et réduit, au lieu de
prendre les rendus nets que Inkscape a faits taille par taille. Le format est
un en-tête de six octets, une table de seize par image, et les images bout à
bout : trente lignes de Python, une dépendance de moins, et les bons pixels.
Le nom affiché, et les propriétés de l'exe
<sub>2026-10-24-2155-le-nom-affiche-et-les-proprietes-de-l-exe.md — 2026-10-24 21:55</sub>
Deux restes de la même chose : le jeu se présente partout sous son nom de
paquet, pdcartes-rami, qui est un identifiant et non un nom. Le menu du
bureau l'affiche tel quel, la barre de titre aussi, et les propriétés de
l'exe sous Windows sont vides -- ni nom, ni version, ni description.
L'enseigne, elle, dit PDCartes au-dessus de Rami depuis le début. C'est ce
nom-là qu'il faut montrer.
Décisions
rattache une fenêtre à son lanceur par l'app_id -- setDesktopFileName()
d'un côté, le nom du fichier de l'autre, StartupWMClass sous X11 -- et ces
trois-là disent pdcartes-rami et doivent continuer. Name= n'est que
l'étiquette montrée ; elle est libre.
- **setApplicationName() ne change pas non plus, et c'est le point à ne pas
rater.** C'est lui qui donne le chemin de QSettings : le renommer
orphelinerait les profils, les réglages et l'expérience acquise des six
adversaires chez tous ceux qui jouent déjà. Le nom affiché est une autre
affaire que le nom sous lequel on range.
- La barre de titre suit le menu. MainWindow pose
setWindowTitle("pdcartes-rami") : laisser le lanceur dire PDCartes Rami
et la fenêtre dire autre chose, c'est faire le travail à moitié.
- Le script de ressources quitte assets/icon/ pour data/. Il ne porte
plus seulement l'icône ; il porte ce que le système doit savoir du
programme. data/ tient déjà le lanceur de Linux, et les deux s'y
retrouvent côte à côte -- la même chose dite aux deux bureaux.
- La version de l'exe est celle du projet, sans empreinte de build.
FILEVERSION veut quatre entiers, et le dépôt tient déjà pour règle qu'une
version se nomme par son numéro. Le .rc est donc écrit à la configuration,
que le fichier VERSION déclenche déjà
(CMAKE_CONFIGURE_DEPENDS). L'empreinte reste où elle est, dans
--version.
- windres lit de l'UTF-8, ce qu'il ne fait pas de lui-même. La description
est en français et porte des accents ; sans -c 65001 il la lit en CP1252
et les propriétés de Windows afficheraient du charabia. À vérifier dans
l'exe bâti, pas sur parole.
Étapes
- [x] data/pdcartes-rami.desktop -- Name=PDCartes Rami.
- [x] src/MainWindow.cpp -- la barre de titre, le même nom.
- [x] data/pdcartes-rami.rc.in -- déplacé depuis assets/icon/, et le bloc
VERSIONINFO à côté de l'icône.
- [x] CMakeLists.txt -- le nouveau chemin, les numéros de version passés au
script, et windres en UTF-8.
- [x] Bâtir en série des deux côtés ; relire le bloc de version dans l'exe,
accents compris, et revalider le .desktop.
Vérifié
Les deux côtés bâtis en série, et les deux paquets faits.
Le lanceur, lu dans le .deb lui-même : Name=PDCartes Rami, et à côté
Icon=pdcartes-rami et StartupWMClass=pdcartes-rami inchangés, qui sont ce
qui rattache la fenêtre au lanceur. desktop-file-validate ne dit rien.
L'identité sous laquelle on range n'a pas bougé -- setOrganizationName,
setApplicationName et setDesktopFileName disent toujours
pdcartes-rami, et ~/.config/pdcartes-rami reste le chemin des réglages.
Le bloc de version relu depuis l'exe bâti, en suivant la table des ressources
du PE jusqu'à RT_VERSION et en décodant la structure :
- FILEVERSION et PRODUCTVERSION à 1.2.7.0, pris du fichier VERSION ;
- le bloc de chaînes est bien 040c04b0, et Translation s'accorde avec lui ;
- les huit chaînes y sont, ProductName à PDCartes Rami ;
- les accents sont passés : FileDescription se lit « Le rami sur tapis
vert, à six autour de la table » et LegalCopyright « © 2026 pdulvp ». Sans
-c 65001 ce serait du charabia, et c'est la seule façon de s'en assurer --
l'exe ne se lance pas ici.
Le détail qui a coincé
--version continue de dire pdcartes-rami, et c'est voulu. Qt tire
cette ligne de applicationName(), celui-là même qui donne le chemin de
QSettings : le changer pour faire joli sur une ligne de terminal
orphelinerait les profils, les réglages et l'expérience des six adversaires
chez tous ceux qui jouent déjà. setApplicationDisplayName() existe pour le
nom montré, mais Qt ne s'en sert pas pour --version. Et il n'y a rien à
corriger : sur une ligne de commande, c'est le nom de la commande qu'on
attend. Le nom affiché est au menu du bureau et en barre de titre, là où il
se lit.
<sub>Filed by prel from the completed plans at commit time.</sub>