♦️

macOSのメニューバーにEthereumやPolygonのガス代を表示させる

2022/01/31に公開

こういった感じで表示できるようにします

Ethereum

Polygon

Step1: xBar または SwitBar をインスールします

補足:もともとBitBarというソフトがあったのですが、あまりメンテナンスされなくなってSwitBarが誕生しました。その後BitBarがxBarとして生まれ変わります。私はSwitBarを使っていたのですが、xBarのほうが今は人気がありそうなので、xBarの設定方法を記述します。なおどのソフトもメニューバー上で小さなプログラムを動かして表示するツールです。

開発者などでHomebrewを設定している方は brew install --cask xbar でインストールできます。(Hombrew: https://formulae.brew.sh/cask/xbar)

そうでない方は https://xbarapp.com/ に行って右上の Download xbar for macOS をクリックすると xbar.v2.1.7-beta.dmg などが見つかると思うので、そこからインストールしてください。アプリケーションの実行許可を聞かれた場合は許可をしてください。

Step2: ruby の実行環境を用意する

このプラグインはrubyで書かれています。なのでrubyの実行環境が必要です。macOS 10.15以降の場合はrubyが同梱されていないのでインストールが必要です。

ref. https://developer.apple.com/documentation/macos-release-notes/macos-catalina-10_15-release-notes

rbenv などがおすすめです。インストール方法の詳細についてはインストールマニュアルを見るか、ネット上にもいくつか記事がありますので各人でご参照ください。
https://github.com/rbenv/rbenv#installation

Step3: プラグインをインストールする

Plugin browserから追加する(準備中)

xBarを起動するとメニューバーに表示されます。ここのPlugin browserからプラグインをインストールできるようにリクエスト出していますが、まだマージされてません(本日PRを作成したので)。

Pull Request: https://github.com/matryer/xbar-plugins/pull/1770

マニュアルで追加する

プラグインをマニュアルでも追加できます。下記のところでコードを公開していますのでダウンロードしてください。

https://github.com/geeknees/xbar-plugins

Download ZIP からダウンロードできます。下記のところからプラグインを設置するフォルダを開けるので、eth_gas_widget.10m.rb と polygon_gas_widget.10m.rb を設置すると追加できます。

Step4: APIキーを追加する

そのままでも動くのですが、APIキーを設定していないの設定します。APIキーがないとすぐに制限されると思います。Ethereumは https://etherscan.io/ 、Polygonは https://polygonscan.com/ のそれぞれで取得する必要があります。会員登録後下記のページからAPIキーが発行できます。

Step3 で設置したファイルを開いて、それぞれにAPIキーを追記してください。

Ethereum

require 'open-uri'
require 'json'

ENDPOINT = "https://api.polygonscan.com/api?module=gastracker&action=gasoracle&apikey="
APIKEY = "" #←ここに追記してください

charset = nil
html = URI.open(ENDPOINT+APIKEY) do |f|
  charset = f.charset
  f.read
end

response = JSON.parse(html)

puts "♾️ #{response['result']['ProposeGasPrice']}"
puts '---'

response['result'].each do |k, v|
  puts "#{k}: #{v.to_f.floor(5)}"
end

Polygon

require 'open-uri'
require 'json'

ENDPOINT = "https://api.polygonscan.com/api?module=gastracker&action=gasoracle&apikey="
APIKEY = "" #←ここに追記してください

charset = nil
html = URI.open(ENDPOINT+APIKEY) do |f|
  charset = f.charset
  f.read
end

response = JSON.parse(html)

puts "♾️ #{response['result']['ProposeGasPrice']}"
puts '---'

response['result'].each do |k, v|
  puts "#{k}: #{v.to_f.floor(5)}"
end

お疲れさまでした…これで設定が完了です。これで最初に書いたような表示ができると思います。なおガイル名がpolygon_gas_widget.10m.rbとなっているかと思いますが10mのところが更新間隔です。APIの負荷を下げたい場合や、更新頻度を上げたい場合は変更することができますので適宜変更ください。

Discussion