世界を動かす技術を、日本語で。

リアルタイム気象データに基づくASCIIアニメーション付きターミナル天気アプリ

概要

weathr は、リアルタイム天気データに基づく ASCIIアニメーション 付きターミナル天気アプリ。 Open-Meteo からの天気情報取得や、 自動位置検出 機能を搭載。 雨・雪・雷・飛行機・昼夜サイクルなど多彩な アニメーション表現。 多様なインストール方法と 柔軟な設定オプション を提供。 プライバシーやカスタマイズ性にも配慮した設計。

weathr:リアルタイムASCII天気アプリ

  • リアルタイム天気取得 :Open-MeteoのAPI利用
  • ASCIIアニメーション :雨・雪・雷・飛行機・昼夜サイクルを表現
  • 自動位置検出 :IPアドレスから位置自動判定
  • 多様なカスタマイズ :単位・表示内容・アニメーション制御
  • クロスプラットフォーム対応 :Linux, macOS, NixOS, Arch Linux

インストール方法

  • Cargo による簡単インストール
    • cargo install weathr
  • ソースビルド (Rust必須)
    • git clone https://github.com/veirt/weathr.git
    • cd weathr
    • cargo install --path .
  • Homebrew(macOS)
    • brew install Veirt/veirt/weathr
  • Arch Linux(AUR)
    • yay -S weathr または yay -S weathr-bin
  • Nix flake(NixOS)
    • inputs = { weathr.url = "github:Veirt/weathr"; };
    • environment.systemPackageshome-managerで導入

設定ファイル(config.toml)

  • Linux~/.config/weathr/config.toml または $XDG_CONFIG_HOME/weathr/config.toml

  • macOS~/Library/Application Support/weathr/config.toml

  • 作業ディレクトリ優先 :カレントディレクトリのconfig.tomlが最優先

  • 主な設定項目

    • hide_hud:天気詳細の非表示
    • silent:起動時メッセージ抑制
    • [location]:緯度・経度・自動検出・地名非表示
    • [units]:温度・風速・降水量単位指定
  • サンプル地点設定

    • 東京:latitude = 35.6762, longitude = 139.6503
    • シドニー:latitude = -33.8688, longitude = 151.2093

使い方

  • リアルタイム天気表示
    • weathr
  • 天気シミュレーション
    • 雨:weathr --simulate rain
    • 夜の雪:weathr --simulate snow --night
    • 晴れ・落ち葉:weathr --simulate clear --leaves
  • 対応天気条件
    • 晴れ:clear, partly-cloudy, cloudy, overcast
    • 降水:fog, drizzle, rain, freezing-rain, rain-showers
    • 雪:snow, snow-grains, snow-showers
    • 嵐:thunderstorm, thunderstorm-hail

コマンドラインオプション

  • 単位切替
    • インペリアル:weathr --imperial
    • メトリック(デフォルト):weathr --metric
  • 位置情報関連
    • 自動検出:weathr --auto-location
    • 座標非表示:weathr --hide-location
  • 表示制御
    • HUD非表示:weathr --hide-hud
    • サイレントモード:weathr --silent
    • 複数フラグ同時指定可能

キーボード操作

  • q または Q:終了
  • Ctrl+C:強制終了

環境変数対応

  • NO_COLOR :色出力無効化(アクセシビリティ対応)

  • COLORTERM :truecolorサポート検出("truecolor", "24bit")

  • TERM :ターミナル機能検出(例:"xterm-256color")

    • 例:NO_COLOR=1 weathr

プライバシーと位置情報

  • 自動位置検出 を有効にすると、ipinfo.ioにリクエスト送信しIPベースで位置特定
  • 無効化可能 :設定ファイルでauto = falseとし、手動で座標指定すれば外部API不要

今後のロードマップ

  • OpenWeatherMapWeatherAPI 対応予定
  • AUR 経由のインストールサポート
  • 手動リフレッシュアニメーション速度調整 などのキーバインド追加

ライセンスとクレジット

  • ライセンス :GPL-3.0-or-later
  • 天気データ :Open-Meteo.com(CC BY 4.0)
  • ASCIIアート提供者
    • House/Airplane/Moon:Joan G. Stark
    • Sun:Hayley Jane Wakenshaw (Flump)
  • 著作権帰属不明の場合 は原著者に帰属

Hackerたちの意見

いいプロジェクトだね。でも「cargo install weathr」を試してみたら、もしかしてRustって次のNode.jsになりつつあるのかな? :D

「ダウンロード中」と「コンパイル中」の長いリストを見て、同じことを思ったよ。Cargo.tomlを見た感じ、tokioはこの場合オーバースペックかも。クローンして、依存関係を減らしてみて、どこまでnpmっぽさを減らせるか試してみようかな。

いつか、telnetやsshで接続できるアプリを作りたいな。そうすれば、CLIでpricetracker.wtfができるようになるんだ。いつかね。すごくクールなプロジェクトだよ!

Goには標準ライブラリにSSHサーバーがあるから、これがオーパスでのワンショットプロンプトになるかもしれないね。

charmbracelet/wishが必要なやつだと思うよ。https://github.com/charmbracelet/wish

curl wttr.in/94110を思い出すな。

finger @graph.noも楽しんでるよ。

weatherspect(https://robobunny.com/projects/weatherspect/html/)を思い出したけど、残念ながら使ってたAPIが廃止されちゃって、それ以来動いてないんだよね。

READMEのアニメーションGIFを見て、雷が落ちた瞬間に思わず声を上げちゃった。2回目のループで周りも明るくなるのに気づいて、細かいところに気を使ってるなぁって感心したよ!雪のやつも見たけど、雪が積もり始めるんじゃないかって期待しちゃった。

Firefoxで、雷が落ちたときに画面全体が1秒か2秒フリーズしたよ。

TUIを1日に2回使うのが面白い傾向だね。1. https://news.ycombinator.com/item?id=47075124

プログラミングが商品化されていく中で、私たちがその段階を循環していると確信してる。

それはコンピュータのビニール盤だね。

今はGhosttyをZellijと一緒に使ってるんだけど、Zellijの機能とGhosttyの機能(タブやペインなど)をどっち使うかでずっと悩んでた。結局、Zellijに頼ることにしたよ。ノートパソコンからデスクトップにSSHで接続して、開発セッションをそのまま続けられるからね。最近は「ネイティブ」のターミナルタブも使わなくなった。

そこに気づいたね、「whether」と「weather」のこと。

これ大好き!特にGIFデモが最高。見てるだけで満足感があるね :) ターミナルでこういうアニメーションを作るための良いリソース知ってる人いる?

これらのTUI投稿に興味があるんだけど、みんなどうやって同時に複数使ってるの?一日中これらのアプリを開いたままにしてるの?それとも必要なときだけ開く感じ?

もうtmuxを使ってるよ。新しいウィンドウを開くのは簡単だね。

俺は普段htopといくつかのvimバッファを開いてるし、プロジェクト作業中はツールもいくつか開いてるよ。例えば、https://github.com/Canop/baconみたいな感じ。でも、他のは必要な時だけ開くかな。特に、こういうおもちゃみたいな天気のやつとかね。追記 - 俺は4Kモニター使ってて、ウィンドウマネージャーはniriだから、画面に複数のターミナルを簡単に並べられるんだ。

そのASCIIアニメーションはプロジェクトにネイティブなやつなの?それとも何かライブラリ使ってるの?