Un hermoso y útil generador de mensajes para Bash, ZSH, Fish y tcsh:
Los mensajes generados están diseñados para parecerse a powerline, pero por lo demás, este proyecto no tiene relación con powerline.
Tabla de contenidos generada con DocToc
Todos los sistemas de control de versiones compatibles con powerline shell le brindan un vistazo rápido al estado de su repositorio:
⇡
o ⇣
indicando si hay pendiente un git push o pull.Si los archivos están modificados o están en conflicto, la situación se resume con los siguientes símbolos:
✎
-- un archivo ha sido modificado (pero no preparado para su confirmación, en git)✔
-- un archivo se prepara para confirmación (git) o se agrega para seguimiento✼
-- un archivo tiene conflictos?
-- un archivo no está rastreadoCada uno de estos tendrá un número al lado si coincide más de un archivo.
El segmento puede comenzar con un símbolo que represente el sistema de control de versiones en uso. Para mostrar ese símbolo, el archivo de configuración debe tener una variable vcs
con una opción show_symbol
establecida en true
(consulte Configuración de segmentos).
Este script utiliza códigos de color ANSI para mostrar colores en una terminal. Estos son notoriamente no portátiles, por lo que es posible que no funcionen para usted desde el primer momento, pero intente configurar su $TERM en xterm-256color
.
Parchea la fuente que usas para tu terminal: ver powerline-fonts
Instalar usando pip:
pip install powerline-shell
( Puede usar la opción --user
para instalar solo para su usuario, si lo desea. Pero es posible que deba modificar su PATH
para que esto funcione correctamente).
git clone https://github.com/b-ryan/powerline-shell
cd powerline-shell
python setup.py install
Agregue lo siguiente a su archivo .bashrc
:
function _update_ps1() {
PS1=$(powerline-shell $?)
}
if [[ $TERM != linux && ! $PROMPT_COMMAND =~ _update_ps1 ]]; then
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi
Nota: En macOS, debes agregar esto a uno de .bash_profile
, .bash_login
o .profile
. macOS ejecutará los archivos en el orden mencionado anteriormente y detendrá la ejecución en el primer archivo que encuentre. Para obtener más información sobre el orden de precedencia, consulte la sección INVOCACIÓN en man bash
.
Agregue lo siguiente a su .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
Redefina fish_prompt
en ~/.config/fish/config.fish:
function fish_prompt
powerline-shell --shell bare $status
end
Agregue lo siguiente a su .tcshrc
:
alias precmd 'set prompt="`powerline-shell --shell tcsh $?`"'
Powerline-shell se puede personalizar mediante el uso de un archivo de configuración. Se espera que este archivo esté ubicado en ~/.config/powerline-shell/config.json
. Puede generar la configuración predeterminada en esta ubicación usando:
mkdir -p ~/.config/powerline-shell &&
powerline-shell --generate-config > ~/.config/powerline-shell/config.json
(Como ejemplo, mi archivo de configuración se encuentra aquí: aquí)
Una vez que haya generado su archivo de configuración, ahora puede comenzar a agregar o eliminar "segmentos", los componentes básicos de su shell. La lista de segmentos disponibles se puede ver aquí.
También puedes crear segmentos personalizados. Comience copiando un segmento existente como este. Asegúrese de cambiar cualquier importación relativa a importación absoluta. Es decir. cambiar cosas como:
from .. utils import BasicSegment
a
from powerline_shell . utils import BasicSegment
Luego cambie la función add_to_powerline
para hacer lo que quiera. Luego puedes usar este segmento en tu configuración colocando la ruta a tu segmento en la sección de segmentos, como:
"segments" : [
" ~/path/to/segment.py "
]
Hay dos segmentos especiales disponibles. stdout
acepta un comando arbitrario y el resultado del comando se colocará en su indicador. env
toma una variable de entorno y el valor de la variable se establecerá en su mensaje. Por ejemplo, su configuración podría verse así:
{
"segments": [
"cwd",
"git",
{
"type": "stdout",
"command": ["echo", "hi"],
"fg_color": 22,
"bg_color": 161
},
{
"type": "env",
"var": "DOCKER_MACHINE_NAME"
},
]
}
De forma predeterminada, se utiliza un carácter Unicode (parecido al símbolo >) para separar cada segmento. Esto se puede cambiar cambiando la opción "modo" en el archivo de configuración. Los modos disponibles son:
patched
: el valor predeterminado.compatible
: intenta utilizar caracteres que pueden estar ya disponibles utilizando la fuente elegida.flat
: no se utiliza ningún separador entre segmentos, lo que le da a cada segmento una apariencia rectangular (y también ahorra espacio). El directorio powerline_shell/themes
almacena temas para su mensaje, que son básicamente valores de color utilizados por los segmentos. default.py
define un tema predeterminado que se puede usar de forma independiente, y todos los demás temas recurren a él si faltan colores en algún segmento.
Si desea crear un tema personalizado, comience copiando uno de los temas existentes, como el básico. y actualice su ~/.config/powerline-shell/config.json
, configurando el "theme"
en la ruta del archivo. Por ejemplo, su configuración podría tener:
"theme": "~/mythemes/my-great-theme.py"
Luego podrás modificar los códigos de color a tu gusto. Los colores del tema se especifican mediante códigos de color Xterm-256.
En colortest.py
se proporciona un script para probar combinaciones de colores. Ten en cuenta que los colores que ves pueden variar dependiendo de tu terminal. Al diseñar un tema, pruebe su tema en múltiples terminales, especialmente con la configuración predeterminada.
Algunos segmentos admiten configuraciones adicionales. Las opciones para el segmento están anidadas bajo el nombre del segmento mismo. Por ejemplo, todas las opciones para el segmento cwd
están configuradas en ~/.config/powerline-shell/config.json
como:
{
"segments": [...],
"cwd": {
options go here
}
"theme": "theme-name",
"vcs": {
options go here
}
}
Las opciones para el segmento cwd
son:
mode
: si es plain
, se utilizará texto simple para mostrar el cwd. Si es dironly
, solo se mostrará el directorio actual. De lo contrario, expande cwd a directorios individuales.max_depth
: número máximo de directorios para mostrar en la ruta.max_dir_size
: número máximo de caracteres mostrados para cada directorio en la ruta.full_cwd
: si es verdadero, el último directorio no se acortará cuando se use max_dir_size
. El segmento hostname
ofrece una opción:
colorize
: si es verdadero, el nombre de host se coloreará según un hash de sí mismo. El segmento vcs
ofrece una opción:
show_symbol
: si es true
, el segmento del sistema de control de versiones comenzará con un símbolo que representa el sistema de control de versiones específico en uso en el directorio actual. Las opciones para el segmento battery
son:
always_show_percentage
: si es verdadero, muestra el porcentaje cuando está completamente cargado con CA.low_threshold
: porcentaje de umbral para el color del indicador de batería baja. Las opciones para el segmento time
son:
format
: Formatee la cadena como la usa la función strftime, por ejemplo, %H:%M
. El directorio powerline_shell/segments
contiene scripts de Python que se inyectan tal cual en un único archivo powerline_shell_base.py
. Cada script de segmento define una función que inserta uno o más segmentos en el mensaje. Si desea agregar un nuevo segmento, simplemente cree un nuevo archivo en el directorio de segmentos.
Asegúrese de que su secuencia de comandos no introduzca nuevos valores globales que puedan entrar en conflicto con otras secuencias de comandos. Su secuencia de comandos debería fallar silenciosamente y ejecutarse rápidamente en cualquier escenario.
Asegúrese de introducir nuevos colores predeterminados en themes/default.py
para cada segmento nuevo que cree. Pruebe su segmento con este tema primero.
Debe agregar pruebas para su segmento lo mejor que pueda. Tanto las pruebas unitarias como las de integración son bienvenidas. Ejecute sus pruebas ejecutando el script test.sh
Utiliza docker
para gestionar las dependencias y el entorno. Alternativamente, puede ejecutar el comando nosetests
después de instalar los requisitos en requirements-dev.txt
.
Consulte las preguntas frecuentes. Si continúa teniendo problemas, abra un problema.