Ein schöner und nützlicher Eingabeaufforderungsgenerator für Bash, ZSH, Fish und tcsh:
Die generierten Eingabeaufforderungen ähneln Powerline, ansonsten hat dieses Projekt jedoch keinen Bezug zu Powerline.
Mit DocToc erstelltes Inhaltsverzeichnis
Alle von Powerline Shell unterstützten Versionskontrollsysteme geben Ihnen einen schnellen Einblick in den Status Ihres Repos:
⇡
oder ⇣
angezeigt, das angibt, ob ein Git-Push oder -Pull aussteht.Wenn Dateien geändert werden oder ein Konflikt vorliegt, wird die Situation mit den folgenden Symbolen zusammengefasst:
✎
– eine Datei wurde geändert (aber nicht zum Festschreiben bereitgestellt, in Git)✔
– Eine Datei wird zum Festschreiben (Git) bereitgestellt oder zur Nachverfolgung hinzugefügt✼
– eine Datei weist Konflikte auf?
– Eine Datei wurde nicht verfolgtNeben jeder Datei wird eine Nummer angezeigt, wenn mehr als eine Datei übereinstimmt.
Das Segment kann mit einem Symbol beginnen, das das verwendete Versionskontrollsystem darstellt. Um dieses Symbol anzuzeigen, muss die Konfigurationsdatei eine Variable vcs
mit einer Option show_symbol
haben, die auf true
gesetzt ist (siehe Segmentkonfiguration).
Dieses Skript verwendet ANSI-Farbcodes, um Farben in einem Terminal anzuzeigen. Diese sind notorisch nicht portierbar und funktionieren daher möglicherweise nicht sofort, aber versuchen Sie, $TERM auf xterm-256color
zu setzen.
Patchen Sie die Schriftart, die Sie für Ihr Terminal verwenden: siehe Powerline-Schriftarten
Mit pip installieren:
pip install powerline-shell
( Wenn Sie möchten, können Sie die Option --user
verwenden, um nur für Ihren Benutzer zu installieren. Möglicherweise müssen Sie jedoch an Ihrem PATH
herumspielen, damit dies ordnungsgemäß funktioniert. )
git clone https://github.com/b-ryan/powerline-shell
cd powerline-shell
python setup.py install
Fügen Sie Ihrer .bashrc
Datei Folgendes hinzu:
function _update_ps1() {
PS1=$(powerline-shell $?)
}
if [[ $TERM != linux && ! $PROMPT_COMMAND =~ _update_ps1 ]]; then
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi
Hinweis: Unter macOS müssen Sie dies zu einem von .bash_profile
, .bash_login
oder .profile
hinzufügen. macOS führt die Dateien in der oben genannten Reihenfolge aus und stoppt die Ausführung bei der ersten gefundenen Datei. Weitere Informationen zur Rangfolge finden Sie im Abschnitt INVOCATION in man bash
.
Fügen Sie Ihrer .zshrc
Folgendes hinzu:
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
fish_prompt
in ~/.config/fish/config.fish neu definieren:
function fish_prompt
powerline-shell --shell bare $status
end
Fügen Sie Folgendes zu Ihrer .tcshrc
hinzu:
alias precmd 'set prompt="`powerline-shell --shell tcsh $?`"'
Powerline-Shell kann mithilfe einer Konfigurationsdatei angepasst werden. Diese Datei befindet sich voraussichtlich unter ~/.config/powerline-shell/config.json
. Sie können die Standardkonfiguration an diesem Ort generieren, indem Sie Folgendes verwenden:
mkdir -p ~/.config/powerline-shell &&
powerline-shell --generate-config > ~/.config/powerline-shell/config.json
(Meine Konfigurationsdatei befindet sich beispielsweise hier: hier)
Sobald Sie Ihre Konfigurationsdatei generiert haben, können Sie nun damit beginnen, „Segmente“ – die Bausteine Ihrer Shell – hinzuzufügen oder zu entfernen. Die Liste der verfügbaren Segmente finden Sie hier.
Sie können auch benutzerdefinierte Segmente erstellen. Beginnen Sie damit, ein vorhandenes Segment wie dieses zu kopieren. Stellen Sie sicher, dass Sie alle relativen Importe in absolute Importe ändern. Dh. Dinge ändern wie:
from .. utils import BasicSegment
Zu
from powerline_shell . utils import BasicSegment
Ändern Sie dann die Funktion add_to_powerline
um das zu tun, was Sie möchten. Sie können dieses Segment dann in Ihrer Konfiguration verwenden, indem Sie den Pfad zu Ihrem Segment in den Abschnitt „Segmente“ einfügen, etwa so:
"segments" : [
" ~/path/to/segment.py "
]
Es stehen zwei spezielle Segmente zur Verfügung. stdout
akzeptiert einen beliebigen Befehl und die Ausgabe des Befehls wird in Ihre Eingabeaufforderung eingefügt. env
nimmt eine Umgebungsvariable und der Wert der Variablen wird in Ihrer Eingabeaufforderung festgelegt. Ihre Konfiguration könnte beispielsweise so aussehen:
{
"segments": [
"cwd",
"git",
{
"type": "stdout",
"command": ["echo", "hi"],
"fg_color": 22,
"bg_color": 161
},
{
"type": "env",
"var": "DOCKER_MACHINE_NAME"
},
]
}
Standardmäßig wird ein Unicode-Zeichen (ähnlich dem >-Symbol) verwendet, um die einzelnen Segmente zu trennen. Dies kann durch Ändern der Option „mode“ in der Konfigurationsdatei geändert werden. Die verfügbaren Modi sind:
patched
– Die Standardeinstellung.compatible
– Versucht, Zeichen zu verwenden, die möglicherweise bereits in der von Ihnen gewählten Schriftart verfügbar sind.flat
– Zwischen den Segmenten wird kein Trennzeichen verwendet, wodurch jedes Segment rechteckig aussieht (und außerdem Platz gespart wird). Das Verzeichnis powerline_shell/themes
speichert Themen für Ihre Eingabeaufforderung, bei denen es sich im Wesentlichen um Farbwerte handelt, die von Segmenten verwendet werden. Die default.py
definiert ein Standardthema, das eigenständig verwendet werden kann, und jedes andere Thema greift darauf zurück, wenn Farben für Segmente fehlen.
Wenn Sie ein benutzerdefiniertes Design erstellen möchten, kopieren Sie zunächst eines der vorhandenen Designs, z. B. das Basisdesign. und aktualisieren Sie Ihre ~/.config/powerline-shell/config.json
und setzen Sie das "theme"
auf den Pfad der Datei. Ihre Konfiguration könnte beispielsweise Folgendes umfassen:
"theme": "~/mythemes/my-great-theme.py"
Anschließend können Sie die Farbcodes nach Ihren Wünschen ändern. Designfarben werden mithilfe von Xterm-256-Farbcodes angegeben.
Ein Skript zum Testen von Farbkombinationen wird unter colortest.py
bereitgestellt. Beachten Sie, dass die angezeigten Farben je nach Terminal variieren können. Wenn Sie ein Theme entwerfen, testen Sie Ihr Theme bitte auf mehreren Endgeräten, insbesondere mit den Standardeinstellungen.
Einige Segmente unterstützen zusätzliche Konfiguration. Die Optionen für das Segment sind unter dem Namen des Segments selbst verschachtelt. Beispielsweise werden alle Optionen für das cwd
-Segment in ~/.config/powerline-shell/config.json
wie folgt festgelegt:
{
"segments": [...],
"cwd": {
options go here
}
"theme": "theme-name",
"vcs": {
options go here
}
}
Die Optionen für das cwd
-Segment sind:
mode
: Wenn plain
, dann wird einfacher Text verwendet, um das CWD anzuzeigen. Bei dironly
wird nur das aktuelle Verzeichnis angezeigt. Andernfalls wird der cwd in einzelne Verzeichnisse erweitert.max_depth
: Maximale Anzahl der im Pfad anzuzeigenden Verzeichnisse.max_dir_size
: Maximale Anzahl der Zeichen, die für jedes Verzeichnis im Pfad angezeigt werden.full_cwd
: Wenn true, wird das letzte Verzeichnis nicht gekürzt, wenn max_dir_size
verwendet wird. Das hostname
-Segment bietet eine Option:
colorize
: Wenn true, wird der Hostname basierend auf einem Hash von sich selbst eingefärbt. Das vcs
-Segment bietet eine Option:
show_symbol
: Bei true
beginnt das Segment des Versionskontrollsystems mit einem Symbol, das das spezifische Versionskontrollsystem darstellt, das im aktuellen Verzeichnis verwendet wird. Die Optionen für das battery
sind:
always_show_percentage
: Wenn true, wird der Prozentsatz angezeigt, wenn das Gerät vollständig mit Wechselstrom aufgeladen ist.low_threshold
: Schwellenprozentsatz für die Farbe der Anzeige für niedrigen Batteriestand. Die Optionen für das time
sind:
format
: Formatierungszeichenfolge, wie sie von der strftime-Funktion verwendet wird, z. B. %H:%M
. Das Verzeichnis powerline_shell/segments
enthält Python-Skripte, die unverändert in eine einzelne Datei powerline_shell_base.py
eingefügt werden. Jedes Segmentskript definiert eine Funktion, die ein oder mehrere Segmente in die Eingabeaufforderung einfügt. Wenn Sie ein neues Segment hinzufügen möchten, erstellen Sie einfach eine neue Datei im Segmentverzeichnis.
Stellen Sie sicher, dass Ihr Skript keine neuen Globals einführt, die zu Konflikten mit anderen Skripten führen könnten. Ihr Skript sollte in jedem Szenario geräuschlos fehlschlagen und schnell ausgeführt werden.
Stellen Sie sicher, dass Sie für jedes neue Segment, das Sie erstellen, neue Standardfarben in themes/default.py
einführen. Testen Sie Ihr Segment zunächst mit diesem Thema.
Sie sollten so gut es geht Tests für Ihr Segment hinzufügen. Sowohl Unit- als auch Integrationstests sind willkommen. Führen Sie Ihre Tests aus, indem Sie das Skript test.sh
ausführen. Es verwendet docker
um Abhängigkeiten und die Umgebung zu verwalten. Alternativ können Sie den Befehl nosetests
ausführen, nachdem Sie die Anforderungen in requirements-dev.txt
installiert haben.
Siehe die FAQ. Wenn Sie weiterhin Probleme haben, öffnen Sie bitte ein Problem.