2019年11月19日火曜日

ConEmu+Powerline

WSL + Alacritty で Powerline を使う

上記をそのまま使った

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
$ sudo apt install pkg-config libssl-dev
$ cargo install powerline-rs

~/.bashrcに追加
prompt() {
    PS1="$(powerline-rs --shell bash $?)"
}
PROMPT_COMMAND=prompt

ConEmuのフォントの設定でフォントをPowerlineに対応している物に変える
フォント
こうなった

白源 (はくげん/HackGen)
https://qiita.com/tawara_/items/374f3ca0a386fab8b305


Powerline Shell

b-ryan   
powerline-shell – 美しくて便利なシェルのプロンプト
投稿日:2018年4月20日
Github: https://github.com/b-ryan/powerline-shell

Bash、ZSH、Fish、およびtcshに対するプロンプトのようなPowerline:

バージョン管理

Powerlineシェルでサポートされているバージョンコントロールシステムはすべて、レポの状態をすばやく確認できます。

・ブランチが汚れていると、現在のブランチが表示され、背景色が変わります。
・ローカルブランチがリモートと異なる場合、git pushまたはpullが保留中であるかどうかを示す⇡または⇣とともに、コミット数の違いが示されます。

ファイルが変更された場合、または競合が発生した場合、状況は次の記号で要約されます。

・✎ – ファイルが変更されました(gitではコミットのためにステージングされていません)
・✔ – ファイルはコミットのためにステージングされ(git)、追跡のために追加されます
・✼ – ファイルに競合があります
・? – ファイルがトラッキングされていない

複数のファイルが一致する場合、これらのそれぞれに番号が表示されます。

セグメントは、使用中のバージョン管理システムを表すシンボルで始まります。 そのシンボルを表示するには、設定ファイルに変数vcsがあり、オプションshow_symbolがtrue設定されている必要があります( セグメント設定を参照)。

セットアップ

このスクリプトは、ANSIカラーコードを使用して端末に色を表示します。 これらは携帯ではないことが知られているので、すぐに使えないかもしれませんが、$ TERMをxterm-256color設定してみてください。

・端末に使用するフォントにパッチを適用してください: powerline-fontsを参照してください。
 ・あなたの端末で作業用フォントを手に入れようと苦労しているなら、 “compatible”モードを使うことができます。
 ・古いパッチを適用したフォントを使用している場合は、古い記号を使用する必要があります。 基本的には、 このコミットをコピーしてください。

・pipを使ってインストールする:

$ pip install powerline-shell

( --userオプションを使ってあなたのユーザのためにインストールすることもできますが、正しく動作させるためにはPATHを操作する必要があります ) 。

・または、gitリポジトリからインストールします:

$ git clone https://github.com/b-ryan/powerline-shell
$ cd powerline-shell
$ python setup.py install

・以下のシェルの手順に従って、シェルプロンプトを設定します。

Bash

.bashrc (またはMacの場合は.profile )に以下を追加します。

function _update_ps1() {
    PS1=$(powerline-shell $?)
}

if [[ $TERM != linux && ! $PROMPT_COMMAND =~ _update_ps1 ]]; then
    PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi

ZSH

.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" ]; then
    install_powerline_precmd
fi

Fish

〜/ .config / fish / config.fishのfish_promptを再定義する:

function fish_prompt
    powerline-shell --shell bare $status
end

tcsh

.tcshrc以下を追加してください:

alias precmd 'set prompt="`powerline-shell --shell tcsh $?`"'

カスタマイズ

設定ファイル

Powerline-shellは、設定ファイルを使用してカスタマイズできます。 このファイルは~/.config/powerline-shell/config.jsonです。 この場所でデフォルトの設定を生成するには、次のコマンドを使用します。

$ powerline-shell --generate-config > ~/.powerline-shell.json
* 内容は ~/.config/powerline-shell/config.json と同じにした

Setting up powerline on Ubuntu 18.04
https://medium.com/@ike_okonkwo/setting-up-powerline-on-ubuntu-18-04-a87866577781

To customize powerline, you should make modifications to the config file here

~/.config/powerline-shell/config.json

If you don't have this file, you can create it as follows :

mkdir -p ~/.config/powerline-shell && \
powerline-shell --generate-config > ~/.config/powerline-shell/config.json

Here is a copy of my basic config file
-----
"segments": [
    "virtual_env",
    "username",
    "hostname",
    "ssh",
    "cwd",
    "git",
    "git_stash",
    "hg",
    "jobs",
    "root",
    "exit_code"
  ],
   "mode": "compatible",
   "cwd": {
    "mode": "plain",
    "max_depth": 2,
    "colorize" : true
   },
      "theme" : "solarized_dark"
  }
  -----


セグメントの追加、削除、再配置

設定ファイルを生成したら、シェルのビルディングブロックである “セグメント”の追加または削除を開始できます。 使用可能なセグメントのリストは次のとおりです。

