Help us understand the problem. What is going on with this article?

WTF the terminal dashboard でターミナル上にGoogleカレンダーを表示する

WTF the terminal dashboard でターミナル上にGoogleカレンダーを表示する

はじめに

WTF the terminal dashboardでターミナル上にいろいろ表示する で設定した~/.config/wtf/confg.ymlにGoogleカレンダーモジュールを追加し、ターミナル上でスケジュール確認が行えるようにしてみました。

前提条件

参考情報

GOOGLE CALENDAR を参考にインストールします。

Google Calendar API を有効にする

Go QuickstartのStep 1にあるENABLE THE GOOGLE CALENDAR APIをクリックします。

Screen Shot 2019-09-15 at 10.48.19.png

Google Calendar API が有効になり、認証情報が発行されます。表示されたウィンドウ内のDOWNLOAD CLIENT CONFIGURATIONをクリックすると credentials.json がダウンロードされるので "~/.config/wtf/gcal/credentials.jsonに配置します。

Screen_Shot_2019-09-15_at_12_08_19.png

~/.config/wtf/gcal/ はデフォルトでは存在しないので、配置前に作成しておきます。
gcalやcredentials.jsonは任意の名称をつけることが可能です。後述の config.yml で定義します。

mkdir ~/.config/wtf/gcal/

config.ymlのカスタマイズ

今回追加する Google Calendar モジュールのみ抜粋したサンプルが以下のものです。
Googleアカウントや認証情報は以下の項目に設定します。

email: : Googleアカウントに紐付くメールアドレス
secretFile: : 認証情報を配置したパス

    gcal:
      title: "📅 Calendar"
      colors:
        title: "white"
        description: "lightblue"
        highlights:
        - ['面談', 'green']
        - ['ランチ', 'yellow']
        past: "gray"
      calendarReadLevel: "reader"
      conflictIcon: "🚨"
      currentIcon: "💥"
      displayResponseStatus: true
      email: "test@example.com"
      enabled: true
      eventCount: 12
      multiCalendar: true
      position:
        top: 0
        left: 0
        height: 4
        width: 1
      refreshInterval: 300
      secretFile: "~/.config/wtf/gcal/credentials.json"
      showDeclined: true
      timezone: "Asia/Tokyo"
      withLocation: true

config.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: 1
        height: 1
        width: 2
      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: 1
        height: 1
        width: 2
      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: false
      filename: "todo.yml"
      position:
        top: 0
        left: 0
        height: 2
        width: 1
      title: "📋 ToDo"
      refreshInterval: 3600
    gcal:
      title: "📅 Calendar"
      colors:
        title: "white"
        description: "lightblue"
        highlights:
        - ['面談', 'green']
        - ['ランチ', 'yellow']
        past: "gray"
      calendarReadLevel: "reader"
      conflictIcon: "🚨"
      currentIcon: "💥"
      displayResponseStatus: true
      email: "test@example.com"
      enabled: true
      eventCount: 12
      multiCalendar: true
      position:
        top: 0
        left: 0
        height: 4
        width: 1
      refreshInterval: 300
      secretFile: "~/.config/wtf/gcal/credentials.json"
      showDeclined: true
      timezone: "Asia/Tokyo"
      withLocation: true

authorization code の入力

~/.config/wtf/confg.yml を保存後、wtfutil を起動します。

表示されたURLにブラウザでアクセスし、authorization codeを取得します。
(以下のURLは適当にフィルタしています)

wtfutil
Go to the following link in your browser then type the authorization code:
https://accounts.google.com/o/oauth2/auth?access_type=offline&client_id=xxxxxxxxxxxxx-yyyyyyyyyyyyyyyyyyyyyy.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&response_type=code&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fcalendar.readonly&state=state-token (press 'return' before inserting the code)

URLにアクセスすると、Googleアカウントの選択画面が表示されます。今回、Googleカレンダーと紐付けるアカウントを選択します。
Screen_Shot_2019-09-15_at_12_31_49.png

Google Calendar APIでカレンダー情報にアクセスすることを許可します。
Screen_Shot_2019-09-15_at_12_32_19.png

表示された authorization code をコピーし、さきほどURLが表示されたコンソールに貼り付けます。
貼り付ける前にEnterを押すことを忘れずに。

Screen_Shot_2019-09-15_at_12_32_43.png

Google カレンダーを表示

このようにGoogleカレンダーが表示されます。特定のキーワードによって文字色を変えることもできます。
GOOGLE CALENDAR にあるドキュメントが参考になります。

Screen_Shot_2019-09-15_at_12_51_51.png

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした