はじめに
天気予報をディスクトップに表示するなんちゃって
GUIアプリを作ってみました。
Linux mint 上で動作するアプリです。
Ubuntuとかなら同じやり方で動くとおもいます。
出来上がったアプリ
このディスクトップアイコンをクリックすると
画面の右上にTokyoの天気予報が表示される
環境
OSはLinux mint
つかったもの
シェルスクリプト
zenityコマンド
curlコマンド
wttr.in 天気予報
天気予報を取ってくる。
今回はAPIを引っ張って来るのではなくて
端末上で天気予報を見れてしまうサービスを使います。
使い方は簡単で
$curl wttr.in/Tokyo
wttr.inについて詳しくはこちらの記事を見てください
GUIアプリケーション
gnome上で動く超お手軽なzenityを使います。
端末上で以下のコマンドを打ってみると
$zenity --notification --text "hello"
画面の右上にhelloと表示されるはず
zenityについて詳しくはこちらの記事を見てください
コード
では実際に書いたコードを見ていきます。
#!/bin/bash text=`curl wttr.in/Tokyo?0 | grep -A 6 "Weather report" | sed '1,2d' |sed "s,\x1B\[[0-9;]*[a-zA-Z],,g"| sed -E 's/^.{15}// '` zenity --notification --text "Tokyo\n$text"
コードはたったこれだけ。次にコードの解説をして行きます。
curl wttr.in/Tokyo?0
で現在の天気だけ表示
grep -A 6 "Weather report"
grepコマンドで "Weather report"を見つけて
6行行表示させる。
sed '1,2d'
sedコマンドで最初の2文字を削除
sed "s,\x1B\[[0-9;]*[a-zA-Z],,g"
でカラーコードを削除する。
sed -E 's/^.{15}//'
最初の15文字をけす。
この結果を変数"text"に代入してzenityコマンドで出力する。
これでシェルスクリプトは完成なので
$sudo chmod u+x weathre.sh
で実行権限を追加して
シェルスクリプトを走らせてみると
$./weather.sh
こんな感じで表示されればオッケー
ランチャの作成
毎回天気を見るのに端末でシェルスクリプトを走らせるのは
ちょっと嫌なのでランチャを作成してみる。
デイスクトップで右クリックしてメニューを表示させる。
ランチャーの生成をクリックする。
参照をクリックしてさっき作成したシェルスクリプトを選択する。
そうするとコマンド欄にファイルのパスが表示されるので
頭に"bash"を追加して
bash ファイルパス
名前を書き込んでOKをクリックする
ディスクトップにこのアイコンが作成される。
クリックして天気が表示されれば成功。