Un générateur d'invites magnifique et utile pour Bash, ZSH, Fish et tcsh :
Les invites générées sont conçues pour ressembler à Powerline, mais sinon, ce projet n'a aucun rapport avec Powerline.
Table des matières générée avec DocToc
Tous les systèmes de contrôle de version pris en charge par Powerline Shell vous donnent un aperçu rapide de l'état de votre dépôt :
⇡
ou ⇣
indiquant si un git push ou pull est en attente.Si des fichiers sont modifiés ou en conflit, la situation est résumée par les symboles suivants :
✎
-- un fichier a été modifié (mais pas préparé pour la validation, dans git)✔
-- un fichier est préparé pour la validation (git) ou ajouté pour le suivi✼
-- un fichier présente des conflits?
-- un fichier n'est pas suiviChacun d’eux aura un numéro à côté si plusieurs fichiers correspondent.
Le segment peut commencer par un symbole représentant le système de contrôle de version utilisé. Pour afficher ce symbole, le fichier de configuration doit avoir une variable vcs
avec une option show_symbol
définie sur true
(voir Configuration du segment).
Ce script utilise les codes de couleur ANSI pour afficher les couleurs dans un terminal. Ceux-ci sont notoirement non portables, ils peuvent donc ne pas fonctionner pour vous, mais essayez de définir votre $TERM sur xterm-256color
.
Patchez la police que vous utilisez pour votre terminal : voir Powerline-fonts
Installer en utilisant pip :
pip install powerline-shell
( Vous pouvez utiliser l'option --user
pour installer uniquement pour votre utilisateur, si vous le souhaitez. Mais vous devrez peut-être jouer avec votre PATH
pour que cela fonctionne correctement. )
git clone https://github.com/b-ryan/powerline-shell
cd powerline-shell
python setup.py install
Ajoutez ce qui suit à votre fichier .bashrc
:
function _update_ps1() {
PS1=$(powerline-shell $?)
}
if [[ $TERM != linux && ! $PROMPT_COMMAND =~ _update_ps1 ]]; then
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi
Remarque : sur macOS, vous devez l'ajouter à l'un des .bash_profile
, .bash_login
ou .profile
. macOS exécutera les fichiers dans l'ordre susmentionné et arrêtera l'exécution au premier fichier trouvé. Pour plus d'informations sur l'ordre de priorité, consultez la section INVOCATION dans man bash
.
Ajoutez ce qui suit à votre .zshrc
:
function powerline_precmd() {
PS1="$(powerline-shell --shell zsh $?)"
}
function install_powerline_precmd() {
for s in "${precmd_functions[@]}"; do
if [ "$s" = "powerline_precmd" ]; then
return
fi
done
precmd_functions+=(powerline_precmd)
}
if [ "$TERM" != "linux" -a -x "$(command -v powerline-shell)" ]; then
install_powerline_precmd
fi
Redéfinissez fish_prompt
dans ~/.config/fish/config.fish :
function fish_prompt
powerline-shell --shell bare $status
end
Ajoutez ce qui suit à votre .tcshrc
:
alias precmd 'set prompt="`powerline-shell --shell tcsh $?`"'
Powerline-shell est personnalisable grâce à l'utilisation d'un fichier de configuration. Ce fichier devrait se trouver dans ~/.config/powerline-shell/config.json
. Vous pouvez générer la configuration par défaut à cet emplacement en utilisant :
mkdir -p ~/.config/powerline-shell &&
powerline-shell --generate-config > ~/.config/powerline-shell/config.json
(A titre d'exemple, mon fichier de configuration se trouve ici : ici)
Une fois que vous avez généré votre fichier de configuration, vous pouvez maintenant commencer à ajouter ou à supprimer des « segments » – les éléments constitutifs de votre shell. La liste des segments disponibles peut être consultée ici.
Vous pouvez également créer des segments personnalisés. Commencez par copier un segment existant comme celui-ci. Assurez-vous de remplacer toutes les importations relatives par des importations absolues. C'est à dire. changer des choses comme :
from .. utils import BasicSegment
à
from powerline_shell . utils import BasicSegment
Modifiez ensuite la fonction add_to_powerline
pour faire ce que vous voulez. Vous pouvez ensuite utiliser ce segment dans votre configuration en mettant le chemin d'accès à votre segment dans la section segments, comme :
"segments" : [
" ~/path/to/segment.py "
]
Deux segments spéciaux sont disponibles. stdout
accepte une commande arbitraire et le résultat de la commande sera placé dans votre invite. env
prend une variable d'environnement et la valeur de la variable sera définie dans votre invite. Par exemple, votre configuration pourrait ressembler à ceci :
{
"segments": [
"cwd",
"git",
{
"type": "stdout",
"command": ["echo", "hi"],
"fg_color": 22,
"bg_color": 161
},
{
"type": "env",
"var": "DOCKER_MACHINE_NAME"
},
]
}
Par défaut, un caractère Unicode (ressemblant au symbole >) est utilisé pour séparer chaque segment. Cela peut être modifié en modifiant l'option "mode" dans le fichier de configuration. Les modes disponibles sont :
patched
- La valeur par défaut.compatible
- Tente d'utiliser des caractères qui peuvent déjà être disponibles en utilisant la police de votre choix.flat
- Aucun séparateur n'est utilisé entre les segments, ce qui donne à chaque segment une apparence rectangulaire (et permet également d'économiser de l'espace). Le répertoire powerline_shell/themes
stocke les thèmes de votre invite, qui sont essentiellement des valeurs de couleur utilisées par les segments. Le default.py
définit un thème par défaut qui peut être utilisé de manière autonome, et tous les autres thèmes y reviennent s'ils manquent de couleurs pour des segments.
Si vous souhaitez créer un thème personnalisé, commencez par copier un des thèmes existants, comme le thème de base. et mettez à jour votre ~/.config/powerline-shell/config.json
, en définissant le "theme"
sur le chemin du fichier. Par exemple, votre configuration pourrait avoir :
"theme": "~/mythemes/my-great-theme.py"
Vous pourrez ensuite modifier les codes couleurs à votre guise. Les couleurs du thème sont spécifiées à l'aide des codes de couleur Xterm-256.
Un script pour tester les combinaisons de couleurs est fourni sur colortest.py
. Notez que les couleurs que vous voyez peuvent varier en fonction de votre terminal. Lors de la conception d'un thème, veuillez tester votre thème sur plusieurs terminaux, notamment avec les paramètres par défaut.
Certains segments prennent en charge une configuration supplémentaire. Les options du segment sont imbriquées sous le nom du segment lui-même. Par exemple, toutes les options du segment cwd
sont définies dans ~/.config/powerline-shell/config.json
comme :
{
"segments": [...],
"cwd": {
options go here
}
"theme": "theme-name",
"vcs": {
options go here
}
}
Les options pour le segment cwd
sont :
mode
: Si plain
, alors un texte simple sera utilisé pour afficher le cwd. Si dironly
, seul le répertoire courant sera affiché. Sinon, étend le cwd dans des répertoires individuels.max_depth
: Nombre maximum de répertoires à afficher dans le chemin.max_dir_size
: Nombre maximum de caractères affichés pour chaque répertoire du chemin.full_cwd
: Si vrai, le dernier répertoire ne sera pas raccourci lorsque max_dir_size
est utilisé. Le segment hostname
propose une option :
colorize
: Si vrai, le nom d'hôte sera colorisé en fonction de son hachage. Le segment vcs
propose une option :
show_symbol
: Si true
, le segment du système de contrôle de version commencera par un symbole représentant le système de contrôle de version spécifique utilisé dans le répertoire actuel. Les options pour le segment battery
sont :
always_show_percentage
: Si vrai, affiche le pourcentage lorsqu'il est complètement chargé sur secteur.low_threshold
: Pourcentage de seuil pour la couleur de l’indicateur de batterie faible. Les options pour le segment time
sont :
format
: Format de chaîne tel qu'utilisé par la fonction strftime, par exemple %H:%M
. Le répertoire powerline_shell/segments
contient des scripts python qui sont injectés tels quels dans un seul fichier powerline_shell_base.py
. Chaque script de segment définit une fonction qui insère un ou plusieurs segments dans l'invite. Si vous souhaitez ajouter un nouveau segment, créez simplement un nouveau fichier dans le répertoire segments.
Assurez-vous que votre script n'introduit pas de nouvelles variables globales susceptibles d'entrer en conflit avec d'autres scripts. Votre script doit échouer silencieusement et s'exécuter rapidement dans n'importe quel scénario.
Assurez-vous d'introduire de nouvelles couleurs par défaut dans themes/default.py
pour chaque nouveau segment que vous créez. Testez d'abord votre segment avec ce thème.
Vous devez ajouter des tests pour votre segment du mieux que vous pouvez. Les tests unitaires et d’intégration sont tous deux les bienvenus. Exécutez vos tests en exécutant le script test.sh
Il utilise docker
pour gérer les dépendances et l'environnement. Vous pouvez également exécuter la commande nosetests
après avoir installé les exigences dans requirements-dev.txt
.
Voir la FAQ. Si vous continuez à rencontrer des problèmes, veuillez ouvrir un problème.