0x0i.tmux
Rôle Ansible :eyeglasses: tmux
Table des matières
- Plateformes prises en charge
- Exigences
- Variables de rôle
- Dépendances
- Exemple de Playbook
- Licence
- Informations sur l'auteur
Rôle Ansible qui installe, configure et exécute tmux : un multiplexeur de terminal qui permet de créer, d'accéder et de contrôler plusieurs terminaux à partir d'un seul écran.
Plateformes prises en charge :
* Debian
* Redhat (CentOS/Fedora)
* Ubuntu
Exigences
Nécessite l'installation préalable des paquets logiciels libevent 2.x et ncurses.
Variables de rôle
Les variables sont disponibles et organisées selon les étapes suivantes de provisionnement de logiciels et de machines :
- installation
- configuration
- désinstallation
Installation
tmux
peut être installé en utilisant les systèmes de gestion de paquets fournis par les plateformes prises en charge (par ex., apt
, yum/dnf
).
Les variables suivantes peuvent être personnalisées pour contrôler divers aspects de ce processus d'installation :
service_package: <nom-de-paquet-et-version>
(par défaut : tmux[-dernière version])
- nom et version du paquet tmux à télécharger et à installer. Référence ou exécutez quelque chose comme
dnf --showduplicates list tmux
dans un terminal pour afficher une liste des paquets disponibles pour votre plateforme.
Configuration
En utilisant ce rôle, la configuration d'une instance de tmux
est gérée avec la variable utilisateur tmux_config
et peut être exprimée sous forme de hash, indexée par compte utilisateur. La valeur de ces clés de compte utilisateur est soit un dictionnaire, soit une liste de dictionnaires, ou une combinaison des deux (définie selon la syntaxe YAML de l'opérateur et les préférences de personnalisation) représentant les commandes de démarrage/configuration associées et les séquences de commandes (combinaisons de commandes liées par l'exécution) ainsi qu'un commentaire optionnel
.
Voici un aperçu et des exemples de configurations pour référence :
[tmux_config: {global | compte-utilisateur} : {entrée} :] commentaire: <chaîne>
(par défaut : voir aucun)
- [optionnel] commentaire associé à la commande de configuration ou à la séquence de commandes.
Exemple
tmux_config:
global:
- commentaire: "Ce commentaire fournit un contexte autour de la ou des commandes ci-dessous"
commandes:
- "source-file": "'~/.tmux.conf'"
[tmux_config: {global | compte-utilisateur} : {entrée} :] commandes: <clé: valeur,...>
(par défaut : voir defaults/main.yml
)
- une collection de commandes de configuration à intégrer dans le fichier tmux.conf de compte-utilisateur. Une liste des commandes disponibles peut être trouvée ici.
Typiquement, chaque paire clé:valeur représente les composants {commande}: {drapeaux}
d'une commande tmux respectivement :
tmux_config:
global:
- commentaire: "Ajouter ctrl-A comme clé de préfixe secondaire"
commandes:
# {commande}: {drapeaux} format
- "set-option": "-g prefix2 C-a"
- "bind-key": "C-a send-prefix -2"
Cependant, techniquement toute séparation de la syntaxe de commande tmux est autorisée et devrait conduire à l'affichage correct de la configuration souhaitée.
tmux_config:
compte-utilisateur-1:
- commandes:
- "bind-key C-c": "new-session"
- "if-shell true": "{ display -p 'bar-dollar-foo: $foo' }"
- "set-hook -g pane-mode-changed[42] 'set -g status-left-style bg=red'": ""
- commandes:
- "set": "-g @plugin 'tmux-plugins/tpm'"
"set -g": "@plugin 'tmux-plugins/tmux-sensible'"
commentaire: "Installer les plugins tmux TPM & 'tmux-sensible' (configurations sensées)"
Désinstallation
Supprime à la fois les installations de paquets ainsi que les configurations utilisateur tmux gérées, ramenant l'hôte cible à son état configuré avant l'application de ce rôle, à l'exception des configurations globales/system-wide (par ex. peut être utile pour recycler les paramètres de configuration lors des mises à jour système).
La ou les variable(s) suivantes peuvent être personnalisées pour gérer ce processus de désinstallation :
perform_uninstall: <true | false>
(par défaut : false
)
- si oui ou non désinstaller les installations tmux gérées et les configurations utilisateur sur un hôte cible (voir :
handlers/main.yml
pour plus de détails).
Dépendances
Aucune
Exemple de Playbook
exemple par défaut :
- hosts: all
roles:
- role: 0x0I.tmux
Installer et gérer une version spécifique :
- hosts: all
roles:
- role: 0x0I.tmux
vars:
service_package: tmux-2.7-2
Appliquer manuellement les paramètres du plugin de configuration "sensible" de Tmux :
- hosts: all
roles:
- role: 0x0I.tmux
vars:
tmux_config:
global:
- commentaire: "utf8 est activé"
commandes:
- "set-option": "-g utf8 on"
- "set-option": "-g status-utf8 on"
- commentaire: "adresse le délai de changement de mode vim (http://superuser.com/a/252717/65504)"
commandes:
- "set-option": "-s escape-time 0"
- commentaire: "augmenter la taille du tampon de défilement"
commandes:
- "set-option": "-g history-limit 50000"
- commentaire: "les messages tmux sont affichés pendant 4 secondes"
commandes:
- "set-option": "-g display-time 4000"
- commentaire: "rafraîchir 'status-left' et 'status-right' plus souvent"
commandes:
- "set-option": "-g status-interval 5"
- commentaire: "mettre à niveau $TERM"
commandes:
- "set-option": "-g default-terminal "screen-256color"
- commentaire: "les raccourcis de touches emacs dans l'invite de commande tmux (préfixe + :) sont meilleurs que les touches vi, même pour les utilisateurs de vim"
commandes:
- "set-option": "status-keys emacs"
- commentaire: "les événements de focus activés pour les terminaux qui les prennent en charge"
commandes:
- "set-option": "-g focus-events on"
- commentaire: "super utile lors de l'utilisation de 'sessions groupées' et de configurations multi-écrans"
commandes:
- "set-window-option": "-g aggressive-resize on"
- commentaire: "changement plus facile et plus rapide entre la fenêtre précédente/suivante"
commandes:
- "bind-key": "C-p previous-window"
- "bind-key": "C-n next-window"
- commentaire: "source .tmux.conf comme suggéré dans `man tmux`"
commandes:
- "bind-key": "R source-file '~/.tmux.conf'"
- commentaire: "si le préfixe est 'C-a'"
commandes:
- "bind-key": "C-a send-prefix"
- "bind-key": "a last-window"
...ou avec une installation de plugin :
- hosts: all
roles:
- role: 0x0I.tmux
vars:
tmux_config:
global:
- commentaire: "Ajouter sensible à la liste des plugins TPM"
commandes:
- "set-option": "-g @plugin 'tmux-plugins/tmux-sensible'"
Licence
MIT
Informations sur l'auteur
Ce rôle a été créé en 2019 par O1.IO.
tmux, a terminal multiplexer enabling multiple terminals to be created, accessed, and controlled from a single screen
ansible-galaxy install 0x0i.tmux