Optimisation du workflow dans un terminal Kitty

Ce topic est dédié aux hackers, ceux qui veulent optimiser leur utilisation du terminal. Pour cela il faut choisir un bon terminal, moderne. Et mon choix est Kitty. Pourquoi?

  • Performance élevée, accélération matériellle avec OpenGL, support multi-threading
  • Disposition des fenètres multiples en natif, gestion des onglets
  • Fonction de rendu avancé, texte ligaturé et emojis, couleurs 24 bits
  • Fonctionnalité de productivité: Kitty Hints, Kittens (Plugins), controle à distance
  • Personnalisable, fichier de conf, themes et polices, raccourcis
  • Affichage des images et graphiques dans le terminal
  • SSH Intégré

Nous allons également utiliser le shell ZSH et des fonctions d'auto-completion, mais aussi un prompt personnalisé plus verbeux à installer via Oh-My-Zsh. Puis nous finirons par la documentation pour faire des requêtes en ligne de commande. Et enfin on automatise le workflow, et fait tout en TUI.

Outil de base du terminal

NOTA: Installaton sous Arch Linux

$ sudo pacman -S kitty zsh

Configuration de Kitty

Configuraton du raccourci clavier XFCE pour lancer le terminal:

Paramêtre > Clavier > Raccourci et mettre la commande kitty pour ctrl+alt+T

Pour créer le fichier de configuration, utilisez les éléments suivants mkdir et touch commande:

$ mkdir -p ~/.config/kitty/
$ touch ~/.config/kitty/kitty.conf

$ nvim ~/.config/kitty/kitty.conf
# Color Scheme template Green Armed

font_family      Monospace
italic_font      auto 
bold_font        auto 
bold_italic_font auto 

font_size 11.0
foreground #50C878
background #023020
background_opacity 0.8

Cheatsheet:

Split Ctrl+Shift+Enter
Switch Ctrl+Shift+[  - Ctrl+Shift+]
Layout multiple Ctrl+Shift+L
Tabs Ctrl+Shift+T
Close Tabs Ctrl+Shift+Q
Switch tabs Ctrl+Shift+Left - Ctrl+Shift+Right
Scroll up Ctrl+Shift+Up
Scroll down Ctrl+Shift+Down
Full screen Ctrl+Shift+F11
Copy to Clipboard Ctrl+Shift+C
Paste from Clipboard Ctrl+Shift+V
Paste from Selection Ctrl+Shift+S
Close Windows Ctrl+Shift+W

Configuration de zsh

Activer le shell par défault:

$ chsh -l
$ chsh -s /usr/bin/zsh

Prompt Powerlevel10K:

$ yay -S oh-my-zsh-git
$ yay -S nerd-fonts-git
$ yay -S --noconfirm zsh-theme-powerlevel10k-git
$ echo 'source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme' >>~/.zshrc

Configuration de ~/.zshrc

# Enable Powerlevel10k instant prompt. Should stay close to the top of ~/.zshrc.
# Initialization code that may require console input (password prompts, [y/n]
# confirmations, etc.) must go above this block; everything else may go below.
if [[ -r "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh" ]]; then
  source "${XDG_CACHE_HOME:-$HOME/.cache}/p10k-instant-prompt-${(%):-%n}.zsh"
fi

# Path to your oh-my-zsh installation.
ZSH=/usr/share/oh-my-zsh/

export DEFAULT_USER="anth"
export TERM="xterm-256color"
export ZSH=/usr/share/oh-my-zsh

source /usr/share/zsh-theme-powerlevel10k/powerlevel10k.zsh-theme

plugins=(archlinux 
    bundler 
    docker 
    jsontools 
    vscode web-search 
    tig 
    gitfast 
    colored-man-pages
    colorize 
    command-not-found 
    cp 
    dirhistory 
    sudo
    zsh-syntax-highlighting
    zsh-autosuggestions) 
# /!\ zsh-syntax-highlighting and then zsh-autosuggestions must be at the end

source $ZSH/oh-my-zsh.sh

# Uncomment the following line to disable bi-weekly auto-update checks.
DISABLE_AUTO_UPDATE="true"

ZSH_CACHE_DIR=$HOME/.cache/oh-my-zsh
if [[ ! -d $ZSH_CACHE_DIR ]]; then
  mkdir $ZSH_CACHE_DIR
fi

source $ZSH/oh-my-zsh.sh

Ajout des fonctions de coloration syntaxique et auto-suggestions dans zsh:

$ cd /usr/share/oh-my-zsh/custom/plugins
$ git clone https://github.com/zsh-users/zsh-autosuggestions
$ git clone https://github.com/zsh-users/zsh-syntax-highlighting.git zsh-syntax-highlighting

Redémarrer Kitty et zsh pour lancer l'initialisation de la configuration du prompt

Outils de workflow terminal

La documentation pour avoir des instructions sur les lignes de commande:

  • GPT for command line https://how2terminal.com/
  • tldr community man pages https://tldr.sh/
  • Interactive cheatsheet tools Navi https://github.com/denisidoro/navi
  • Communauté driven cheatsheet: https://cht.sh/
$ yay -S tldr navi
$ npm install -g how2

Base d'intégrer ripgrep + fzf + z + mcfly (cf: optimizing your workflow with fzf & ripgrep)

$ yay -S ripgrep fzf z mcfly

Utiliser un file manager en CLI TUI

yay -S xplr

Astuce: Modifier la typo et correcteur d'une ligne de commande the fuck

$ sudo pacman-S thefuck

Utiliser un lanceur de programme dans le terminal

On va créer un lanceur de programme éxecutable depuis le terminal en faisant une recherche de binaire en mode fuzzing. Comme ça dans notre workflow on fait tout dans un terminal.

1. Créer le script en bash "Etina"

Crée un fichier nommé, etina.sh :

$ vim etina.sh

Ajoute le code suivant dans le script :

#!/bin/bash

# Rechercher tous les exécutables dans /usr/bin
BINARIES=$(find /usr/bin -maxdepth 1 -type f -executable)

# Utiliser fzf pour une recherche floue parmi les programmes
SELECTED=$(echo "$BINARIES" | fzf --prompt="Select a program: ")

# Si un programme a été sélectionné, le lancer
if [[ -n "$SELECTED" ]]; then
    /usr/bin/"$SELECTED"
else
    echo "Aucun programme sélectionné."
fi

2. Rendre executable le script

Pour rendre le script exécutable et accessible de n'importe où sur Linux, tu peux suivre ces étapes simples.

Une pratique courante est de déplacer le script dans un répertoire inclus dans le PATH de ton système, tel que /usr/local/bin. Ce répertoire est souvent utilisé pour des scripts personnalisés :

$ sudo mv etina.sh /usr/local/bin/etina

Rendre executable le script:

$ sudo chmod +x /usr/local/bin/etina

3. Lancer Le script n'importe ou

Pour lancer le script rien de plus simple une fois qu'il est dans la variable d'environnement PATH

$ etina