powerline-shell, powerlineで環境変数を表示させる

powerline-shell, powerlineそれぞれで環境変数を表示させるときの手順メモです。
今回は環境変数として`ROS_DOMAIN_ID`を表示させます。

- [powerline-shellの場合](#powerline-shellの場合)
- [powerlineの場合](#powerlineの場合)

## powerline-shellの場合

### powerline-shellの導入

- ubuntu20.04
- pip

上記環境での手順です。

```sh:Terminal
pip install powerline-shell
```

~/.bashrcに以下記入

```~/.bashrc
function _update_ps1() {
  PS1=$(powerline-shell $?)
}

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

### 環境変数の表示設定

powerline-shellのconfigファイルを生成します。

```sh:Terminal
mkdir -p ~/.config/powerline-shell && \
powerline-shell --generate-config > ~/.config/powerline-shell/config.json
```

生成したconfigファイルを以下のように変更します。
`"var": "ROS_DOMAIN_ID"`の部分を表示させたい環境変数に適宜変更してください。

```json:powerline-shell/config.json
{
  "segments": [
    "virtual_env",
    "username",
    "hostname",
    "ssh",
    "cwd",
    "git",
    "hg",
    "jobs",
    "root",
    {
      "type": "env",
      "var": "ROS_DOMAIN_ID"
    }
  ]
}
```

### 表示

![powerline-shell_test.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265916/bae8e36b-8682-7131-fffc-0e14c57d8915.png)
設定した環境変数に表示が変更されることが確認できました。


## powerlineの場合

### powerlineの導入

こちらはubuntu環境の場合、`apt`でインストールでするのが最も簡単です。
以下記事に導入から色の設定等の内容を説明してくれていたので、こちらの記載の通りに進めました。
ここでは、最低限の必要な内容のみ記載しておきます。

- [UbuntuのPowerlineをカスタマイズする - Zenn](https://zenn.dev/kmiura55/articles/ubuntu-use-powerline)

```sh:Terminal
sudo apt install powerline
```

~/.bashrcに以下記入

```~/.bashrc
# Powerline configuration
if [ -f /usr/share/powerline/bindings/bash/powerline.sh ]; then
  powerline-daemon -q
  POWERLINE_BASH_CONTINUATION=1
  POWERLINE_BASH_SELECT=1
  source /usr/share/powerline/bindings/bash/powerline.sh
fi
```

標準でインストールされる設定ファイルの`~/.config`へのコピー

```sh:Terminal
mkdir -p ~/.config/powerline
cp -R /usr/share/powerline/config_files/* \
      ~/.config/powerline/
```

これで`~/.config/powerline`以下のファイルを編集することでカスタマイズ可能になります。

### 環境変数の表示設定

powerlineでの端末に表示される内容は、`~/.config/powerline/themes/shell/default_leftonly.json`を編集することで端末に表示するものを変更することができます。
また、powerlineでの環境変数の詳細はここに記述がありました : [powerline.segments.common.env.environmentの設定](https://powerline.readthedocs.io/en/master/configuration/segments/common.html#powerline.segments.common.env.environment)

今回は、以下内容を`default_leftonly.json`に追記しました。

```powerline/themes/shell/default_leftonly.json
{
    "function": "powerline.segments.common.env.environment",
        "args": {
            "variable": "ROS_DOMAIN_ID"
        }
},
```

こちらは、`"args":{}`内の`"variable:"`の部分で表示させたい環境変数が設定可能です。


### 表示

![Screenshot from 2022-06-26 21-18-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/265916/921ed8d2-a7b2-4cf8-542a-c27d9ffb404a.png)
powerlineでも設定した環境変数に表示が変更されることが確認できました。
こちらでは、何も設定していない場合は`None`の表示がないようです。


## 参考
- [Powerline-shellでターミナルを改造しよう - Qiita](https://qiita.com/tocomi/items/c0127c44eded54b43c11)
- [b-ryan/powerline-shell - GitHub](https://github.com/b-ryan/powerline-shell)
- [UbuntuのPowerlineをカスタマイズする - Zenn](https://zenn.dev/kmiura55/articles/ubuntu-use-powerline)
- [Powerlineで基本的なカスタマイズをする tmuxのセグメント編](https://unskilled.site/powerline%E3%81%A7%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E3%82%92%E3%81%99%E3%82%8B-tmux%E3%81%AE%E3%82%BB%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88/)
- [Common segments > powerline.segments.common.env.environment - Powerline](https://powerline.readthedocs.io/en/master/configuration/segments/common.html#powerline.segments.common.env.environment)