・aws_profile – 使用中のAWSプロファイルを表示します。 AWSのドキュメントを参照してください。
・battery – batteryパーセンテージとバッテリーの充電中のアイコンを表示します。
・bzr – 現在のBazaarレポに関する詳細。
・cwd – 現在の作業ディレクトリを表示します。 いくつかのオプションについては、 セグメント設定を参照してください。
・exit_code – 前のコマンドがゼロ以外のステータスで終了すると、終了ステータスの値が赤で表示されます。
・fossil – 現在のFossilレポに関する詳細。
・git – 現在のGitリポジトリの詳細。
・git_stash – 現在のGitリポジトリのstashの数。
・hg – 現在のMercurialレポについての詳細。
・hostname – 現在のマシンのホスト名。
・jobs – 現在実行中のバックグラウンドジョブの数。
・newline – プロンプトに改行を挿入します。
・node_version – node --version
・npm_version – npm --version
・php_version – マシン上のphpのバージョン。
・rbenv – rbenv local
・read_only – 現在のディレクトリが読み取り専用の場合、ロックアイコンを表示します。
・root – rootとしてログインしている場合は# 、それ以外の場合は$ます。
・ruby_version – ruby --version
・set_term_title – できれば、便利な情報を含むように端末のタイトルを設定します。
・ssh – SSH経由でログインすると、ネットワークアイコンが表示されます。
・svn – 現在のSVNリポジトリの詳細。
・time – 現在の時刻を表示します。
・uptime – 現在のマシンのuptime 。
・username – ログインしているユーザの名前。
・virtual_env – 現在の仮想envまたはconda envの名前を表示します。

セグメントセパレータ

デフォルトでは、各セグメントを区切るためにユニコード文字(>記号に似ています)が使用されます。 これは、設定ファイルの “mode”オプションを変更することで変更できます。 使用可能なモードは次のとおりです。

・patched – デフォルト。
・compatible – 選択したフォントを使用してすでに使用可能な文字を使用しようとします。
・flat – セグメント間にセパレータは使用されず、各セグメントに長方形の外観が与えられます(またスペースも節約されます)。

テーマ

powerline_shell/themesディレクトリには、基本的にセグメントによって使用される色の値であるプロンプトのテーマが格納されています。 default.pyはスタンドアローンで使用できるデフォルトのテーマを定義し、他のすべてのテーマはいずれのセグメントの色も見逃していればそれに戻ります。

カスタムテーマを作成する場合は、 基本テーマのように既存のテーマの1つをコピーします。 ~/.powerline-shell.jsonを更新し、 "theme"をファイルのパスに設定します。 たとえば、設定には次のようなものがあります。

  "theme": "~/mythemes/my-great-theme.py"

その後、好みに合わせてカラーコードを変更することができます。 テーマの色は、 Xterm-256カラーコードを使用して指定します 。

色の組み合わせをテストするためのスクリプトは、 colortest.pyで提供されていcolortest.py 。 表示される色は端末によって異なる場合があります。 テーマを設計するときは、特に既定の設定で複数の端末でテーマをテストしてください。
セグメント構成

一部のセグメントは追加構成をサポートします。 セグメントのオプションは、セグメント自体の名前の下にネストされます。 たとえば、 cwdセグメントのすべてのオプションは、 ~/.powerline-shell.jsonように設定されます。

{
    "segments": [...],
    "cwd": {
        options go here
    }
    "theme": "theme-name",
    "vcs": {
        options go here
    }
}

cwdセグメントのオプションは次のcwdです。

・mode :単純なら、単純なテキストを使ってcwdを表示します。 dironly場合、現在のディレクトリだけが表示されます。 それ以外の場合は、cwdを個々のディレクトリに展開します。
・max_depth :パスに表示する最大ディレクトリ数。
・max_dir_size :パス内の各ディレクトリーに表示される最大文字数。
・full_cwd :trueの場合、 max_dir_sizeを使用すると、最後のディレクトリは短縮されません。

hostnameセグメントは1つのオプションを提供します:

・colorize :trueの場合、ホスト名は自身のハッシュに基づいてカラー化されます。

vcsセグメントには1つのオプションがあります。

・show_symbol : true場合、バージョン管理システムセグメントは、現在のディレクトリで使用されている特定のバージョン管理システムを表すシンボルで始まります。

batteryセグメントのオプションは次のとおりです。

・always_show_percentage :trueの場合、ACで完全に充電されたときのパーセンテージを表示します。
・low_threshold :バッテリlow_thresholdインジケータの色のしきい値パーセンテージ。

新しいタイプのセグメントの貢献

powerline_shell/segmentsディレクトリには、powerline_shell_base.pyという1つのファイルにそのまま注入されるpythonスクリプトが含まれています。 各セグメントスクリプトは、1つまたは複数のセグメントをプロンプトに挿入する関数を定義します。 新しいセグメントを追加する場合は、セグメントディレクトリに新しいファイルを作成するだけです。

