GUIアプリケーション |天気予報を表示するGUIアプリを作ってみた

スポンサーリンク

はじめに

天気予報をディスクトップに表示するなんちゃって
GUIアプリを作ってみました。

Linux mint 上で動作するアプリです。
Ubuntuとかなら同じやり方で動くとおもいます。


出来上がったアプリ



このディスクトップアイコンをクリックすると f:id:shangtian:20190112215219p:plain
画面の右上にTokyoの天気予報が表示される


f:id:shangtian:20190112152033p:plain

環境



OSはLinux mint



つかったもの



シェルスクリプト
zenityコマンド
curlコマンド
wttr.in 天気予報



天気予報を取ってくる。



今回はAPIを引っ張って来るのではなくて
端末上で天気予報を見れてしまうサービスを使います。


使い方は簡単で

$curl wttr.in/Tokyo



f:id:shangtian:20190106135616p:plain


wttr.inについて詳しくはこちらの記事を見てください

www.shangtian.tokyo

GUIアプリケーション



gnome上で動く超お手軽なzenityを使います。

端末上で以下のコマンドを打ってみると

$zenity --notification --text "hello"



画面の右上にhelloと表示されるはず f:id:shangtian:20190112214908p:plain

zenityについて詳しくはこちらの記事を見てください

www.shangtian.tokyo



コード



では実際に書いたコードを見ていきます。

#!/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



こんな感じで表示されればオッケー

f:id:shangtian:20190112152033p:plain



ランチャの作成



毎回天気を見るのに端末でシェルスクリプトを走らせるのは
ちょっと嫌なのでランチャを作成してみる。


デイスクトップで右クリックしてメニューを表示させる。
ランチャーの生成をクリックする。

f:id:shangtian:20190112153544p:plain

参照をクリックしてさっき作成したシェルスクリプトを選択する。

f:id:shangtian:20190112153922p:plain


f:id:shangtian:20190112153911p:plain

そうするとコマンド欄にファイルのパスが表示されるので
頭に"bash"を追加して

bash ファイルパス



f:id:shangtian:20190112153554p:plain

名前を書き込んでOKをクリックする

ディスクトップにこのアイコンが作成される。 f:id:shangtian:20190112215219p:plain


クリックして天気が表示されれば成功。

f:id:shangtian:20190112152033p:plain

<参考文献>

github.com

www.atmarkit.co.jp