---
title: Pimp My Shell
sub_title: "Tech'Work Lyon 2026"
author: Julien Wittouck - @Codekaio
theme:
  override:
    code:
      alignment: center
      minimum_size: 50
      minimum_margin:
        fixed: 0
      padding:
        horizontal: 1
        vertical: 1
    footer:
      style: template
      left: "{title}"
      center: ""
      right: "{current_slide} / {total_slides}"
---

![image:width:100%](pimp-my-shell.png)
# 🐚 Mon shell mérite mieux qu'un bash ennuyeux

Il doit être **lisible**

Il doit être **portable** entre mes machines

Il doit être **efficace** et **performant**

Et puis ça peut aussi être joli 💖

<!-- end_slide -->

![image:width:75%](ghostty.png)

# 🐚 Mon shell s'exécute dans un terminal moderne

* Ghostty : émulateur de terminal performant (GPU powaaaaa)
* Shell : **fish** : autosuggestions, complétions, scripting simple
* Capable d'afficher des images 🤯
* Nerd Font **JetBrains Mono**
  * Ligatures : -> , =>, !=, <=, >=, /* */, <>
  * Emojis et symboles : 🤩, 🏭⚙️ , 🇫🇷

<!-- end_slide -->

![image:width:25%](tools.png)

# 🐚 Mon shell est superchargé avec des outils boostés

* 📄 `cat` → `batcat` : coloration syntaxique, numéros de lignes
* 📂 `ls` → `lsd` : couleurs, icônes par type de fichier
* 🚀 `cd` → `zoxide` : navigation intelligente par fréquence
* 🔍 `find` → `fd` : recherche de fichiers rapide et intuitive

<!-- end_slide -->

![image:width:75%](starship.png)

# 🐚 Mon shell a un prompt qui envoie du lourd

* Prompt **cross-shell** : compatible bash, zsh, fish, ...
* Infos de contexte :
  * branche git + statut
  * version runtimes (java, node, ...)
  * kubecontext, workspace TF, ...
* configuration dans `~/.config/starship.toml`
  * thèmes, modules

<!-- end_slide -->

![image:width:65%](splashboard.png)

# 🐚 Mon shell n'a pas à être vide quand il démarre

* Splash screen customisable
  * Configuration globale `~/.config/splashboard`
  * Configuration par répertoire (`.splashboard.toml`)
* Widgets : git, météo, calendrier, horloge, infos système…
* Big text animé, thèmes Catppuccin, layouts flex

<!-- end_slide -->

![image:width:55%](mise.png)

# 🐚 Mon shell a un environnement clair

* **mise** : runtimes, variables d'env, tâches
* Configuration globale `~/.config/mise.toml`
* Configuration au projet `mise.toml`
* activation auto au `cd` : la config voyage avec le projet

<!-- end_slide -->

![image:width:75%](fnox.png)

# 🐚 Mon shell ne leak pas ses secrets

* **fnox** : secrets montés dans l'env
* stockage dans un fichier chiffré
* référencement de secrets d'un Vault, secrets managers cloud
* Configuration `fnox.toml`
* activation auto au `cd` : les secrets voyagent avec le projet

<!-- end_slide -->

![image:width:75%](chezmoi.png)

<!-- reset_layout -->

# 🐚 Mon shell synchronise sa configuration

* **chezmoi** : gestion des **dotfiles** (_aka_ `$HOME/.truc`)
* synchronisation git
* chiffrement avec **age** ou **gpg** pour les secrets

<!-- end_slide -->

![image:width:45%](gum.png)

# 🐚 Mon shell a des paillettes

* **gum** : scripts interactifs : style, spinner, confirm, choose
  * `git fixup` alias : gum choose + commit --fixup + rebase --autosquash
  * utilisation de `gum pager` en $PAGER
* **gimoji** : chercher et copier des gitmoji depuis le terminal

<!-- end_slide -->

# 🐚 Mon shell vous remercie

<!-- column_layout: [1, 1] -->

<!-- column: 0 -->
![image:width:80%](qrcode.png)

Laissez moi un feedback !

<!-- column: 1 -->
![image:width:80%](codekaio.png)

 julien-wittouck

  @codeka.io

<!-- reset_layout -->

Ressources

🖥  **Ghostty** · JetBrains Mono Nerd Font · Catppuccin

🛠  bat · lsd · zoxide · fd

🚀 **Starship** · **Splashboard** · **mise** · **fnox** · **chezmoi**

✨ **gum** · gimoji · krabby

📽️ Slides faits avec **presenterm** — dispo sur tangled.org/codeka.io/pimp-my-shell

<!-- no_footer -->
