WTF the terminal dashboardでターミナル上にいろいろ表示する

## はじめに
[WTF](https://wtfutil.com/)はターミナル上(iterm2など)で個人用のダッシュボードを表示するツールです。Googleカレンダー、天気、PCのバッテリー残量、ニュースフィード、GitHubのリポジトリ情報など様々な情報をターミナル上に表示できます。
社内のTypetalk上にある技術情報を共有するトピックで紹介されていて、「これは便利そう」と思ったのでさっそく使ってみました。

## 前提条件
- macOS上で操作すること。
    - バイナリでインストールすれば、LinuxやFreeBSD上でも動作するようです。

## 参考情報
- [WTF - the terminal dashboard](https://wtfutil.com/)
- [WTF the terminal dashboard でターミナル上にGoogleカレンダーを表示する](https://qiita.com/revsystem/items/b2ca817e7c30d5138cca)

## WTFをインストール
[INSTALLATION](https://wtfutil.com/getting_started/installation/) を参考にインストールします。


### Homebrewの場合
```shell-session
brew tap wtfutil/wtfutil
brew install wtfutil

wtfutil
```

### バイナリの場合
[https://github.com/wtfutil/wtf/releases](https://github.com/wtfutil/wtf/releases) から自分の環境にあう最新版を取得し、展開。そのディレクトリに移動し、以下コマンドを実行。

```shell-session
./wtfutil
```

### WTFを起動
すでにインストールの手順で書いてあるとおり、Homebrewでインストールした場合は`wtfutil`、バイナリでインストールした場合はバイナリがあるディレクトリで`./wtfutil`を実行するとWTFが起動します。

初回起動時に設定ファイル `~/.config/wtf/confg.yml` が生成され、この内容に従ってダッシュボードが表示されます。(v0.21.0以前は手動での作成が必要です)
ダッシュボードにはWTFのモジュールを組み合わせることで様々な情報を表示することができます。
<img width="881" alt="Screen_Shot_2019-09-01_at_18_49_48 2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/c0d2f68e-35eb-61f9-788e-b58a72187157.png">



左の縦長の列が`~/.config/wtf/confg.yml`の内容。1 とキーボードフォーカスがついています。 1 を入力すると、このカラムにフォーカスが移動します。Enterでデフォルトのテキストエディタが開きconfg.ymlが編集できます。
<img width="881" alt="Screen_Shot_2019-09-01_at_19_01_38.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/80c5e6ec-1513-efab-7d87-10e00bdfb44d.png">



1行目に2つ並んだカラムは、各種都市・タイムゾーンの時計です。表示したい都市・タイムゾーンはconfg.ymlで定義可能です。


2行目の`Feed Reader`には、ニュースフィード(RSSやatom)から取得した情報が表示されます。ここには 2 とキーボードフォーカスがついています。
フォーカスを移動したあと、キーボードの↑↓で行の移動ができ、Enterでそのフィードをブラウザで開きます。
<img width="881" alt="Screen_Shot_2019-09-01_at_19_04_39.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/f092077c-2f1d-4f90-bcbf-14670a3d1eb7.png">


3行目には左側にインターネット接続時のグローバルIPアドレス、プロバイダー名、都市名などの情報が表示されています。右側にはバッテリーの充電状況や残り稼働時間などが表示されています。

4行目には、`uptime`コマンドの結果が表示されています。


## config.ymlのカスタマイズ
上記のスクリーンショットではClocksのカラム内で行が途中で折り返しているため、幅の設定が合っていないようです。(wtf/grid/columnsの設定)
そのほか、自分に必要なモジュールを並べて全体的にカスタマイズしてみました。

TodoリストやPCのリソース情報、ニュースフィード、天気予報などを並べています。
<img width="881" alt="Screen Shot 2019-09-01 at 20.05.51.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/61809/08327130-81c5-8003-e305-f4cf01b48616.png">

`~/.config/wtf/confg.yml` は以下のように定義しています。

```yaml
wtf:
  colors:
    border:
      focusable: darkslateblue
      focused: orange
      normal: gray
  grid:
    columns: [35, 35, 35]
    rows: [10, 10, 10, 10]
  refreshInterval: 1
  mods:
    clocks:
      colors:
        rows:
          even: "lightblue"
          odd: "white"
      enabled: true
      locations:
        UTC: "Etc/UTC"
        New York: "America/New_York"
        Amsterdam: "Europe/Amsterdam"
        Paris: "Europe/Paris"
        Tokyo: "Asia/Tokyo"
        Singapore: "Asia/Singapore"
      position:
        top: 0
        left: 1
        height: 1
        width: 1
      refreshInterval: 15
      sort: "alphabetical"
      title: "🕗 World Clocks"
      type: "clocks"
    feedreader:
      enabled: true
      feeds:
      - http://www.publickey1.jp/atom.xml
      feedLimit: 10
      position:
        top: 3
        left: 0
        height: 1
        width: 3
      title: "📰 News"
      updateInterval: 14400
    prettyweather:
      colors:
        name: "lightblue"
        value: "white"
      enabled: true
      position:
        top: 1
        left: 1
        height: 1
        width: 1
      title: "☀️ Weather"
      City: "Fukuoka"
      refreshInterval: 150
    power:
      enabled: true
      position:
        top: 0
        left: 2
        height: 1
        width: 1
      refreshInterval: 15
      title: "⚡️"
    hackernews:
      enabled: true
      numberOfStories: 10
      storytype: top
      position:
        top: 2
        left: 0
        height: 1
        width: 3
      title: "🗞 HackerNews"
      refreshInterval: 300
    resourceusage:
      enabled: true
      position:
        top: 1
        left: 2
        height: 1
        width: 1
      title: "💻 Resouce"
      refreshInterval: 1
    todo:
      checkedIcon: "X"
      colors:
        checked: gray
        highlight:
          fore: "black"
          back: "orange"
      enabled: true
      filename: "todo.yml"
      position:
        top: 0
        left: 0
        height: 2
        width: 1
      title: "📋 ToDo"
      refreshInterval: 3600
```

## モジュール
[MODULES](https://wtfutil.com/modules/)に様々なモジュールが公開されていたり、オリジナルのモジュールも開発できるようなのでカスタマイズの幅は広そうです。

Googleカレンダーを表示するサンプルは、[WTF the terminal dashboard でターミナル上にGoogleカレンダーを表示する](https://qiita.com/revsystem/items/b2ca817e7c30d5138cca) に記載しました。