|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354 |
- <!doctype html><!-- This is a valid HTML5 document. -->
- <!-- Screen readers, SEO, extensions and so on. -->
- <html lang="fr">
- <!-- Has to be within the first 1024 bytes, hence before the `title` element
- See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
- <meta charset="utf-8">
- <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
- <!-- The viewport meta is quite crowded and we are responsible for that.
- See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <!-- Required to make a valid HTML5 document. -->
- <title>Tag #aventure — David Larlet</title>
- <meta name="description" content="Publications relatives au tag #aventure">
- <!-- That good ol' feed, subscribe :). -->
- <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
- <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
- <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
- <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
- <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
- <link rel="manifest" href="/static/david/icons2/site.webmanifest">
- <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
- <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
- <meta name="msapplication-TileColor" content="#f7f7f7">
- <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
- <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
- <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
- <!-- Documented, feel free to shoot an email. -->
- <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
- <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
- <script>
- function toggleTheme(themeName) {
- document.documentElement.classList.toggle(
- 'forced-dark',
- themeName === 'dark'
- )
- document.documentElement.classList.toggle(
- 'forced-light',
- themeName === 'light'
- )
- }
- const selectedTheme = localStorage.getItem('theme')
- if (selectedTheme !== 'undefined') {
- toggleTheme(selectedTheme)
- }
- </script>
-
- <style type="text/css">
- details[open] summary {
- display: none;
- }
- </style>
-
- <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
-
-
- <header>
- <h1>Publications relatives au tag #aventure</h1>
- </header>
- <nav>
- <p class="center">
- <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
- <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-home"></use>
- </svg> Accueil</a>
- • <a rel="tags" href="/david/#tags-2023" title="Liste de toutes les étiquettes"><svg class="icon icon-tags">
- <use xlink:href="/static/david/icons2/symbol-defs-2021-12.svg#icon-tags"></use>
- </svg> Étiquettes</a>
- </p>
- </nav>
- <hr>
- <main>
- <p>Les plus récentes en premier, les 3 premières sont dépliées et ensuite c’est à la demande, bonne exploration !</p>
-
- <h2><a href="/david/2023/01/22/" title="Lien permanent vers cet article">Jour 2</a> (2023-01-22)</h2>
-
-
- <p>Deux objectifs au réveil : minuter le rangement du camp et ne pas faire de feu.</p>
- <p>J’ai rarement l’occasion de me presser lorsque je suis en forêt. À part peut-être si je sais qu’un orage s’en vient. Or, j’ai besoin de savoir en combien de temps est-ce que je peux avoir mon traîneau de prêt car <a href="/david/2023/01/03/" title="Préparation">qui dit groupe</a> dit synchronisation.</p>
- <p>Il m’a fallu environ une heure, sans compter le petit déjeuner que je peux envisager froid/en route. J’ai des pistes d’améliorations mais ça va beaucoup dépendre des conditions aussi, notamment du vent. Ce n’est pas la même chose de devoir plier bagage et préparer son eau de la journée dans une tente ou pas !</p>
- <p>Je voulais aussi tester le réchaud à alcool dans des conditions froides mais le pré-chauffeur n’a pas été nécessaire vu la température. En tout cas, la fait de chronométrer tout ça m’a permis de vérifier qu’il était possible de se passer de feu pour se réchauffer, j’ai fini en sueur.</p>
- <p>L’effet de bord de cet empressement était aussi de pouvoir prendre le départ après le regel de la nuit et mettre toutes les chances de mon côté pour ne pas prendre un bain matinal.</p>
- <figure>
- <a href="#2023-01-22-ski-retour"
- title="Cliquer pour une version haute résolution">
- <img src="/static/david/2023/2023-01-22-ski-retour.jpg" alt="Un ski dans les traces de la veille, sur le chemin du retour."
- loading="lazy" width="2048" height="2731" />
- </a>
- <a href="#_" class="lightbox" id="2023-01-22-ski-retour">
- <img src="/static/david/2023/2023-01-22-ski-retour.jpg" alt="Un ski dans les traces de la veille, sur le chemin du retour."
- loading="lazy" width="2048" height="2731" />
- </a>
- <figcaption>Le retour dans ses traces demande tellement moins d’énergie !</figcaption>
- </figure>
- <p>Le plus fastidieux reste de rapatrier tout l’équipement jusqu’à la voiture. Il est encore tôt et je décide d’aller me promener sur l’autre rive du lac, cette fois-ci en raquettes et avec un sac bien plus léger. C’est toujours agréable de se sentir voler, comme libéré du poids induit par toute cette recherche de mise en confiance.</p>
-
-
-
-
- <h2><a href="/david/2023/01/21/" title="Lien permanent vers cet article">Jour 1</a> (2023-01-21)</h2>
-
-
- <p>L’objectif de cette sortie est de faire une répétition pour la sortie en groupe <a href="/david/2023/01/03/" title="Préparation">que je prépare</a>. J’espérais pouvoir tester le matériel dans des conditions froides et il faisait malheureusement juste frais. À tel point que je doutais de pouvoir passer sur le lac, ce qui est (était ?) plutôt rare pour un 21 janvier…</p>
- <p>J’arrive sur le parking avec beaucoup de matériel et de vêtements. Déjà là en me changeant, je sens bien que ça va être différent de mes autres sorties hivernales, j’arrive à le faire sans être enfermé dans la voiture ! Je fais deux portages pour arriver jusqu’au lac et j’harnache le traineau. Mon poids doit être autour de 100 kilos sur les skis, le traineau autour des 50, ça fait pas mal de poids au cm² et la glace est fine car on est sur un redoux. Je décide de longer la bordure sud car c’est celle la plus à l’ombre des arbres.</p>
- <figure>
- <a href="#2023-01-21-selfie-traineau"
- title="Cliquer pour une version haute résolution">
- <img src="/static/david/2023/2023-01-21-selfie-traineau.jpg" alt="Un selfie avec le traîneau en arrière-plan, sur un lac québécois avec la forêt au fond."
- loading="lazy" width="2048" height="2726" />
- </a>
- <a href="#_" class="lightbox" id="2023-01-21-selfie-traineau">
- <img src="/static/david/2023/2023-01-21-selfie-traineau.jpg" alt="Un selfie avec le traîneau en arrière-plan, sur un lac québécois avec la forêt au fond."
- loading="lazy" width="2048" height="2726" />
- </a>
- <figcaption>Il est très rare que je fasse des égoportraits mais là j’aimais bien voir le téléphone dans les lunettes.</figcaption>
- </figure>
- <p>J’avais prévu de traverser l’intégralité du lac dans la longueur, je décide finalement de m’arrêter à mi-chemin car je flippe un peu pour ma sécurité, le soleil tape fort et même la couche de neige n’est pas si épaisse. Par chance, je décide de m’arrêter juste à un endroit qui est un emplacement de camping. J’avais aussi prévu de dormir sur le lac en mode répétition mais la terre ferme me parait quand même plus sûre vu les conditions.</p>
- <p>Hop, passage des skis aux raquettes pour aplatir l’emplacement de la tente puis du feu. Je commence à être rôdé et je teste un nouveau foyer portable qui me permet de ne pas voir mon feu couler dans la neige. Ce premier essai est concluant même si c’est très lourd (presque un kilo). Il faudra que j’ajoute une partie sur <a href="https://nature.larlet.fr/froid/#feu">la section dédiée</a>.</p>
- <figure>
- <a href="#2023-01-21-feu-foyer"
- title="Cliquer pour une version haute résolution">
- <img src="/static/david/2023/2023-01-21-feu-foyer.jpg" alt="Un feu dans un réceptacle permettant de le garder au-dessus de la neige."
- loading="lazy" width="2048" height="2731" />
- </a>
- <a href="#_" class="lightbox" id="2023-01-21-feu-foyer">
- <img src="/static/david/2023/2023-01-21-feu-foyer.jpg" alt="Un feu dans un réceptacle permettant de le garder au-dessus de la neige."
- loading="lazy" width="2048" height="2731" />
- </a>
- <figcaption>J’essaye habituellement de faire des petits feux économes et efficaces, j’ai un peu forcé pour la photo…</figcaption>
- </figure>
- <p>Je passe l’après-midi et la soirée dans des conditions idéales, je suis juste frustré de ne rien avoir pris pour dessiner. Je ne pensais pas pouvoir tenir aussi longtemps les mains nues… J’en profite pour refaire les réserves d’eau chaude et liquide, vérifier la pertinence d’une partie de l’équipement et amasser plus de bois qu’il n’en faut.</p>
- <p>À 20 heures, il fait -8°C et je n’ai même pas eu à enfiler ma dernière couche, c’est bien la première fois que je suis frustré de ne pas me geler. Je vais faire un tour sur le lac, le silence est complet, le ciel est chargé et sombre, sensation très étrange que celle de marcher dans la seule lumière disponible.</p>
-
-
-
-
- <h2><a href="/david/2023/01/18/" title="Lien permanent vers cet article">Femmes</a> (2023-01-18)</h2>
-
-
- <p>Ces dernières années, je communique avec davantage de femmes que d’hommes au cours de mes journées de travail. Ce qui a commencé comme une opportunité est maintenant un choix délibéré, je ne souhaite plus participer à des équipes uniquement constituées d’hommes. Ça peut — malheureusement — paraitre flippant exprimé ainsi et ce n’est qu’un premier pas sur ce chemin de traverse au sein d’un écosystème majoritairement masculin. Il ne suffit pas d’être différemment entouré, il faut aussi apprendre à se taire et écouter.</p>
- <p>Accepter que les solutions ne soient pas forcément techniques, que ce ne soient même pas des « solutions » en fait mais une suite de prises de soin. Partager des points de vues sur les oppressions et des situations vécues qui font prendre conscience de ses propres privilèges. Découvrir qu’il n’y a pas vraiment d’environnements <em>safe</em> en fait, jamais. Apprendre à se méfier de ses propres biais et interprétations, à déceler ce qui est ressenti comme des agressions, à confier ses doutes sur de potentielles indélicatesses.</p>
- <p>Cette évolution remet aussi en question les dynamiques de groupes que l’on peut observer et ce qui est acceptable ou non. Il y a des postures qui deviennent beaucoup plus rapidement intolérables. Des incohérences entre les aspirations/publications et les situations qui font grincer des dents, fort. Je me sens parfois encore bien faible et démuni face à cela. Et je sais pourtant que ça n’est rien comparé à l’épuisement d’un quotidien dans une société patriarcale. Alors je prends le temps et je donne ce que je peux d’attention, de confiance et d’énergie.</p>
- <p>Ces environnements et échanges m’apportent tellement. <strong>Merci.</strong></p>
- <hr />
- <p>Bande son du jour : <a href="https://www.youtube-nocookie.com/embed/OZHSCZRs1LI">Elisapie</a>.</p>
- <p>Citation du jour :</p>
-
- <blockquote>
- <p>Un grand pouvoir implique une grande corruption.</p>
- </blockquote>
-
-
-
-
- <h2><a href="/david/2023/01/03/" title="Lien permanent vers cet article">Préparation</a> (2023-01-03)</h2>
-
- <details>
- <summary>Déplier pour lire le contenu de la publication</summary>
-
-
- <blockquote>
- <p>C’est sûrement cette impatience qui m’a mis sur la voie d’un apprentissage autodidacte, car je n’ai jamais voulu attendre que l’un de mes camarades soit disponible pour faire une sortie, et je n’étais pas non plus enclin à élargir le cercle de mes amitiés. La solution était donc d’y aller seul et d’apprendre par moi-même en suivant le rythme de mes erreurs et de mes réussites. C’est comme ça que j’ai été amené à escalader mes premières voies sur roche ou sur glace, et que j’ai réalisé la majeure partie de mes ascensions. Le chemin a été long, certainement plus que si j’avais été entouré de camarades ou guidé par des mentors, car <mark>l’apprentissage en solitaire force à être très lucide sur les risques que l’on court et à ne jamais douter de ses capacités</mark> lorsqu’on souhaite relever certains défis. Quand on est livré à soi et rien qu’à soi, on intègre et on consolide plus fermement les connaissances qu’on acquiert au fur et à mesure, et on apprend à se servir de son imagination pour surmonter les difficultés. Mais je dois aussi reconnaître qu’arrivé à un certain niveau, on ne peut plus progresser en restant seul.</p>
- <p><cite><em>Au-delà des sommets</em>, Kilian Jornet</cite></p>
- </blockquote>
- <p>Je me suis inscrit à <a href="https://poissonblanc.ca/experiences/la-grande-traversee/">une mini-expédition</a> (<a href="/david/cache/2023/c9441324cd8ba32c33817cdbc720bfda/">cache</a>), un peu sur un coup de tête. Ce n’est pas encore très clair pour moi de savoir pourquoi est-ce que je me suis lancé là-dedans, ça va potentiellement <a href="/david/blog/2013/piolets-hommes/">sentir fort la testostérone</a> et 40 personnes d’un coup, c’est bien au-delà de mes capacités sociales.</p>
- <p>Il y a probablement cette envie de voir certaines techniques non connues à l’œuvre, échanger des expériences, d’être un peu moins sur le qui-vive (le double-sens de cette expression est savoureux), peut-être de trouver des compagnon·nes d’aventure pour de futures sorties ? J’hésite à profiter d’un contexte moins engagé qu’une sortie solo à la même date pour faire quelques photos aussi.</p>
- <p>Le <em>pourquoi</em> mis de côté, il y a le <em>comment</em> qui est une partie que j’affectionne avant une balade : avoir le bon matériel compte-tenu des conditions, visualiser son campement, les difficultés d’alimentation/hydratation, imaginer l’intensité nécessaire, s’entraîner avec un objectif précis, etc. Et puis, en étant accompagné, il y a ce que je pourrais éventuellement prêter aux autres, peut-être même mutualiser certaines choses ?</p>
-
- <blockquote>
- <p><mark>Cette phase d’analyse est presque aussi excitante que l’activité en soi,</mark> car tout en planifiant une sortie, je ferme les yeux. Tous les détails défilent dans mon esprit, et je ressens presque le froid sur mon visage ou la douleur qui s’empare de mes mains, l’angoisse ou les frissons quand je me vois en plein virage avec les skis en suspension. Et j’anticipe également tout ce qui pourrait mal tourner: une avalanche qui se déclenche, un mauvais dérapage sur des plaques de verglas cachées par la neige, un mauvais enchaînement sur un virage.</p>
- <p>Il m’arrive souvent de décaler le passage à l’acte, parce que je somatise, parce que je ne sais pas si je saurai accepter les risques ou gérer la pression, ou parce que le jour où il faut y aller, je sens un mal-être envahir mon corps tout entier. Lorsque je me décide à y aller vraiment, c’est que j’ai la certitude d’avoir étudié et pris en compte tous les paramètres liés aux risques auxquels je m’expose.</p>
- <p><cite><em>Ibid.</em></cite></p>
- </blockquote>
- <hr />
-
- <blockquote lang="en">
- <p>🧑🎓 Having multiple strategies for solving a problem is vital when you aren’t yet at the level of mastery. It ensures not only backups you can fall upon when more difficult methods fail, but it gives <mark>different reasoning paths</mark> to reach the right answer.</p>
- <p><cite><em><a href="https://www.scotthyoung.com/blog/2022/10/26/variable-mastery/">Variability, Not Repetition, is the Key to Mastery</a></em> (<a href="/david/cache/2023/3d3259256af967c84b199220b3a5244a/">cache</a>)</cite></p>
- </blockquote>
-
- <blockquote lang="en">
- <p>🧡 Ah, scissors. They’re important enough that we have an emoji for them. On your device, it appears as ✂️. Unlike the real world tool it represents, the emoji’s job is to convey the idea, especially at small sizes. It doesn’t need to be able to swing or cut things. Nevertheless, let’s judge them on that irrelevant criterion.</p>
- <p><cite><em><a href="https://wh0.github.io/2020/01/02/scissors.html">Which emoji scissors close</a></em> (<a href="/david/cache/2023/acb867f0c6a744d9a06cd82cd9da002e/">cache</a>)</cite></p>
- </blockquote>
-
- </details>
-
-
-
- <h2><a href="/david/2023/01/02/" title="Lien permanent vers cet article">Lucidité</a> (2023-01-02)</h2>
-
- <details>
- <summary>Déplier pour lire le contenu de la publication</summary>
-
-
- <blockquote>
- <p>Seul face à la montagne je me sens bien parce que, comme l’a dit Reinhold Messner, elle n’est ni juste ni injuste, mais simplement dangereuse. Et face au danger, une certaine logique s’impose immédiatement quand il faut prendre les décisions qu’on considère les plus adaptées. En montagne, je ne doute jamais lorsque se présente un imprévu, mais <mark>dans le domaine plus rude des relations humaines,</mark> l’indécision me plonge dans un état de paralysie jusqu’à ce qu’il soit trop tard pour agir. Je dois admettre que je n’ai jamais su me faire au mode de fonctionnement des êtres humains, qu’ils soient bons, mauvais ou dangereux.</p>
- <p><cite><em>Au-delà des sommets</em>, Kilian Jornet</cite></p>
- </blockquote>
- <p>J’ai <a href="/david/blog/2013/souffrance-plaisir/">souvent</a> <a href="/david/stream/2015/01/08/">parlé</a> de Kilian Jornet <a href="/david/stream/2018/06/29/">par</a> <a href="/stream/2019/02/15/">ici</a> et j’apprécie beaucoup sa franchise lorsqu’il écrit des livres. Il s’autorise à parler d’aspects de sa personnalité qui ne transparaissent pas dans les <em>interviews</em> ou des réflexions qu’il pourrait difficilement tenir sur un plateau de « sportifs extrêmes »…</p>
-
- <blockquote>
- <p>Escalader ce type de montagnes ne consiste en rien d’autre que mettre sa vie en danger pour atteindre le sommet et, ensuite, redescendre. Nous ne nous situons donc certainement pas dans les cieux de l’héroïsme, mais bien plutôt dans les plaines de la stupidité.</p>
- <p>Même si des sportifs cherchent à le cacher et font coïncider leur expédition avec une campagne de levée de fonds, destinés à un quelconque projet humanitaire ou à porter l’attention sur une maladie rare, <mark>l’ascension d’un haut sommet comme l’Everest n’a rien d’héroïque.</mark> Ce n’est, en réalité, qu’une activité égoïste. Un divertissement dangereux et cher.</p>
- <p><em>Ibid.</em></p>
- </blockquote>
- <p>La recherche de ses propres limites est l’objet d’une vie.</p>
- <hr />
-
- <blockquote lang="en">
- <p>What it means is that there is no supply chain here. Because there is no supplier. I am not providing you something that you bought for me. There is no relationship. I put something online because I wanted to. The fact you made your product depend on it is <em>your responsibility</em>. Not mine. Not the one of the providers. We provide libraries. We do not supply them. <mark>You cannot apply rules to me.</mark></p>
- <p><cite><em><a href="https://www.softwaremaxims.com/blog/not-a-supplier">Software Maxims</a></em> (<a href="/david/cache/2023/3ca10b945c7517c2f234e3b9534bfb6d/">cache</a>)</cite></p>
- </blockquote>
-
- </details>
-
-
-
- </main>
-
-
- <hr>
-
- <footer>
- <p>
- <nobr>
- <a href="/david/" title="Aller à l’accueil"
- ><svg class="icon icon-home">
- <use
- xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-home"
- ></use>
- </svg>
- Accueil</a
- >
- </nobr>
- •
- <nobr>
- <a href="/david/log/" title="Accès au flux RSS"
- ><svg class="icon icon-rss2">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-rss2"></use>
- </svg>
- Suivre</a
- >
- </nobr>
- •
- <nobr>
- <a href="http://larlet.com" title="Go to my English profile" data-instant
- ><svg class="icon icon-user-tie">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-user-tie"></use>
- </svg>
- Pro</a
- >
- </nobr>
- •
- <nobr>
- <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"
- ><svg class="icon icon-mail">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-mail"></use>
- </svg>
- Email</a
- >
- </nobr>
- •
- <nobr>
- <abbr
- class="nowrap"
- title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"
- ><svg class="icon icon-hammer2">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-hammer2"></use>
- </svg>
- Légal</abbr
- >
- </nobr>
- </p>
- <template id="theme-selector">
- <form>
- <fieldset>
- <legend><svg class="icon icon-brightness-contrast">
- <use xlink:href="/static/david/icons2/symbol-defs-2022-03.svg#icon-brightness-contrast"></use>
- </svg> Thème</legend>
- <label>
- <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
- </label>
- <label>
- <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
- </label>
- <label>
- <input type="radio" value="light" name="chosen-color-scheme"> Clair
- </label>
- </fieldset>
- </form>
- </template>
- </footer>
- <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
- <script>
- function loadThemeForm(templateName) {
- const themeSelectorTemplate = document.querySelector(templateName)
- const form = themeSelectorTemplate.content.firstElementChild
- themeSelectorTemplate.replaceWith(form)
-
- form.addEventListener('change', (e) => {
- const chosenColorScheme = e.target.value
- localStorage.setItem('theme', chosenColorScheme)
- toggleTheme(chosenColorScheme)
- })
-
- const selectedTheme = localStorage.getItem('theme')
- if (selectedTheme && selectedTheme !== 'undefined') {
- form.querySelector(`[value="${selectedTheme}"]`).checked = true
- }
- }
-
- const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
- window.addEventListener('load', () => {
- let hasDarkRules = false
- for (const styleSheet of Array.from(document.styleSheets)) {
- let mediaRules = []
- for (const cssRule of styleSheet.cssRules) {
- if (cssRule.type !== CSSRule.MEDIA_RULE) {
- continue
- }
- // WARNING: Safari does not have/supports `conditionText`.
- if (cssRule.conditionText) {
- if (cssRule.conditionText !== prefersColorSchemeDark) {
- continue
- }
- } else {
- if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
- continue
- }
- }
- mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
- }
-
- // WARNING: do not try to insert a Rule to a styleSheet you are
- // currently iterating on, otherwise the browser will be stuck
- // in a infinite loop…
- for (const mediaRule of mediaRules) {
- styleSheet.insertRule(mediaRule.cssText)
- hasDarkRules = true
- }
- }
- if (hasDarkRules) {
- loadThemeForm('#theme-selector')
- }
- })
- </script>
-
- </body>
- </html>
|