Blog

Ma collection de snippets CSS Obsidian, pour une apparence et une typographie de bon goût

Oui. Bon. Je suis en train de retourner sous Obsidian. Un certain nombre de mes points de friction autour de l’app se dissipent, des fonctionnalités que je désire se trouvent intégrées, signifiant que je gagne à présent à tout y centraliser plutôt qu’à conserver des silos séparés. Suite à une question des formidables stagiaires de la retraite sur l’émergence créative au printemps (merci pour l’inspiration), je vais faire mon petit influenceur et proposer les extraits CSS que j’utilise dans l’application : j’ai appris un ou deux trucs, notamment que mes besoins parfaitement raisonnables et empreints de mon habituel goût très sûr (utilisez les guillemets à chevrons dans vos dialogues, dammit) ne sont pas tant partagés que ça, ce qui est bien la preuve que tout fout le camp.

Si vous vous demandez ce qu’est un extrait CSS dans Obsidian, c’est un petit bout de code qu’on peut injecter dans l’application pour y personnaliser à peu près n’importe quoi. Rendez-vous ici pour apprendre à les utiliser.

Voici de quoi rendre l’application OCD-compliant.

Alinéa de paragraphe

Sérieusement ? Personne n’a besoin de ça ? J’ai passé un temps déraisonnable à éplucher le forum officiel pour trouver comment mettre en retrait la première ligne de chaque paragraphe, et au final, il m’a fallu l’aide du Discord. Bref, voici comment présenter un joli texte avec un alinéa, mais seulement pour le contenu du fichier en cours, parce que sinon, c’est le bazar.

body .workspace-leaf-content[data-type="markdown"] .markdown-source-view.mod-cm6 div.cm-line:not(:is(.HyperMD-header,.HyperMD-quote,.HyperMD-list-line,.hyperMD-codeblock,.hr), .cm-table-widget *),
.markdown-source-view.mod-cm6.indent div.cm-line:not(:is(.HyperMD-header,.HyperMD-quote,.HyperMD-list-line,.hyperMD-codeblock,.hr), .cm-table-widget *) {
  text-indent: 2em;
}

body  .workspace-leaf-content[data-type="markdown"]  .markdown-source-view.mod-cm6 div.cm-line:not(:is(.HyperMD-header,.HyperMD-quote,.HyperMD-list-line,.hyperMD-codeblock,.hr), .cm-table-widget *) .cm-hmd-frontmatter:first-of-type,
.markdown-source-view.mod-cm6.indent div.cm-line:not(:is(.HyperMD-header,.HyperMD-quote,.HyperMD-list-line,.hyperMD-codeblock,.hr), .cm-table-widget *) .cm-hmd-frontmatter:first-of-type {
  margin-left: -2em;
}

body .markdown-source-view.mod-cm6 div.has-banner.cm-line:not(.HyperMD-header) .cm-def.cm-hmd-frontmatter,
body .markdown-source-view.mod-cm6 div.has-banner.cm-line:not(.HyperMD-header) .collapse-indicator,
.markdown-source-view.mod-cm6.indent div.has-banner.cm-line:not(.HyperMD-header) .cm-def.cm-hmd-frontmatter,
.markdown-source-view.mod-cm6.indent div.has-banner.cm-line:not(.HyperMD-header) .collapse-indicator {
  margin-left: 0;
  left: -3em;
}

body [data-type="markdown"] div[class="el-p"]:not(blockquote) > p,
[data-type="markdown"] :is(.markdown-preview-view,.markdown-rendered).indent div[class="el-p"]:not(blockquote) > p {
  text-indent: 2em;
}


body [data-type="markdown"] div[class="el-p"]:not(blockquote) > p>br,
[data-type="markdown"] :is(.markdown-preview-view,.markdown-rendered).indent div[class="el-p"]:not(blockquote) >  p>br {
  content: ' ';
  white-space: pre;
  line-height: calc((var(--paragraph-spacing) + 0.3) * 1em);
  display:unset;
}
body [data-type="markdown"] div[class="el-p"]:not(blockquote) > p>br::after,
[data-type="markdown"] :is(.markdown-preview-view,.markdown-rendered).indent div[class="el-p"]:not(blockquote) >p>br::after {
  content: '\A\9\9';
}

