zanyrain

zanyrain

github
twitter_id

Gnome Weatherにカスタム位置の天気サポートを追加する(平民版)

Gnome Weather は、Gnome に組み込まれた天気予報アプリで、libgweather ライブラリに依存しています。複数のデータソースを提供していますが、ディストリビューションがこれらのソースをすべて有効にしていない可能性があるため、私たちの偉大な国際 Rock Home Town は見つけることができません。超超はきっと悲しいでしょう

位置情報のサポートを追加する方法は主に 2 つあります:

  • 公式には、location.xml に都市の位置情報を提出することが推奨されています。

    ここで直接変更しても効果はありません。この xml ファイルは、コンパイル時にバイナリファイルに変換され、プログラムが読み取る必要があります。

    正直言って、彼らのロジックが少し理解できません。明らかにいくつかのサーバーサイドの実装があるのに、なぜこのようなファイルを設定する必要があるのか、そしてファイルの内容は空港(物理的な空港)と関係があるのか、少し不思議です。

  • コードを変更する

    カスタムデータソースを追加することで実現できます。たとえば、weather.cma.cn の実装を追加することができます。

では、私たち一般の人々に適した方法はありますか?答えはあります。

gsettings get org.gnome.shell.weather locations

ここでは、おそらく以前にキャッシュされたデータが返されます。

[<(uint32 2, <('Beijing', 'ZBAA', false, [(0.69696814214530467, 2.0295270260429752)], @a(dd) [])>)>, <(uint32 2, <('Beijing', 'ZBAA', true, [(0.69696814214530467, 2.0295270260429752)], [(0.69689057971334611, 2.0313596217575696)])>)>, <(uint32 2, <('Shanghai', 'ZSSS', true, [(0.54396095602266359, 2.1194114825206833)], [(0.54493057368860898, 2.1198429802716539)])>)>, <(uint32 2, <('Ashiya Air Base', 'RJFA', false, [(0.59137572239964786, 2.2802726677305918)], @a(dd) [])>)>]

まず、外側は明らかに配列です。コードを見ればわかります。

https://gitlab.gnome.org/GNOME/libgweather/-/blob/main/libgweather/gweather-location.c?ref_type=heads#L1423

文字列を整形すると次のようになります。

<(
    uint32 2, 
    <(
        'Beijing', 
        'ZBAA', 
        false, 
        [
            (0.69696814214530467, 2.0295270260429752)
        ], 
        @a(dd) []
    )>
)>

上記のコードと照らし合わせると、

uint32 2はバージョンを表しており、2 であることを意味します。

Beijingは都市名です。

ZBAAは空港またはターミナルのコードです。

falseはこのデータが都市(true)なのか空港(false)なのかを示しています。

次の配列は緯度,経度をラジアンで表しています。角度 ×(π/180)の公式を使用します。

2 番目の配列はオプションで、親の位置を表します(代替の場合もあります)。ない場合は@a(dd) []を渡します。

たとえば、石家荘市の橋西区の緯度経度は38.04139, 114.47861です。

したがって、次のようになります。

<(uint32 2, <('Shijiazhuang', '', true, [(0.663947508, 1.998028668)], @a(dd) [])>)>

それぞれを設定します。

gsettings set org.gnome.shell.weather locations "[結合された内容]"
gsettings set org.gnome.Weather locations "[結合された内容]"

これで Gnome Weather アプリは正常に動作しますが、Shell の通知バーにはまだ問題があります。

Shell に統合された天気サービスにはいくつかの論理的な問題があるようで、location.xml で最も近い場所をマッチングしようとします。私の場合、太原に位置づけられてしまいましたが、設定 -> プライバシーで位置情報サービスを無効にすると、石家荘が表示されます。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。