Cross-platform system tray app to monitor VPN status via public IP comparison
Find a file
2026-06-04 23:19:17 +02:00
.github/workflows Fix release workflow: rename binaries before upload, use merge-multiple 2026-06-04 22:19:48 +02:00
.gitignore Add .gitignore 2026-06-04 20:11:30 +02:00
CHANGELOG.md Add CHANGELOG.md and versioning section to README 2026-06-04 20:28:27 +02:00
checker.py Add checker.py 2026-06-04 20:10:30 +02:00
config.py Fix: use tkinter GUI setup wizard when stdin unavailable (Windows --windowed) 2026-06-04 23:19:17 +02:00
i18n.py Add i18n.py 2026-06-04 20:11:01 +02:00
icons.py Add icons.py 2026-06-04 20:11:16 +02:00
main.py Fix: use tkinter GUI setup wizard when stdin unavailable (Windows --windowed) 2026-06-04 23:19:17 +02:00
README.md Add CHANGELOG.md and versioning section to README 2026-06-04 20:28:27 +02:00
requirements.txt Add requirements.txt 2026-06-04 20:11:25 +02:00

VPN IP Checker

A lightweight cross-platform system tray app that shows whether your VPN is active — by comparing your current public IP against your configured VPN IP.

Hinweis / Note: Dies ist eine vollständig neu geschriebene Version des ursprünglichen vpn-ip-checker. Die alte Version basierte auf Kivy/Android; diese Version läuft plattformübergreifend als Systray-App unter Linux, macOS und Windows — ohne hardcodierte IPs.


Features

  • 🔒 Grünes Schloss / Green lock VPN aktiv / active (IP stimmt überein / matches)
  • 🔓 Rotes Schloss / Red lock VPN inaktiv / inactive
  • Gelbes Ausrufezeichen / Yellow exclamation Prüfung fehlgeschlagen / check failed
  • 🌍 Zweisprachig / Bilingual Deutsch oder Englisch, automatisch erkannt / auto-detected from system locale
  • ⚙️ Ersteinrichtungs-Assistent / First-run setup wizard keine hardcodierten IPs, Konfiguration in ~/.config/vpn-ip-checker/
  • 🔁 Konfigurierbares Prüfintervall / Configurable check interval
  • 🖥️ Optionale Interface-Prüfung / Optional interface check z.B. tun0 auf Linux/macOS

Platforms

Platform Support
Linux
macOS
Windows

Installation

Kein Python erforderlich — einfach herunterladen und ausführen.
No Python required — just download and run.

Lade die passende Binary von Releases herunter:

Platform Datei / File
Linux vpn-ip-checker-linux
macOS vpn-ip-checker-macos
Windows vpn-ip-checker-windows.exe

Linux/macOS: Nach dem Download ausführbar machen:

chmod +x vpn-ip-checker-linux
./vpn-ip-checker-linux

Windows: Doppelklick auf vpn-ip-checker-windows.exe.

Linux note: pystray requires a tray-capable desktop environment.
On Ubuntu/GNOME you may need the AppIndicator extension.


Aus dem Quellcode / From source

git clone https://github.com/DasAoD/vpn-ip-checker.git
cd vpn-ip-checker
pip install -r requirements.txt
python main.py

Erststart / First run

Beim ersten Start läuft automatisch ein Einrichtungs-Assistent im Terminal:
On first launch a setup wizard runs in your terminal:

==================================================
VPN IP Checker  First Setup
==================================================
Your VPN IP address (public IP when VPN is active): 1.2.3.4
URL for IP lookup [https://api.ipify.org]:
Check interval in seconds [60]:
VPN network interface (optional, e.g. tun0, leave blank if unknown):
Configuration saved.
  → /home/you/.config/vpn-ip-checker/config.ini

Zum Wiederholen: Rechtsklick auf das Systray-Icon → Einstellungen / Settings.


Konfiguration / Configuration

Die Konfiguration liegt unter ~/.config/vpn-ip-checker/config.ini:
Config is stored at ~/.config/vpn-ip-checker/config.ini:

[vpn-ip-checker]
vpn_ip = 1.2.3.4
check_url = https://api.ipify.org
interval = 60
vpn_interface = tun0

Diese Datei ist nicht Teil des Repositories.
This file is not part of the repository and will never be committed.


Lokal bauen / Build locally

pip install pyinstaller
pyinstaller --onefile --windowed --name vpn-ip-checker main.py

Mitwirkende / Contributors

Dieses Projekt wurde in Zusammenarbeit mit Claude (Sonnet 4.6) von Anthropic entwickelt.
Der überwiegende Teil des Codes, der Architektur und der Dokumentation wurde durch KI generiert und iterativ verfeinert.

This project was developed in collaboration with Claude (Sonnet 4.6) by Anthropic.
The majority of the code, architecture, and documentation was AI-generated and iteratively refined.

Rolle / Role Person / Tool
Projektidee & Anforderungen / Project idea & requirements DasAoD
Code, Architektur, Dokumentation / Code, architecture, documentation Claude (Anthropic)

License

MIT


Versionierung / Versioning

Dieses Projekt verwendet Semantic Versioning:
This project uses Semantic Versioning:

MAJOR.MINOR.PATCH

Teil / Part Wann / When Beispiel / Example
MAJOR Breaking Change, grundlegende Umstrukturierung v1.0.0v2.0.0
MINOR Neues Feature, rückwärtskompatibel / New feature, backwards-compatible v1.0.0v1.1.0
PATCH Bugfix, kleine Korrekturen / Bug fix, small corrections v1.0.0v1.0.1

Alle Änderungen sind im CHANGELOG dokumentiert.
All changes are documented in the CHANGELOG.