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

HNに表示: ネットワークの仲間の位置を地図上に表示するX11デスクトップウィジェット

概要

connmap は、ネットワークピアの位置を 世界地図上に表示 するX11デスクトップウィジェット。 Wayland にも対応し、i3wm環境での動作が確認済み。 インストール手順 や依存パッケージが明確に記載。 設定ファイル でウィジェットの位置や地図サイズをカスタマイズ可能。 IPv4のみ対応、MITライセンス、GeoLite2データを利用。

connmap概要

  • ネットワークピアの位置情報 をリアルタイムで 世界地図上 に表示するウィジェット
  • X11 および Wayland 環境対応
  • i3wm での動作確認済み、他のデスクトップ環境やウィンドウマネージャでは動作保証なし
  • IPv4 のみサポート
  • MITライセンス、GeoLite2データ(MaxMind提供)利用

インストール手順

  • リポジトリをクローン
    • git clone https://github.com/h2337/connmap --depth 1
  • 依存パッケージのインストール (下記参照)
  • ビルド・インストール
    • make install
  • 実行ファイルの起動
    • ./connmap.elf
    • バックグラウンド起動例:./connmap.elf &
  • i3wm自動起動設定
    • exec --no-startup-id connmap.elf を i3wm設定ファイルに追記(PATHに配置必須)

依存パッケージ

  • ビルド時依存
    • xlib
    • libxext
    • libxfixes
    • libcairo2
  • インストール時依存
    • unzip
  • 実行時依存
    • iproute2

各ディストリビューション向けコマンド

  • Arch Linux
    • sudo pacman -S --needed iproute2 libx11 libxext libxfixes cairo unzip
  • Debian/Ubuntu
    • sudo apt install iproute2 libx11-dev libxext-dev libxfixes-dev libcairo2-dev unzip

設定ファイル(connmaprc)

  • インストール時に ~/.config/connmap/connmaprc が生成
  • 主な設定項目
    • location_x / location_y:ウィジェット初期位置(ピクセル指定)
    • map_width:地図の幅(ピクセル指定、高さは幅/2で自動計算)
      • 例:map_width 1000 → 1000×500px地図
    • black:trueで地図輪郭を黒、falseで白
    • update_interval:ネットワーク接続リストの更新間隔(秒単位)

制限事項

  • i3wm以外のDE/WMでは動作未検証
  • IPv4のみ対応、IPv6非サポート

ライセンスとデータ

  • MITライセンス
  • GeoLite2データ (MaxMind提供)を利用
    • https://www.maxmind.com

参考情報

  • 公式GitHubリポジトリ
    • https://github.com/h2337/connmap
  • GeoLite2データ
    • https://www.maxmind.com

Hackerたちの意見

無知をお許しください、でもこれが何を示しているのかよくわからないです。自宅のLinuxシステムで動かしていて、Verizon FIOSでインターネットに接続しています。地図には3つの赤い点が表示されていて、どれも私の近くにはありません。

その3つの点はあなたのピア、TCP接続のもう一方の端ですよ :) つまり、バックグラウンド(またはフォアグラウンド)で接続を作っているアプリがいくつか動いているってことです。

すごい!ゲームの「Uplink」を思い出すなぁ。

Uplink!あのゲーム大好きだった。また見つけなきゃ。

これ、Y2Kの頃のfreshmeatにあったような気がする。

一度はやってみるべきだよ。

それって何?WebarchiveやGoogleではあまり情報が出てこないね。

このアプリケーションに関しては、現在のベストプラクティスはElectronスタックを使うか、もっと良いのはVSCodeをクローンしてGeoLeoMaximusDYP v3.2 LLMに頼ることだね。

interNICが最初のホップであることを確認してね!LogDeleterは必須だよ <3

これは昔ながらのシンプルなCスタイルだね。popenと大きなパイプチェーンを使うのは、かなり手っ取り早くて雑だけど。私はprocを掘ってアクティブな接続を探してたかも。面白いね、読みやすいのがいい。

これは昔ながらのシンプルなC言語スタイルだね。今ではメタアイロニックなファッションステートメントになってる。2025年のコーヒーショップに行くためのタイプライターみたいなもんだ。

ネットワークピアって何?

あなたのデバイスが現在通信しているサーバーやコンピュータのことだよ。例えば、リンクを読み込むときのGitHubサーバー(多分CDNのエッジサーバーだね)。

うん、コードをざっと読んだ感じ、atworkcに同意するよ。確立されたネットワーク接続があるIPアドレスを表示してる。 void refreshConnections() { ssOutput = popen("ss -atun4 | grep ESTAB | awk '{print $6}' | cut -f1 -d":"", "r"); if (ssOutput == NULL) { printf("ssコマンドの実行に失敗しました\n"); exit(1); } } 追記: ssOutputは他のところで読み取られるグローバル変数だよ。

ハリウッドの大作映画で見るような未来的なスクリーンインターフェースに一歩近づいたね!

LittleSnitchにはそんなマップ機能があるよ。https://help.obdev.at/littlesnitch6/lsm-map 主な違いは、LSが接続を積極的に管理しているからリストが常に正確で、こっちはssを使って現在の接続をポーリングしてるから、リフレッシュの間に完全に接続が切れた場合は見逃すかもしれないってことだね。

WindowMakerでもバッチリ動くよ!~/GNUstep/Library/WindowMaker/autostartに追加した。

2025年にWindowMakerを使うのは確かに…面白い選択だね。ただ、そのアプリはその雰囲気にぴったり合ってると思うよ。

いいね。ただ、地図がちょっと読みづらいのが残念。特に小さいサイズだと、海岸線や国境が多すぎて、国を見つけるのが大変。地形を白で描いて、国境を暗い色(背景色?)にすることってできるかな?それ以外は、Debian LinuxとKDEで問題なく動いてるよ。地図が全デスクトップに表示されるのも好き(でも他の人はそう思わないかも)。もう一つのアイデアなんだけど、https://www.lightningmaps.orgみたいに、点がフェードアウトするようにできるかな?そうすれば、古いトラフィックポイントも見えるし。

フィードバックありがとう!時間ができたら、もっと設定できるようにするよ。