Placer le bouton de fermeture des onglets à gauche

Peu utile si vous empilez les onglets, comme il se doit bien sûr, mais si vous utilisez un Mac, vous savez que le bouton de clôture d’une fenêtre ou d’un onglet se trouve à fucking gauche, pas à droite comme chez ces barbares de Windows.

.workspace-tab-header-inner-close-button {
  order: -1;
}

Espacer les titres

Ça n’a pas l’air de grand-chose – placer du blanc avant et après les titres, de manière à les faire ressortir et à aérer un document – mais l’éditeur d’Obsidian n’utilise pas margin comme on s’y attendrait, mais padding, ce qui fiche un peu le dawa notamment quand on désire intégrer un joli trait de séparation / soulignement comme je le fais ici. Employer padding implique du coup un peu de calculs à la volée, bref, c’est inutilement compliqué, c’est pourquoi je vous le mets : ajustez les valeurs selon votre goût et votre thème. (Là encore, merci au Discord.)

body :is(.markdown-preview-view,.markdown-rendered) h1,
body .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-1.cm-line {
  padding-top: 35px !important;
  padding-bottom: 35px !important; 
}

body .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-1.cm-line {
  --h1-bot-padding: 35px;
  padding-bottom: var(--h1-bot-padding);
  position: relative;
  
  &::after {
    --underline-offset: 5px;
    content: "";
    display: block;
    position: absolute;
    width: 100%;
    height: 1px;
    bottom: calc(var(--h1-bot-padding) - var(--underline-offset));
    background-color: lightgrey;
  }
}

body :is(.markdown-preview-view,.markdown-rendered) h2,
body .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-2.cm-line {
  padding-top: 35px !important;
  padding-bottom: 30px !important; 
}

body .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-2.cm-line {
  --h2-bot-padding: 30px;
  padding-bottom: var(--h2-bot-padding);
  position: relative;
  
  &::after {
    --underline-offset: 5px;
    content: "";
    display: block;
    position: absolute;
    width: 100%;
    height: 1px;
    bottom: calc(var(--h2-bot-padding) - var(--underline-offset));
    background-color: lightgrey;
  }
}

body :is(.markdown-preview-view,.markdown-rendered) h3,
body .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-3.cm-line {
  padding-top: 30px !important;
  padding-bottom: 20px !important;
}

body :is(.markdown-preview-view,.markdown-rendered) h4,
body .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-4.cm-line {
/*  border-bottom: 0.5px solid black;*/
  padding-top: 25px !important;
  padding-bottom: 10px !important;
}

body :is(.markdown-preview-view,.markdown-rendered) h5,
body .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-5.cm-line {
/*  border-bottom: 0.5px solid black;*/
  padding-top: 25px !important;
  padding-bottom: 5px !important; 
}

body :is(.markdown-preview-view,.markdown-rendered) h6,
body .markdown-source-view.is-live-preview .HyperMD-header.HyperMD-header-6.cm-line {
/*  border-bottom: 0.5px solid black;*/
  padding-top: 20px !important;
  padding-bottom: 10px !important;
}

body {
  --p-spacing: 1rem;
  --heading-spacing: 1em;
}

Espacer les paragraphes

Et tant qu’on y est, on peut séparer subtilement les paragraphes, ce qui ne mange pas de pain quand on travaille avec des murs de texte.

.CodeMirror pre.CodeMirror-line {
  padding-bottom: 10px !important;
}

.cm-s-obsidian .CodeMirror-line,
.cm-s-obsidian .cm-line {
    padding-bottom: 6px !important;
}

.markdown-preview-view br {
    content: '';
    display: block;
    margin-top: 10px;
}

.cm-content .cm-line:not(:is(.HyperMD-header), .cm-table-widget *) {
  line-height: 1.55em;
}

/* Live Preview */

body {
  --paragraph-spacing: 1.55;
}

:is(.markdown-preview-view,.markdown-rendered) p {
  margin-block-start: calc(var(--paragraph-spacing) * 1em);
  margin-block-end: calc(var(--paragraph-spacing) * 1em);
}

body :is(.markdown-preview-view,.markdown-rendered) p>br {
  content:" ";
  margin-top: calc((var(--paragraph-spacing) - 1) * 1em);
  display: block;
}
  