スクリプトで他のスクリプトと競合する可能性のある新しいグローバルが導入されていないことを確認してください。 あなたのスクリプトは静かに失敗し、どんなシナリオでもすばやく実行する必要があります。

作成した新しいセグメントごとにthemes/default.py新しいデフォルトカラーが導入されていることを確認してください。 このテーマでまずセグメントをテストしてください。

あなたはできるだけあなたのセグメントのテストを追加する必要があります。 ユニットテストと統合テストはどちらも歓迎します。 test.shスクリプトを実行してテストを実行します。 依存関係と環境を管理するためにdockerを使用します。 あるいは、 requirements-dev.txtにrequirements-dev.txtインストールした後でnosetestsコマンドを実行することもできます。
----------

下記を使って設定を変更する
https://gist.github.com/lovemecomputer/ddf3297882968993416c6961794c41ca

* 存在しないフォルダ、ファイルは作る事

~/.config/powerline-shell/config.json
-----
{
  "segments": [
    "newline",
    "virtual_env",
    "hostname",     *** hostnameは削除 (.jsonファイルはコメントが付けられないので削除した)
    "ssh",
    "cwd",
    "git",
    "hg",
    "jobs",
    "newline",
    "root"
  ],
  "mode": "patched",
  "cwd": {
    "max_depth": 5
  },
  "theme": "~/.config/powerline-shell/themes/soft-era.py",
  "vcs": {
    "show_symbol": "true"
  }
}
----

~/.config/powerline-shell/themes/soft-era.py
-----
# this theme file placed in "~/.config/powerline-shell/themes/soft-era.py"
# this is a powerline shell theme for use with soft-era iTerm2 theme: https://github.com/soft-aesthetic/soft-era-iterm2

# dark colors:
# 0  black
# 1  darker red (salmon)
# 2  green
# 3  light pink
# 4  blue
# 5  violet?
# 6  purple
# 7  light bg color

# light colors:
# 8  deep purple
# 9  lighter read (coral)
# 10 green
# 11 yellow
# 12 blue
# 13 violet?
# 14 purple
# 15 white

from powerline_shell.themes.default import DefaultColor

class Color(DefaultColor):
    # USERNAME_FG = 15
    # USERNAME_BG = 6
    # USERNAME_FG = 15
    # USERNAME_BG = 13
    USERNAME_FG = 15
    USERNAME_BG = 13
    USERNAME_ROOT_BG = 0

    # HOSTNAME_FG = 15
    # HOSTNAME_BG = 10
    # HOSTNAME_FG = 15
    # HOSTNAME_BG = 14
    # HOSTNAME_FG = 3
    # HOSTNAME_BG = 14
    HOSTNAME_FG = 0
    HOSTNAME_BG = 4

    HOME_SPECIAL_DISPLAY = False
    HOME_BG = 4
    HOME_FG = 0
    PATH_FG = 0
    PATH_BG = 4
    CWD_FG = 0
    SEPARATOR_FG = 14

    READONLY_BG = 0
    READONLY_FG = 15

    SSH_BG = 0
    SSH_FG = 15

    REPO_CLEAN_FG = 0
    REPO_CLEAN_BG = 7
    REPO_DIRTY_FG = 5
    REPO_DIRTY_BG = 7

    JOBS_FG = 4
    JOBS_BG = 7

    CMD_PASSED_FG = 15
    CMD_PASSED_BG = 2
    CMD_FAILED_FG = 15
    CMD_FAILED_BG = 1

    SVN_CHANGES_FG = REPO_DIRTY_FG
    SVN_CHANGES_BG = REPO_DIRTY_BG

    GIT_AHEAD_BG = 7
    GIT_AHEAD_FG = 4
    GIT_BEHIND_BG = 7
    GIT_BEHIND_FG = 6
    GIT_STAGED_BG = 7
    GIT_STAGED_FG = 2
    GIT_NOTSTAGED_BG = 7
    GIT_NOTSTAGED_FG = 5
    GIT_UNTRACKED_BG = 7
    GIT_UNTRACKED_FG = 5
    GIT_CONFLICTED_BG = 7
    GIT_CONFLICTED_FG = 1
    GIT_STASH_BG = 7
    GIT_STASH_FG = 6

    VIRTUAL_ENV_BG = 7
    VIRTUAL_ENV_FG = 2

    BATTERY_NORMAL_BG = 7
    BATTERY_NORMAL_FG = 2
    BATTERY_LOW_BG = 7
    BATTERY_LOW_FG = 1

    AWS_PROFILE_FG = 15
    AWS_PROFILE_BG = 2

    TIME_FG = 15
    TIME_BG = 10
-----

こうなった

0 コメント: