Les interfaces « modernes » m’ennuient au plus haut point.

Que l’on vienne d’installer une application ou qu’on l’utilise depuis des années, que l’on soit un dactylographe virtuose ou que l’on doive plisser des yeux pour discerner les boutons, qu’il fasse chaud ou froid, que l’on soit de bonne humeur ou pas, elles sont désespérément égales à elles-mêmes. Tout au plus changent-elles de couleur selon qu’il fasse jour ou nuit, ou plus exactement selon que l’on utilise tel ou tel « mode d’apparence », cinquante nuances d’une morosité insondable. Les créatifs blasés et moutonniers ne font plus aucune différence entre la simplicité et le dépouillement, l’élégance et le néant, l’universalisme et le conformisme.

Je rêve d’interfaces plus souples, plus versatiles, plus conviviales, plus… humaines. Pourquoi le bouton que je n’ai jamais cliqué devrait-il être aussi gros que le même bouton que mon voisin presse toutes les deux minutes ? Pourquoi des icônes ne pourraient-elles pas être plus joyeuses quand on peine à percevoir la fin de la dépression hivernale et plus épurées quand on veut s’adonner à l’ascèse du culte de la productivité ? Pourquoi une application ne grincerait-elle pas quand elle n’a pas été lancée depuis longtemps ? Pourquoi les affordances ont-elles perdu leur signification et ne parviennent plus à suggérer leur propre utilisation ?

Les statistiques appliquées, pour reprendre cette expression décrivant parfaitement ces intelligences artificielles qui magnifient notre bêtise humaine, pourraient mêler les signaux ambiants aux indices comportementaux pour modeler les interfaces à la main et à l’œil de celle qui les emploie. L’individualité aurait une portée universelle, l’écran ferait pleinement partie de l’environnement. Encore faudrait-il accepter que la machine soit à notre service et non l’inverse, que nous soyons des humains avant d’être des utilisateurs, que les nuages comptent plus que le nuage.

Ce n’est pas le cas, alors l’état de l’art des « interfaces » est un refus de la relation humain-machine. Nous devrions taper des incantations dans une invite de commandes, comme si nous n’avions aucune autre ambition qu’un retour aux émulateurs de terminal1, ou parler dans une broche, comme si nous n’étions définitivement plus capables de parler à nos proches. La machine répond invariablement de travers, mais comme elle refuse de s’incarner pour nous permettre de dialoguer, comme elle impose la vision la plus aliénante de l’informatique, nous subissons ses affabulations.

Ces technologies pourraient construire des interfaces tellement plus malines et tellement plus humaines, mais elles préfèrent détruire jusqu’au sens des mots « intelligence » et « artificielle ». Je ne prétends pas savoir résoudre ces problèmes qui pourraient occuper des générations de chercheurs, mais je peux au moins avancer des bribes de réflexions dans mon recoin du cyberespace. Puisque Zinzolin est un carnet qui reflète l’évolution de ma pensée depuis plus d’une décennie, pourquoi ne marquerait-il pas lui-même le passage du temps ?

J’aime beaucoup l’idée que les couleurs soient plus ou moins saturées selon les saisons, et que leur teinte varie au fil des années. Puisque personne ne s’accorde sur la couleur précise du violet « zinzolin », rien n’empêche qu’il soit un peu plus bleu cette année mais un peu plus rouge la suivante. La (dé)crue saisonnière donne l’impression d’une respiration en couleur, plus chaude quand il fait chaud et plus froide quand il fait froid, quoique je me réserve le droit d’inverser la logique, les mois d’été n’ont pas besoin d’être plus suffocants qu’ils ne le sont déjà.

Le code est étonnamment simple. Un petit script convertit le mois et l’année en nombres entiers, qui sont ensuite utilisés pour calculer les coefficients de modification de la saturation et de la teinte. J’utilise des formules mathématiques pour garantir une infinie variété de couleurs longtemps après la disparition de Zinzolin2, mais j’aurais pu utiliser un coefficient de saturation pour chaque mois de l’année et un coefficient de teinte pour chaque année d’une décennie, par exemple. Quoi qu’il en soit, les coefficients sont injectés à la racine de la page sous la forme de propriétés personnalisées CSS.

/* Récupérer le mois et l’année */
let date = new Date() ;
let month = date.getMonth() + 1;
let year =  parseInt(date.getFullYear(), 10);

/* Calculer les coefficients de modification de la saturation et de la teinte */
let chromaShift = -3 * month * month + 36 * month + 24;
let hueShift = 10 * Math.cos(year / Math.PI);

/* Injecter les coefficients sous la forme de propriétés personnalisées CSS */
window.addEventListener("load", (event) => {
  let root = document.documentElement;
  root.style.setProperty("--chromaShift", chromaShift);
  root.style.setProperty("--hueShift", hueShift);
});

La feuille de style (ici en SASS) récupère ces coefficients pour altérer la définition de l’ensemble des couleurs de la palette utilisée sur Zinzolin. Le coefficient de teinte est de plus en plus positif pendant quelques années, et donc réchauffe progressivement les couleurs, mais diminue ensuite jusqu’à devenir négatif pendant quelques années, et donc refroidit les couleurs. Le coefficient de saturation est infinitésimal, mais comme il divise la valeur prédéterminée, il fait drastiquement varier l’intensité des couleurs au fil des mois.

/* Déclarer les teintes de la palette */
$colours: (
  "garnet": "0",
  "coral": "20",
  "brick": "40",
  "brown": "60",
  "khaki": "80",
  "olive": "100",
  "moss": "120",
  "forest": "140",
  "mint": "160",
  "seafoam": "180",
  "turquoise": "200",
  "marine": "220",
  "cyan": "240",
  "azure": "260",
  "indigo": "280",
  "mauve": "300",
  "violet": "320",
  "zinzolin": "340"
);

@each $name, $hue in $colours {
  .#{$name} {
    /* Redéfinir la teinte et la saturation avec les propriétés personnalisées */
    --hue: calc(#{$hue} + var(--hueShift));
    --chroma: calc(100 / var(--chromaShift));
    
    /* Déclarer les couleurs de la palette */
    --body-background: oklch(97% calc(0.01 / var(--chroma)) var(--hue));
    --logo-background: oklch(20% calc(0.05 / var(--chroma)) var(--hue));
  }
}

C’est une bidouille, mais une bidouille poétique, puisque chaque combinaison d’une teinte et d’une saturation est unique. Zinzolin n’aura plus jamais la même couleur d’un mois à l’autre, c’est-à-dire qu’il reflètera (et peut-être soignera) mon insatisfaction permanente comme il ne l’a jamais fait. Prochaine étape : ralentir le défilement quand il gèle et faire dégouliner les textes quand la température dépasse 24 °C. Comment ça, c’est la pire idée que l’on ait eue depuis ChatGPT ?


  1. Sauf que les émulateurs de terminal sont fournis avec un grimoire ! ↩︎

  2. Sans compromettre le contraste des paires de couleurs et donc l’accessibilité, ce qui n’est pas une mince affaire, notamment avec certains bleus qui me résistent encore. La formule -3𝑥² + 36𝑥 + 24, où 𝑥 est la position du mois dans l’année, garantit une saturation rapide avec un pic élevé pendant l’été, après des mois de douce monochromie. La même valeur revient d’une année sur l’autre. La formule 10cos(𝑥/π), où 𝑥 est l’année, fait varier la teinte de plus ou moins quelques points. La valeur ne sera jamais exactement répétée pendant la durée de vie de Zinzolin↩︎