De jolies listes à puces hiérarchiques

Je suis d’avis que les indicateurs visuels soutiennent la pensée : changer le style des puces à mesure que l’on descend dans la hiérarchie n’est pas bien difficile, et c’est joli.

/* LEVEL 1 */
.markdown-reading-view ul > li > .list-bullet:after,
.markdown-source-view.mod-cm6 .HyperMD-list-line-1 .list-bullet:after {
/* Bullet */
    height: 7px;
    width: 7px;
    border-radius: 50%;
    background-color: var(--bullet-new-color);
} 

/* LEVEL 2 */
.markdown-reading-view ul > li > ul > li > .list-bullet:after,
.markdown-source-view.mod-cm6 .HyperMD-list-line-2 .list-bullet:after {
/* Hollow Bullet */
    height: 6px;
    width: 6px;
    background-color: Transparent;
    border-color: var(--bullet-new-color);
    border-style: solid;
    border-radius: 50%;
    border-width: 1px;
} 

/* LEVEL 3 */
.markdown-reading-view ul > li > ul > li > ul > li > .list-bullet:after,
.markdown-source-view.mod-cm6 .HyperMD-list-line-3 .list-bullet:after {
/* Solid Square */
    height: 7px;
    width: 7px;
    border-radius: 0%;
    background-color: var(--bullet-new-color);
} 

/* LEVEL 4 */
.markdown-reading-view ul > li > ul > li > ul > li > ul > li > .list-bullet:after,
.markdown-source-view.mod-cm6 .HyperMD-list-line-4 .list-bullet:after {
/* Hollow Square */
    height: 6px;
    width: 6px;
    background-color: Transparent;
    border-color: var(--bullet-new-color);
    border-style: solid;
    border-radius: 0%;
    border-width: 1px;
} 

/* LEVEL 5 */
.markdown-reading-view ul > li > ul > li > ul > li > ul > li > ul > li > .list-bullet:after,
.markdown-source-view.mod-cm6 .HyperMD-list-line-5 .list-bullet:after {
/* Small Bullet */
    height: 3px;
    width: 3px;
    border-radius: 50%;
    background-color: var(--bullet-new-color);
} 

/* LEVEL 6 */
.markdown-reading-view ul > li > ul > li > ul > li > ul > li > ul > li > ul > li > .list-bullet:after,
.markdown-source-view.mod-cm6 .HyperMD-list-line-6 .list-bullet:after {
/* Dash */
    height: 1px;
    width: 5px;
    border-radius: 0%;
    background-color: var(--bullet-new-color);
} 

/* LEVEL 7 */
.markdown-reading-view ul > li > ul > li > ul > li > ul > li > ul > li > ul > li > ul > li > .list-bullet:after,
.markdown-source-view.mod-cm6 .HyperMD-list-line-7 .list-bullet:after {
/* Bullet */
    height: 5px;
    width: 5px;
    border-radius: 50%;
    background-color: var(--bullet-new-color);
} 

.cm-s-obsidian .cm-formatting-list {
    color: var(--bullet-new-color) !important;
}


/* bullet color */
:root { 
    --bullet-new-color: #2d62d8;
} 

Changer le style du soulignement de texte

Obsidian ne propose pas d’option de soulignement pour le texte, parce que le Markdown ne l’inclut bizarrement pas ; il est cependant possible de l’intégrer manuellement avec la balise HTML <u>, ou, plus élégamment, avec le plugin Extended Markdown Syntax qui ajoute la balise ++ à cet effet. Pour adapter le soulignement à sa couleur préférée (comme Bear), employer et personnaliser ce qui suit – fonctionne avec les deux contournements sus-cités.

u {
    text-decoration: underline 7% solid #2d62d8 ;
    text-underline-offset: 10% ;
}

.cm-ins {
    text-decoration: underline 7% solid #2d62d8 ;
    text-underline-offset: 10% ;
}
2026-07-15T05:41:10+02:00mercredi 15 juillet 2026|Non classé|1 Commentaire

Fantasy et Histoire, ouvrage de découverte et de référence en financement participatif

