【ターミナル改造⑦】ターミナル上で、「天気やニュース、Docker」等の様々な情報を集約したダッシュボード表示が可能な「WTF」を導入

- 白黒ターミナルを利用する生活が多くなってきた無機質生活に、少々彩りを加えるために奔走する記事第七弾。
- 「集約と分散」という気分が日毎に切り替わるため、ブラウザのタブ数変遷が波打つ。
- 今回は、ターミナルで「天気・ニュース・容量・Docker」等のあらゆる情報を集約できる「WTF」を導入することにしよう。

## 概要や特徴
- Go製の、Terminal等で利用できる個人情報ダッシュボード
- PC情報や時刻情報、カレンダーやRSS等の様々な情報を一つの端末に集約できる。
- そのため、複数の「アプリケーションやブラウザタブ」の起動を防ぐことも可能。
- [公式Github](https://github.com/wtfutil/wtf)
- [公式サイト](https://wtfutil.com/)

## 結果
- 下記のように、ターミナル上に時刻や容量、Git等の様々な情報を集約したダッシュボードを表示することができる。

<img width="721" alt="wtf.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336499/a3650860-0037-75c9-974f-9f9f5581c2cb.png">

- また、これらを表示するための設定は、下記のような単一のyamlファイルに記述するのみのため、追加や削除、配置デザインが容易。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336499/2d472d28-df13-19b6-a5b8-4ec208fcb2bc.png)

## インストール

### Mac
- MacでWTFを利用する場合、下記のコマンドをうちHomebrewを利用してインストールする。
    - **※Homebrew未導入の場合、[こちら](https://brew.sh/index_ja)を参考にインストールする。**

```bash
# WTFのインストール
$ brew tap wtfutil/wtfutil
$ brew install wtfutil
```

### ダウンロード
- 直接リリースページからダウンロードする際には、[こちら](https://github.com/wtfutil/wtf/releases)のページにアクセスして、最新版を各環境に合わせてダウンロードする。

## 起動と終了

- 下記のコマンドを入力するだけで、WTFのダッシュボード画面を起動することが可能。

```bash
# ダッシュボードの起動
$ wtfutil

# 下記はリリースページからのダウンロードの場合の起動の仕方
# ダウンロードしたWTFフォルダへの移動
$ cd wtfダウンロード先フォルダ
# ダッシュボード起動
$ ./wtfutil
```

- 終了する際には、「**Ctrl(control) + c**」で閉じることが可能。

## 画面表示設定
- 起動画面確認終了後、実際にダッシュボードへの表示設定の基本手順をみていく。
- 主なダッシュボードへの設定の流れとしては下記。
    - 1. **ダッシュボードへ表示する内容を[こちらの利用可能モジュールリスト](https://wtfutil.com/modules/)から確認。**
    - 2. **表示内容を選択後、利用モジュールページのマニュアルの形式通り(例: [時計モジュール](https://wtfutil.com/modules/clocks/))に設定ファイルの`~/.config/wtf/confg.yml`へ記述**
    - 3. **記述後、`wtfutil`コマンドで起動して、表示確認を行う。**
- **※設定ファイルである`~/.config/wtf/confg.yml`は、最初に`wtfutil`コマンドで起動する際に自動生成されるため、作成する必要はない。**

## 設定ファイル例
- **※WTF dashboardで利用可能なモジュールリストは幅広いため、表示内容は様々。**
- **※下記の設定ファイルは、基本の表示内容の一例のため、内容に応じて修正・追加等を行う。**
    - **※下記の設定ファイル内で定義している「git」の「repositories」設定のファイルパスは、表示させたい任意のローカルフォルダを指定する。**

```yaml:~/.config/wtf/confg.yml

wtf:
  colors:
    border:
      focusable: darkslateblue
      focused: orange
      normal: gray
  grid:
    columns: [32, 32, 32, 32]
    rows: [10, 10, 10, 4, 4]
  refreshInterval: 1
  mods:
    clocks:
      colors:
        rows:
          even: "lightblue"
          odd: "white"
      enabled: true
      locations:
        Tokyo: "Asia/Tokyo"
        UTC: "Etc/UTC"
      position:
        top: 0
        left: 1
        height: 1
        width: 1
      refreshInterval: 15
      sort: "alphabetical"
      title: "時刻"
      type: "clocks"
    ipinfo:
      colors:
        name: "lightblue"
        value: "white"
      enabled: true
      position:
        top: 1
        left: 1
        height: 1
        width: 1
      refreshInterval: 150
    power:
      enabled: true
      position:
        top: 0
        left: 2
        height: 1
        width: 1
      refreshInterval: 15
      title: "電池"
    prettyweather:
      enabled: true
      city: "Naha, Japan"
      position:
        top: 1
        left: 2
        height: 1
        width: 1
      refreshInterval: 300
      title: "天気"
      language: "ja"
    security:
      enabled: true
      position:
        top: 2
        left: 2
        height: 1
        width: 1
      refreshInterval: 3600
    feedreader:
      enabled: true
      feeds:
      - http://qiita.com/tags/Ruby/feed
      feedLimit: 10
      position:
        top: 0
        left: 0
        height: 1
        width: 1
      title: "Qiita ~ Ruby ~"
      refreshInterval: 14400
    git:
      commitCount: 5
      commitFormat: "[forestgreen]%h [grey]%cd [white]%s [grey]%an[white]"
      dateFormat: "%H:%M %d %b %y"
      enabled: true
      position:
        top: 1
        left: 0
        height: 2
        width: 1
      refreshInterval: 8
      repositories:
      - "/Users/xxxx/xxxx/xxxx"
    docker:
      type: docker
      enabled: true
      labelColor: Green
      position:
        top: 2
        left: 1
        height: 1
        width: 1
      refreshInterval: 1
```

- 上記の設定ファイル記述後、`wtfutil`コマンドで起動して、下記のような画面構成担っていることを確認。

<img width="721" alt="wtf.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336499/a3650860-0037-75c9-974f-9f9f5581c2cb.png">

## 操作
- **※基本的な操作としては、「起動→ダッシュボード内容の表示確認→終了」のみ。**
- ただ、下記のようにタイトル項目に、「**タイトル <INS>数字</INS>**」での表示項目になっている場合、表示内容を操作することが可能。
    - **※操作方法としては、起動画面で「<INS>数字</INS>」に対応する数字キーをクリックするのみで、表示内容項目へフォーカスされる。**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/336499/299a9b5c-f07c-f917-b20f-18969049c0e5.png)

- 表示内容へフォーカス後、矢印キー等で項目を選択でき、任意の項目で**Enterキー**をクリックすると、その項目の関連ページへ自動で遷移する。
    - **例: ニュースフィードの場合は、その項目のURLへ遷移する(ChromeやFirefox等)**
    - **例: テキストファイルの場合、デフォルトのエディタへ遷移する(Visual Studio CodeやAtom等)**

## まとめ
- 今回は個人情報ダッシュボードの導入ということで、「あらゆる情報集約」とそれによる「集中力分散」という二大高揚気分を味わいながら記事を書く。
- 導入したことによる嬉々感と、脳内への大量情報の集中投下によって、何者かを喪失。
- 色々整ってきたターミナル改造道を、まだひた走るため、次回の改造計画を立てることにしよう。

## 参考
- https://github.com/wtfutil/wtf  
→公式Githubです。大変お世話になりました。
- https://wtfutil.com/  
→公式マニュアルです。大変お世話になりました。
- https://qiita.com/revsystem/items/662fd831fcd1e232bf6a  
→こちらの記事を参考にしました。大変お世話になりました。