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
- xplr documentation hackable https://xplr.dev/en/
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