L’équipe de l’hélas défunte revue Chimères lance un projet de beau livre sur les liens entre fantasy et histoire, couvrant de la préhistoire jusqu’à nos jours : avec une dizaine de chercheur·ses en littérature et imaginaire, spécialistes, passionné·es tels Anne Besson, Justine Breton et Victor Battaggion qui dirigent l’aventure. L’ouvrage est en cours de financement participatif avec les éditions Télémaque.

Divers auteur·ices invité·es (comme votre serviteur) viendront aussi ajouter leur regard, d’une manière qui rappellera sans doute le primé Dictionnaire de la Fantasy dirigé par Anne Besson. J’ignore si l’ouvrage sera réellement disponible en librairie en-dehors de cette campagne, donc si vous souhaitez l’acquérir, ne manquez pas la campagne (qui vous donne aussi l’occasion de compléter votre collection de Chimères).

➡️ Précommander et soutenir l’ouvrage

2026-07-13T06:37:31+02:00lundi 13 juillet 2026|À ne pas manquer|0 commentaire

Mise à jour 2026 des présentations de la masterclass des Imaginales

Tous les ans, nous faisons évoluer la masterclass des Imaginales, ce qui se reflète dans les présentations correspondantes. Jean-Claude Dunyach en est à la onzième version de « Quelques briques de base pour écrire » depuis les années ! Les versions mises à jour pour 2026 sont arrivées sur la page idoine, en libre téléchargement, comme toujours.

2026-07-08T01:29:31+02:00mercredi 8 juillet 2026|Technique d'écriture|0 commentaire

Un système d’écriture manuscrite simple dans Obsidian

Ma danse ne finira jamais (peut-être) et donc, autant vous en faire profiter. Une des tensions entre apps de notes, surtout dans l’écosystème Apple, est la suivante : les apps natives (Bear) offrent une expérience utilisateur confortable et intégrée au système, quand la puissance d’Obsidian se paie par le fait que c’est une app multiplateforme et personnalisable à l’envi, ce qui génère un potentiel puits sans fond de procrastination pour recréer une expérience confortable.

Une de ces fonctionnalités est la possibilité d’intégrer des blocs de notes manuscrites (réflexions libres, dessins) dans une note textuelle, ce qu’iPadOS fournit nativement – avec une palette d’outils contextuelle accessible si l’on dispose d’un Apple Pencil Pro. Par exemple, dans Bear, je peux intégrer une page d’écriture manuscrite avec un simple bouton, ce qui me permet de réfléchir ou griffonner à la main si mon mode de réflexion de l’instant l’exige.

Mais Obsidian ? L’application propose un certain nombre de plugins pour l’écriture et le dessin, le plus célèbre étant Excalidraw, mais la plupart intègrent des solutions tierces incompatibles avec l’expérience native d’iPadOS (et les commandes au stylet).

Sauf le plugin Handwritten Notes. Il propose une approche maligne : utiliser les outils que le système fournit pour annoter les PDF nativement. S’il se trouve que le PDF en question est une simple page blanche avec des lignes, on retrouve exactement l’expérience d’écriture native qu’offre Bear – simple et dépouillée, mais largement suffisante.

Il suffit de créer son modèle (j’ai un PDF ligné de 50 pages qui pèse moins de 300 Ko, ce qui est dérisoire), de le placer quelque part dans sa vault, d’indiquer son existence au plugin dans les options, et c’est réglé. Insérer un passage manuscrit est alors aussi simple qu’invoquer la commande correspondante depuis n’importe quelle note :

On se retrouve alors dans l’expérience d’annotation native d’iPadOS.

Juste une bizarrerie à ne pas oublier : une fois la session de dessin terminée, sélectionner, contre toute attente « Ne pas enregistrer les modifications » – on revient alors à Obsidian, avec ses annotations néanmoins conservées. C’est transparent – et presque plus fluide qu’avec Bear.

Comme toujours avec Obsidian, on peut s’inquiéter de l’avenir du plugin, qui n’a pas été mis à jour depuis plus d’un an à ce stade. Mais comme il s’agit de simples PDF, on n’est pas prisonnier d’une solution propriétaire ; même si le plugin cesse de fonctionner, les fichiers seront toujours lisibles, tout autant que ses notes en Markdown, respectant le principe de File over App.

2026-07-06T03:18:58+02:00lundi 6 juillet 2026|Lifehacking|0 commentaire

Procrastination podcast s10e20 Configuration de son environnement de travail numérique, avec Karima Amarouche

procrastination-logo-texte

Deux semaines ont passé, et le nouvel épisode de Procrastination, notre podcast sur l’écriture en quinze minutes, est disponible ! Au programme : « s10e20 Configuration de son environnement de travail numérique, avec Karima Amarouche« .

Dernier volet de la conversation au long cours de Procrastination avec Karima Amarouche, ergonome chez France Travail, qui répond patiemment à toutes les questions du podcast (enfin, surtout celles de Lionel) sur la configuration précise de l’environnement de travail informatique. Écrans incurvés, résolution, luminosité, lumière bleue, mode clair ou sombre, tout y passe sur la santé oculaire ; mais aussi l’usage du trackpad, les écouteurs à réduction de bruit active, la dictée et la commande vocale, les bloqueurs de distraction, le pouvoir de ne rien faire, jusqu’aux questions soumises par le poditoire. 

Le podcast remercie encore très chaleureusement Karima Amarouche pour sa gentillesse, sa disponibilité et ses innombrables conseils ! 

Références citées

Cal Newport, Deep Work

f.lux, https://justgetflux.com/

Nebo, maintenant appelé MyScript Notes https://www.myscript.com/notes/

Procrastination est hébergé par Elbakin.net et disponible à travers tous les grands fournisseurs et agrégateurs de podcasts :

Bonne écoute !

2026-06-30T07:50:59+02:00mercredi 1 juillet 2026|Procrastination podcast|0 commentaire

Dissocier rédaction et correction de texte pour joie et productivité (202212011734)

Pour mémoire, ces notes sont des extraits bruts de décoffrage de mon système de notes privé, afin d’expérimenter avec une forme différente de partage dans l’esprit des digital gardens.

Rédiger un premier jet et en évaluer la qualité en même temps revient à juger une exploration avant même que celle-ci n’ait pu s’exprimer : c’est contradictoire. La voix critique n’a pas sa place dans l’écriture du premier jet (Dean Wesley Smith, formation Killing Critical Voice ; Kristine Kathryn Rusch le fait aussi). Terry Pratchett : « The first draft is just you telling yourself the story ». 

Matéraliser cette séparation implique même d’avoir un environnement de création du premier jet distinct des aspects « business » de l’écriture (machine à écrire, ordinateur dédié, voir mes réflexions [[202401050927 Possibilités pour une machine d’écriture dédiée]]). 

J’ai pu expérimenter ça avec la Freewrite, et constaté un décuplement de ma vitesse de production – et de la facilité afférente ! C’est très tentant, ne serait-ce que pour la facilité d’approche que cela donne. 

Je me demande même, avec mes réflexions sur l’idéation, s’il ne faudrait pas [[202402041827 Au-delà de la rédaction et correction de texte, dissocier aussi l’idéation pour joie et productivité ?]]. 

CC-By-SA par Kai Schreiber
2026-06-29T02:15:44+02:00lundi 29 juin 2026|Technique d'écriture|0 commentaire

Écrire en musique : Lux

Lux est un collègue beaucoup moins connu de SpacewaveCR, mais avec une activité analogue : de longues plages d’ambient planante qui visent un équilibre subtil, c’est-à-dire marquer des évolutions suffisantes pour ne pas endormir l’auditeur·ice, sans le distraire pour autant. Mais là où SpacewaveCR tape un peu dans toutes les inspirations, Lux a un créneau unique et bien marqué : le succédané de bande originale de Blade Runner. Tous ses albums partagent en effet l’atmosphère, la typographie, la mélancolie et une grande part des sons du monument de Vangelis, ce qui en fait un fond sonore idéal pour travailler et écrire… Enfin, tant qu’on n’en a pas marre de bouffer du Brass de CS-80 et de l’atmosphère urbaine nocturne pluvieuse. Lux propose aussi, quand même, de la musique qui se prête un peu mieux à une écoute active que la moyenne du domaine ; comme introduction, l’EP Asian Moods est fortement recommandé, et on enchaînera sur l’album Space Runner avant de potentiellement dévorer tout le reste.

2026-06-24T07:31:48+02:00mercredi 24 juin 2026|Décibels|2 Commentaires
Aller en haut