Autor: Bernhard Lickert | Entwickelt mit Claude (Anthropic) | Copyright 2026
Benutzung auf eigene Gefahr. Kein Haftungsanspruch für Schäden jeglicher Art.
Python 3.10 oder neuer · Windows 10/11 · Internetverbindung beim ersten Start (Pakete werden automatisch installiert)
dist\KombiTool.exe): eine einzige Datei, ohne installiertes Python lauffähig, ohne Konsolenfenster und unabhängig von Python-Updates. Sie wird einmal mit build_exe.bat erzeugt — siehe EXE erstellen. Die folgenden Skript-Varianten sind der Weg dorthin und bleiben für Entwicklung und schnelle Änderungen nützlich.
install.bat doppelklicken – installiert alle fehlenden Python-Paketestart_kombitool.bat oder start_kombitool.vbs (ohne Konsolenfenster) doppelklickenIn einem Terminal-Fenster:
pip install customtkinter pystray pillow psutil pyperclip
Dann starten mit: python kombi_tool.py
| customtkinter | Modernes GUI-Framework |
| pystray | Systray-Icon |
| pillow | Bildverarbeitung (Screenshot) |
| psutil | Systeminformationen |
| pyperclip | Zwischenablage |
KombiTool läuft im Windows-Systray (Benachrichtigungsbereich rechts unten). Rechtsklick auf das Libellen-Icon öffnet das Menü mit allen Tools.
Es kann immer nur eine Instanz gleichzeitig laufen – ein zweiter Start zeigt eine Warnung.
KombiTool protokolliert automatisch in kombitool.log im Datenordner – ab Werk %USERPROFILE%\KombiTool\, einstellbar unter Speicherort der Daten.
| INFO | Start, Beenden, jedes Tool-Öffnen |
| WARNING | Watchdog-Eingriffe (GUI-Queue neu gestartet) |
| ERROR | Exceptions in der GUI-Queue, Fehler in Tool-Builds |
| CRITICAL | Unbehandelte Exceptions (via sys.excepthook) |
Bei Problemen (Einfrieren, Abstürzen) diese Datei öffnen — Format: 28.06.2026 13:30:00 INFO Öffne: DirComm
Systray-Rechtsklick → „Mit Windows starten" setzt oder entfernt einen Eintrag in
HKCU\Software\Microsoft\Windows\CurrentVersion\Run. Nur für den aktuellen Benutzer,
kein Administratorrecht nötig. Ein Häkchen zeigt den aktuellen Zustand — es wird bei jedem
Öffnen des Menüs frisch aus der Registry gelesen, bleibt also auch korrekt, wenn der Eintrag
extern (z.B. mit dem Sysinternals-Tool Autoruns) entfernt wurde.
Beim Skript-Betrieb trägt KombiTool wscript.exe start_kombitool.vbs ein — dadurch
erscheint beim Windows-Start kein Konsolenfenster. Bei der PyInstaller-EXE wird direkt der
Pfad zur KombiTool.exe eingetragen.
| 📁 DirComm | Verzeichnisbaum-Browser mit Dateioperationen, Suche, leeren Ordnern und Altersanalyse |
| 🔎 Duplikatfinder | Doppelte Dateien finden (Größe + SHA1-Hash) und aufräumen |
| 🆚 DirVergleich | Zwei Ordnerbäume vergleichen (z.B. lokal vs. NAS-Backup) |
| 📸 Screenshot | Bereich auswählen und mit Annotationen versehen — global per Tastenkürzel (Vorgabe F9, wählbar) |
| 📏 Pixellineal | Pixelgenaues Lineal (horizontal/vertikal, mm/cm/px/inch) |
| 🎨 ColourPicker | Farbe unter dem Mauszeiger erfassen und speichern |
| 💬 Notizzettel | Formatierter Texteditor mit mehreren Tabs und Auto-Save |
| 🌐 IP-Info | Lokale IP-Adressen und Netzwerkadapter auf einen Blick |
| 🔁 Traceroute | Netzwerkroute zu einem Ziel verfolgen |
| 🖥️ Systeminfo | CPU, RAM, Laufwerke, GPU, Monitor, Netzwerk |
| ⚙️ Einstellungen | Fünf Reiter: Screenshot-Tastenkürzel, Darstellung (Erscheinungsbild, Schriftgröße), Speicherort der Daten, Datenimport, Über – siehe Einstellungsfenster |
Verzeichnisbaum-Browser mit Dateigrößen, Einträgen, Datum und Typ. Unterstützt lokale Laufwerke und Netzlaufwerke.
| Pfad eingeben + Enter | Verzeichnis direkt anspringen |
| 📂 | Ordner-Dialog öffnen |
| ⬆ | Eine Ebene höher navigieren |
| ⬅ | Zurück zur vorherigen Ansicht (History) |
| ↺ | Aktuellen Ordner neu einlesen |
| ∅ | Alle rekursiv leeren Ordner unterhalb des aktuellen Pfads auflisten (Rechtsklick zum Löschen; ↺ setzt die Ansicht zurück) |
| Rechtsklick auf Ordner | 📊 Altersanalyse: Dateianzahl, Gesamtgröße, älteste und neueste Datei (rekursiv) |
| 👁 | Versteckte Dateien/Ordner ein-/ausblenden |
| Doppelklick Ordner | Aufklappen / Zuklappen |
| Doppelklick Datei | Datei mit Standardprogramm öffnen |
| Name | Datei-/Ordnername (inkl. Unterordner-Einrückung) |
| Größe | Dateigröße oder rekursive Ordnergröße (wird im Hintergrund berechnet) |
| █ Balken | Proportionaler Größenbalken – skaliert automatisch mit dem größten Eintrag |
| Einträge | Anzahl direkter Unterelemente |
| Datum | Änderungsdatum TT.MM.JJJJ – HH:MM |
| Typ | „Ordner" oder Dateiendung (JSON, PDF, …) |
| Klick auf Spaltenkopf sortiert auf- oder absteigend | |
| Spaltenrand ziehen | Spaltenbreite anpassen – wird beim Schließen gespeichert |
| Doppelklick auf Spalten-Trennstrich | Spalte auf optimale Breite anpassen (wie im Windows-Explorer) |
| Suchfeld + Enter | Rekursive Suche im aktuellen Verzeichnis (Hintergrund-Thread, GUI bleibt reaktionsfähig) |
| ESC oder ✕ | Suche beenden, Verzeichnisansicht zurücksetzen |
| Treffer erscheinen häppchenweise während die Suche läuft. Max. 500 Treffer. Relativer Pfad ab Wurzel wird angezeigt. | |
| Im Explorer öffnen | Ordner im Windows-Explorer anzeigen |
| Öffnen | Datei mit Standardprogramm öffnen |
| Pfad kopieren | Vollständigen Pfad in Zwischenablage |
| 🗑 Löschen … | In Papierkorb verschieben (mit Bestätigung) |
| Eintrag halten + ziehen | Auf Zielordner ziehen → Popup wählt „✂ Verschieben" oder „📄 Kopieren" |
| Zielordner wird hellblau hervorgehoben. Schutz vor Drops in eigene Unterordner. | |
Spaltenbreiten, Fenstergröße/-position und letzter Pfad werden in dircomm_prefs.json im Datenordner gespeichert.
Fensterposition und mehrere Monitore (seit v0.77): Beim Start prüft DirComm, ob die gespeicherte Position auf einem der jetzt angeschlossenen Monitore liegt. Stand das Fenster zuletzt auf einem externen Monitor, der gerade fehlt, öffnet es sich mittig auf dem Hauptbildschirm – statt wie bis v0.76 außerhalb des sichtbaren Bereichs, wo nur noch das Taskleisten-Symbol zu sehen war. Ist der Monitor wieder da, bleibt die gemerkte Position gültig. Außerdem wird die Position nicht mehr gespeichert, solange das Fenster minimiert oder maximiert ist.
Findet doppelte Dateien unterhalb eines Startordners. Dreistufiger Vergleich: erst Dateigröße, dann SHA1-Hash der ersten 256 KB, zuletzt SHA1 der gesamten Datei — nur dort, wo die vorherige Stufe Übereinstimmung zeigt. Dadurch werden auch auf Netzlaufwerken nur echte Kandidaten vollständig gelesen.
| Mindestgröße | Dateien darunter werden ignoriert (Standard: ≥ 100 KB) |
| ▶ Start / ⏹ Stop | Suche starten bzw. jederzeit abbrechen |
| Doppelklick | Datei öffnen |
| Rechtsklick | Im Explorer zeigen · Pfad kopieren · In Papierkorb |
| Doppelklick auf Spalten-Trennstrich | Spalte auf optimale Breite anpassen (wie im Windows-Explorer) |
| Klick auf ✓-Spalte | Datei zur Auswahl hinzufügen bzw. entfernen (☐/☑) |
| ⚡ Auto-Auswahl | Markiert pro Gruppe alle Kopien — außer der ältesten oder neuesten Datei (wählbar) |
| ☐ Aufheben | Gesamte Auswahl zurücksetzen |
| 🗑 Auswahl in Papierkorb | Alle ausgewählten Dateien verschieben — der Button zeigt Anzahl und Gesamtgröße |
Vergleicht zwei Ordnerbäume — typischer Einsatz: lokaler Ordner gegen NAS-Backup ("ist alles gesichert?"). Das Ergebnis ist eine Statusliste aller Einträge.
| nur links | Eintrag existiert nur im linken Baum (blau) |
| nur rechts | Eintrag existiert nur im rechten Baum (grün) |
| unterschiedlich | Beidseitig vorhanden, aber Größe/Datum weichen ab (orange) |
| identisch | Größe und Datum stimmen überein (standardmäßig ausgeblendet) |
| Datum berücksichtigen | Änderungsdatum mit ±2 s Toleranz vergleichen (abschaltbar — dann zählt nur die Größe) |
| Rechtsklick | Links/Rechts im Explorer zeigen · relativen Pfad kopieren |
| Doppelklick auf Spalten-Trennstrich | Spalte auf optimale Breite anpassen (wie im Windows-Explorer) |
Bereich auf dem Bildschirm aufziehen → Editor öffnet sich mit dem aufgenommenen Ausschnitt. Start über das Systray-Menü oder jederzeit systemweit per Tastenkürzel (solange KombiTool läuft). Ab Werk ist das F9; seit v0.77 lässt es sich ändern oder abschalten – am schnellsten über den Systray-Eintrag ⌨️ Screenshot-Tastenkürzel …. Der Systray-Eintrag zeigt das gerade eingestellte Kürzel in Klammern.
| LMB ziehen | Bereich auswählen |
| ESC | Abbrechen |
| ▭ Rechteck | Rechteck aufziehen |
| → Pfeil | Pfeil ziehen |
| — Linie | Linie ziehen |
| T Text | Text an Bildmitte einfügen |
| ▦ Verpixeln | Bereich aufziehen → zuverlässig unkenntlich machen |
| 🎨 | Farbe für Annotationen wählen |
| ↩ Undo | Letzte Annotation rückgängig |
| 💾 Speichern | PNG im Unterordner Screenshots\ des Datenordners speichern |
| 📋 Kopieren | Mit Annotationen in Zwischenablage kopieren |
all_screens=True) und positioniert sich seit v0.69 am Ursprung des virtuellen Bildschirms — auch Monitore links/oberhalb des Hauptmonitors werden korrekt erfasst.
Pixelgenaues Lineal das auf dem Bildschirm positioniert wird.
| Horizontal / Vertikal | Ausrichtung wählen |
| Lineal überfahren | Die Echtzeit-Lupe erscheint schon vor dem Klick — Startpunkt vergrößert ansetzen |
| Linke Maustaste + Ziehen | Messen — die Lupe folgt der Cursorlinie |
| Mausrad | Lupen-Vergrößerung umschalten: ×2, ×4, ×8, ×12, ×16 |
| Rechte Maustaste + Ziehen | Lineal verschieben — die Lupe zeigt dabei den 0-Punkt (linke/obere Linealkante) vergrößert, um den Linealanfang exakt an einer Objektkante anzusetzen |
| Klick auf Messwert / [Einheit] | Einheit wechseln: px → mm → cm → inch |
| Fensterrand-Griff (hellblau) | Lineal verlängern oder verkürzen |
| ⇔ / ⇕-Button | Länge exakt per Zahleneingabe setzen |
Sobald der Mauszeiger über dem Lineal steht (schon vor dem ersten Klick), zeigt ein kleines Fenster den vergrößerten Bildschirminhalt direkt neben dem Lineal (beim horizontalen Lineal ober-/unterhalb, beim vertikalen links/rechts — der Cursor selbst steht ja auf dem Lineal). Die rote Fadenkreuzlinie liegt exakt auf der Cursorposition: damit lassen sich Start- und Endmarke pixelgenau an Objektkanten ansetzen. Die Lupe verschwindet, sobald der Mauszeiger das Lineal verlässt oder über einem Bedienelement steht.
Erfasst die Farbe unter dem Mauszeiger in Echtzeit – unabhängig vom aktiven Fenster.
| F2 | Aktuelle Farbe in Palette speichern |
| 📌 Merken | Farbe speichern (Button im Fenster) |
| Freeze / Live | Farberfassung einfrieren / fortsetzen |
| HEX-Wert | Klick kopiert HEX-Code in Zwischenablage |
| Gespeicherte Farbe | Klick kopiert HEX-Code in Zwischenablage |
Die Palette wird in colourpicker_history.txt im Datenordner gespeichert.
Formatierter Texteditor mit mehreren Tabs, automatischer Speicherung und Tagebuch-Funktion.
| + Button | Neuen Tab anlegen |
| × Button | Tab löschen (letzter Tab ist nicht löschbar) |
| Doppelklick auf Tab | Tab umbenennen (Eingabe mit Enter bestätigen, ESC abbrechen) |
| Alle Tabs werden gemeinsam in einer JSON-Datei gespeichert. Ältere Einzelnotizen werden beim ersten Start automatisch als „Notiz 1" migriert. | |
| B | Fett (Auswahl markieren, dann Button) |
| I | Kursiv |
| U | Unterstrichen |
| S̶ | Durchgestrichen |
| H1 / H2 | Überschrift groß / mittel |
| • Liste | Aufzählungspunkt einfügen |
| ↩ Undo | Rückgängig |
| Ctrl+A | Alles auswählen |
Dropdown in der Toolbar: 10 / 12 / 14 pt. Gilt pro Tab individuell. Auswahl wird gespeichert.
Zeitstempel-Button fügt Trennlinie und aktuelles Datum/Uhrzeit ein – so entsteht ein chronologisches Tagebuch. Beim Öffnen eines leeren Tabs wird automatisch ein Zeitstempel eingefügt.
Automatisch 2 Sekunden nach jeder Änderung und alle 30 Sekunden.
Speicherort: Notizen\notizen.json im Datenordner; der vollständige Pfad steht unten im Notizzettel-Fenster und öffnet den Ordner per Klick.
Zeigt alle lokalen IP-Adressen und Netzwerkadapter auf einen Blick.
| 📋 Button | IP-Adresse in Zwischenablage kopieren |
| Zeigt IPv4-Adressen aller aktiven Netzwerkadapter (LAN, WLAN, VPN, …) | |
Verfolgt die Netzwerkroute zu einem Ziel-Host mit zwei Modi und optionaler Weltkarte.
| Ziel eingeben | IP-Adresse oder Hostname (z. B. 8.8.8.8 oder google.com) |
| Rechtsklick ins Zielfeld | Menü mit Ausschneiden · Kopieren · Einfügen · Alles markieren · Feld leeren. „Einfügen" holt aus der Zwischenablage automatisch das eigentliche Ziel heraus: aus einer kopierten tracert-Zeile die IP-Adresse (auch in eckigen Klammern), aus einer kopierten URL den Hostnamen. Zeilenumbrüche und Leerzeichen werden entfernt, ein bereits eingetragenes Ziel wird ersetzt. Zusätzlich funktionieren Strg+V und Strg+A. |
| ▶ Start | Traceroute starten |
| ⏹ Stop | Laufende Traceroute sofort abbrechen |
| tracert | Schnell, ICMP-Protokoll. Viele Router blockieren ICMP → Zeitüberschreitung ist normal. |
| pathping | Langsamer (~2 Min.), sendet mehrere Pakettypen — kommt oft durch wo tracert nur Timeouts zeigt. Empfohlen bei vielen Zeitüberschreitungen. |
-4). IPv6-Adressen werden für die Weltkarte nicht unterstützt.
* * *) sind kein Fehler — viele ISP-Router blockieren ICMP-Pakete absichtlich. Wenn Anfang und Ende antworten ist die Route trotzdem vollständig.
| 📊 Tabellen-Ansicht | Grafische HTML-Tabelle mit Latenz-Balken im Browser |
| 🗺 Weltkarte | Öffnet interaktive Weltkarte im Browser — Hops werden geografisch verortet |
Die Weltkarte verwendet Leaflet.js für die Karte. Die Standorte der Hops ermittelt KombiTool selbst, bevor sich der Browser öffnet: zuerst mit einer einzigen Sammelabfrage bei ip-api.com, für nicht gefundene Adressen einzeln über ipwho.is als Ausweichdienst. Beide Dienste sind kostenlos, brauchen keinen API-Schlüssel, wohl aber eine Internetverbindung. Während der Abfrage steht in der Statuszeile „Verorte … Hops". Danach meldet sie, wie viele Hops gefunden wurden.
http://ip-api.com. Firefox mit HTTPS-Only bzw. „Nur-HTTPS-Modus" schreibt eine solche Adresse aber auf https:// um. Den kostenlosen Zugang von ip-api gibt es nur unverschlüsselt, er antwortet dann mit SSL unavailable for this endpoint. Die Seite zeigte daraufhin „Keine Hops verortet (alle privat oder Timeout)", obwohl alle Adressen öffentlich waren. Seit v0.79 spielen Browser-Einstellungen und Werbeblocker (uBlock Origin) für die Verortung keine Rolle mehr.
ip-api.com und ipwho.is dort freigeben. „zu viele Anfragen" heißt: eine Minute warten und die Weltkarte erneut öffnen. Die Hop-Liste rechts und die Tabellen-Ansicht bleiben in jedem Fall nutzbar.
Oben links auf der Karte lässt sich zwischen fünf Kartenbildern wählen. Alle sind ohne API-Schlüssel nutzbar und wurden daraufhin geprüft, dass sie auch ohne Referer ausliefern:
| Dunkel (Esri) | Voreinstellung — graue, zurückhaltende Karte, passt zum dunklen Seitenlayout |
| Hell (Esri) | Helle Variante derselben Karte, gut zum Ausdrucken |
| Straßen (Esri) | Straßenkarte mit Orts- und Straßennamen |
| Topografie (OpenTopoMap) | OSM-Daten mit Geländeschummerung; zugleich die Ausweichquelle, weil sie von einem anderen Anbieter kommt als die Esri-Ebenen |
| Satellit (Esri) | Luft-/Satellitenbild |
file://) — eine solche Seite sendet keinen Referer, und daran lässt sich von der Seite aus nichts ändern. Da der Server ein gültiges Sperrbild zurückgibt, meldet Leaflet dabei nicht einmal einen Kachelfehler, die automatische Umschaltung konnte also nicht greifen. Seit v0.75 ist die Quelle deshalb ganz entfernt; die OSM-Daten stecken weiterhin in OpenTopoMap und in den Esri-Karten.
| Marker | Zeigen die Hop-Nummer in der Latenzfarbe. Liegen mehrere Hops laut GeoIP am selben Ort, werden sie leicht versetzt, damit jeder sichtbar und anklickbar bleibt. |
| Farben | 🟢 unter 30 ms · 🟡 30–100 ms · 🔴 über 100 ms · ⚫ grau = Timeout. Die Farbe zeigt nur die Antwortzeit — Rot ist kein Fehler, bei Zielen in Übersee sind über 100 ms normal. Legende unten links auf der Karte. |
| Gestrichelte Marker | Standort unsicher: Die Antwortzeit ist kleiner, als das Licht für die angebliche Entfernung bräuchte (Glasfaser ≈ 100 km pro ms hin+zurück). GeoIP zeigt dann meist den Firmensitz des IP-Blocks, nicht den echten Router-Standort. Details im Klick-Popup. |
| Checkbox in der Legende | Unsichere Standorte aus der Routenlinie ausnehmen (standardmäßig an) — so zackt die Route nicht über falsch verortete Kontinente. |
| Maus über Marker | Kurzinfo (seit v0.79): Hop-Nummer, Stadt, Land und Antwortzeit, bei unsicheren Standorten mit ⚠-Hinweis |
| Klick auf Marker | Zeigt IP, Stadt, Land, ISP, Latenz — bei unsicheren Standorten mit Begründung (ms vs. km) |
| Sidebar rechts | Alle Hops inkl. Timeouts und privater IPs; ⚠ markiert unsichere Standorte |
Private IPs (10.x, 192.168.x, 172.16–31.x), Provider-interne CGNAT-Adressen (100.64–127.x) und Link-local (169.254.x) werden auf der Karte übersprungen — sie haben keine sinnvolle Geolokalisierung. Die Marker erscheinen nach dem Öffnen kurz nacheinander in Hop-Reihenfolge, sodass sich die Route sichtbar aufbaut.
Ausgabe im Courier-Textfeld, scrollbar. Läuft im Hintergrund-Thread – GUI bleibt reaktionsfähig.
Umfassende Systeminformationen: CPU, RAM, GPU, Monitor(e), Laufwerke, Netzwerk, Python-Umgebung.
| 🔄 Aktualisieren | Daten neu einlesen (läuft im Hintergrund) |
| 📋 Alles kopieren | Gesamte Ausgabe in Zwischenablage |
| 📋 Auswahl kopieren | Markierten Text kopieren |
Monitor-Sektion zeigt Auflösung, DPI, Skalierung und physische Größe (cm / Zoll) für jeden angeschlossenen Monitor.
Drei Tools unterstützen eine global einstellbare Schriftgröße: DirComm, Notizzettel und Systeminfo.
| ⚙ Button | Oben rechts im Header des jeweiligen Tool-Fensters |
| Klein | 80 % der Normalschrift |
| Normal | Standardgröße (100 %) |
| Groß | 120 % der Normalschrift |
| Sehr groß | 140 % der Normalschrift |
Die Einstellung gilt sofort für alle offenen Fenster dieser drei Tools und wird in global_prefs.json im Datenordner gespeichert.
Alle Werkzeuge legen ihre Daten in einem gemeinsamen Datenordner ab. Ab Werk ist das %USERPROFILE%\KombiTool\ – genau der Pfad, den die Versionen bis v0.75 fest verdrahtet hatten. Wer nichts umstellt, merkt vom Umbau also nichts.
Geändert wird der Ordner im Systray unter ⚙️ Einstellungen → Reiter „📂 Speicherort". Sinnvoll ist das zum Beispiel, wenn die Notizen auf einem synchronisierten Ordner (Proton Drive, OneDrive) oder auf dem NAS liegen sollen, damit sie auf mehreren Rechnern zur Verfügung stehen.
| Notizen\notizen.json | Notizzettel – Texte, Formatierungen, Tabs |
| notizen_prefs.json | Notizzettel – Schriftgröße im Textbereich |
| global_prefs.json | Schriftgröße und Erscheinungsbild (alle Werkzeuge) |
| dircomm_prefs.json | DirComm – Fenster, Spalten, letzter Pfad |
| dircompare_prefs.json | DirVergleich – zuletzt verglichene Ordner |
| colourpicker_history.txt | ColourPicker – gemerkte Farben |
| Screenshots\ | gespeicherte Bildschirmfotos |
| kombitool.log | Protokolldatei |
| Verschieben | Vorgabe. Die vorhandenen Daten werden in den neuen Ordner übertragen und am alten Ort entfernt – aber erst, nachdem die Kopie nachweislich angekommen ist. Bricht das Kopieren ab, bleibt das Original unangetastet. |
| Kopieren | Die Daten liegen anschließend an beiden Orten; der alte Ordner bleibt als Sicherung. |
| Nur Pfad umstellen | Es wird nichts bewegt. Am neuen Ort wird mit dem gearbeitet, was dort liegt (oder von vorn begonnen). |
%LOCALAPPDATA%\KombiTool\location.json. Diese Datei ist absichtlich gerätelokal: auf jedem PC darf ein anderer Datenordner eingestellt sein, und ein Sync-Dienst nimmt die Einstellung nicht mit.
Der Ordner darf nicht innerhalb des bisherigen liegen (und umgekehrt) – das würde die Daten verschachteln und wird abgewiesen.
Der Import holt Daten aus einem beliebigen anderen Ordner in den aktuellen Datenordner – etwa vom alten Pfad, von einem zweiten Rechner, aus einer Sicherung oder von einem USB-Stick. Der Quellordner wird dabei ausschließlich gelesen.
Durchsuchen …) – KombiTool listet auf, welche Bestände es dort gefunden hat, mit GrößeImportieren| Vorhandenes behalten | Vorgabe. Es wird nur übernommen, was am Ziel fehlt. |
| Notiz-Tabs anfügen | Die Notizen aus der Quelle kommen als zusätzliche Tabs hinzu, bestehende bleiben unverändert. Namensgleiche Tabs erhalten den Zusatz „(Import)". Für die übrigen Bestände gilt „Vorhandenes behalten". |
| Überschreiben | Vorhandenes wird ersetzt. Von jeder überschriebenen Datei wird vorher eine Sicherung mit der Endung .vor_import angelegt. |
Seit v0.76 sieht KombiTool aus wie Markdown-Editor-BL: dieselbe Farbpalette, dieselbe Schrift (Segoe UI durchgehend), derselbe Aufbau – blau hinterlegte Kopf- und Werkzeugleiste mit kräftiger Unterlinie, helle Arbeitsfläche, dunkle Statusleiste mit Version und Handbuch-Link.
| Wie Windows | Vorgabe. Folgt der Windows-Einstellung „App-Modus" (Registry-Wert AppsUseLightTheme). |
| Hell | immer die helle Palette |
| Dunkel | immer die dunkle Palette |
Die Umstellung wirkt sofort in allen offenen Fenstern, ein Neustart ist nicht nötig. Zu finden ist sie an zwei Stellen: im ⚙️-Einstellungsfenster (Reiter „🎨 Darstellung") und über den kleinen ⚙-Knopf oben rechts in DirComm, Notizzettel und Systeminfo (dort zusammen mit der Schriftgröße).
Schaltflächen (seit v0.78): Hauptknöpfe sind im hellen Modus dunkelgrau mit weißer Schrift, im Dunkelmodus hellgrau mit dunkler Schrift; Nebenknöpfe haben eine helle Fläche mit dunkler Schrift, Stop- und Löschknöpfe sind rot. Alle erreichen in beiden Modi mindestens 4,5:1 Kontrast (WCAG-Stufe AA). Bis v0.77.1 waren die Knöpfe im Dunkelmodus kaum lesbar.
Nebenbei behoben: bis v0.75 mischte das Programm zwei Schriftfamilien – die Schaltflächen liefen in Roboto (CustomTkinter-Vorgabe), die Textbereiche und Listen in Segoe UI. Jetzt gilt eine Familie für das ganze Programm.
Geöffnet über das Systray-Menü → ⚙️ Einstellungen. Seit v0.78 ist das Fenster in Reiter geteilt; jeder passt ohne Scrollen ins Fenster. Bis v0.77.1 war es eine lange Bildlaufseite, auf der das Tastenkürzel ganz unten kaum zu finden war.
| ⌨ Tastenkürzel | Screenshot-Tastenkürzel wählen oder abschalten – Einzelheiten. Erster Reiter, beim Öffnen ausgewählt. |
| 🎨 Darstellung | Erscheinungsbild (wie Windows / hell / dunkel) und Schriftgröße – Einzelheiten |
| 📂 Speicherort | gemeinsamen Datenordner ändern (verschieben / kopieren / nur Pfad) – Einzelheiten |
| 📥 Import | Daten aus einem anderen Ordner übernehmen; die Auswahlliste erscheint erst nach „Prüfen" |
| ℹ Über | Version, Autor, Haftungsausschluss, Knopf „Handbuch öffnen" |
Direktzugang zum Tastenkürzel: Systray-Eintrag ⌨️ Screenshot-Tastenkürzel … öffnet dasselbe Fenster gleich auf diesem Reiter.
Das globale Tastenkürzel startet die Screenshot-Bereichsauswahl von überall aus. Ab Werk ist es F9. Umgestellt wird es über den Systray-Eintrag ⌨️ Screenshot-Tastenkürzel … (direkt unter „Screenshot") oder unter ⚙️ Einstellungen → Reiter „⌨ Tastenkürzel" – das ist der erste Reiter, er ist beim Öffnen schon ausgewählt; die Änderung wirkt sofort, ohne Neustart, und wird im Datenordner in global_prefs.json (Schlüssel screenshot_hotkey) gespeichert.
| Zusatztaste | keine, Strg, Umschalt, Alt, Strg+Umschalt, Strg+Alt, Umschalt+Alt, Strg+Umschalt+Alt |
| Taste | F1–F12, Druck, Pause, Rollen, A–Z, 0–9 |
| Tastenkürzel aktiv | Häkchen entfernen = kein Tastenkürzel; der Screenshot startet dann nur noch über das Systray-Menü |
| Standard (F9) | setzt auf die Werksvorgabe zurück |
Kürzel, die beim normalen Arbeiten versehentlich auslösen würden, nimmt das Fenster nicht an; es bleibt dann beim bisherigen Kürzel und eine rote Zeile nennt den Grund:
| Buchstabe/Ziffer allein oder nur mit Umschalt | würde bei jedem getippten „s" bzw. „S" auslösen – Buchstaben und Ziffern nur zusammen mit Strg oder Alt |
| Strg+Alt mit Q, E, M, 2, 3, 7, 8, 9, 0 | Strg+Alt ist auf deutschen Tastaturen dasselbe wie AltGr – damit schreibt man @ € µ ² ³ { [ ] } |
| Alt+F4 | schließt das aktive Fenster |
PATH (wie beim neuen Python Install Manager) kann die EXE nicht aus dem Tritt bringen.--windowed; es entfällt der Umweg über pythonw bzw. die .vbs-Startdatei.KombiTool.exe ein statt eines Skriptaufrufs.start_kombitool.bat / .vbs) bleibt für Entwicklung und schnelle Änderungen sinnvoll — sie startet den unveränderten Quelltext, ohne dass neu gebaut werden muss.
install.bat) – PyInstaller holt build_exe.bat bei Bedarf selbst nachbuild_exe.bat doppelklicken. Seit v0.77.1 zeigt es zuerst, welche Python-Installation baut, und prüft, ob sich dort customtkinter, pystray, pillow, psutil und pyperclip importieren lassen. Fehlt etwas, wird es genau in diese Installation nachinstalliert; klappt das nicht, bricht es ab, ohne eine EXE zu bauen.dist\KombiTool.exe – diese Datei starten (bzw. eine Verknüpfung davon auf den Desktop legen)build_exe.bat lesen – sie nennt das verwendete Python und fehlende Pakete –, danach die PyInstaller-Dokumentation.
build_exe.bat erneut ausführen.taskkill /F /T /IM KombiTool.exe.
| Version | Änderungen |
|---|---|
| v0.80 | Veröffentlichung vorbereitet: Dokumentation und Testdaten ohne persönliche Angaben (Ortsangaben, Bildschirmdaten und wörtliche Rückmeldungen durch neutrale Beispiele ersetzt). Programmverhalten unverändert. |
| v0.79 | Weltkarte: Hops werden wieder verortet. Die Karte und die Hop-Liste erschienen, aber kein einziger Marker. Die Seitenleiste meldete „Keine Hops verortet (alle privat oder Timeout)", obwohl 13 von 15 Hops öffentliche Adressen hatten. Ursache: Die Kartenseite fragte die Standorte selbst per fetch() bei http://ip-api.com ab. Firefox (Nur-HTTPS-Modus) schrieb das auf https:// um, und der kostenlose ip-api-Zugang antwortet darauf mit {"status":"fail","message":"SSL unavailable for this endpoint"}. Die Seite verwarf diese Antwort ohne Meldung. Im Browser des Nutzers mit ip-api.com/json/8.8.8.8 nachgewiesen. Jetzt fragt KombiTool selbst im Hintergrund (Python, unabhängig von Browser und Werbeblocker): eine Sammelabfrage bei ip-api.com für alle Hops statt 13 Einzelabfragen, als Ausweichdienst ipwho.is über HTTPS. Die Standorte werden fertig in die Seite geschrieben. Gelingt die Verortung nicht, nennen Seitenleiste und Statuszeile die tatsächliche Ursache (z. B. DNS-Filter, zu viele Anfragen) statt „alle privat". Neu auf Wunsch: Kurzinfo beim Überfahren eines Markers mit Hop-Nummer, Stadt, Land und Antwortzeit. Bisher gab es diese Angaben nur per Klick. Außerdem werden Zielname, Stadt und Provider in der Seite maskiert, und Fremddaten können den Skriptblock nicht mehr beenden. Neue Testsuite test_v079_geo_python.py. |
| v0.78 | Einstellungsfenster mit Reitern. Anlass: In v0.77.1 waren die Einstellungen schwer zu finden. Befund: das neue Tastenkürzel stand ganz unten auf einer langen Bildlaufseite, hinter Speicherort und Import; dazwischen klaffte eine rund 200 px hohe Leerfläche – der noch leere Rahmen der Import-Auswahlliste (ein leerer CustomTkinter-Rahmen ist ab Werk 200 px hoch, nicht 0) –, und die Zeile „Vorhanden:" lief rechts aus dem Fenster. Jetzt fünf Reiter (⌨ Tastenkürzel, 🎨 Darstellung, 📂 Speicherort, 📥 Import, ℹ Über), Tastenkürzel zuerst und beim Öffnen ausgewählt; die Reiterknöpfe in den Farben der übrigen Schaltflächen, Beschriftung in beiden Modi mit mindestens 5:1 Kontrast. Die Import-Auswahlliste erscheint erst, wenn „Prüfen" etwas gefunden hat; lange Zeilen brechen um. Neuer Systray-Eintrag ⌨️ Screenshot-Tastenkürzel … direkt unter „Screenshot", öffnet die Einstellungen gleich auf dem richtigen Reiter. Zweitens Schaltflächen in beiden Modi lesbar: im Dunkelmodus stand die Beschriftung aller Schaltflächen und Auswahllisten hellgrau auf hellgrau (Kontrast 1,7:1), und im hellen Modus wirkten die grauen Nebenknöpfe („Vorgabe eintragen", „Ordner öffnen", „Prüfen", „Abbrechen") mit weißer Schrift wie ausgegraut (1,8:1). Jetzt drei feste Arten – Hauptknopf (dunkle Fläche, im Dunkelmodus helle Fläche mit dunkler Schrift), Nebenknopf (helle Fläche, dunkle Schrift) und roter Stop-/Löschknopf –, jede Kombination aus Fläche und Schrift in hell und dunkel mindestens 4,5:1, auch beim Überfahren mit der Maus. Neue Testsuite test_v078_settings_tabs.py, die alle diese Kontraste nachrechnet. |
| v0.77.1 | Korrektur: EXE startete sich endlos selbst. Die erste v0.77-EXE wurde mit einer Python-Installation gebaut, in der customtkinter und pyperclip fehlten; PyInstaller baute trotzdem. Beim Start rief die Paket-Nachinstallation sys.executable -m pip … auf – in der EXE ist das KombiTool.exe selbst, also startete jede Instanz eine weitere (138 Prozesse, 1,5 GB). Der Fehler steckte schon seit Einführung der Nachinstallation im Code, wurde aber erst durch den unvollständigen Build ausgelöst. Jetzt: in der EXE wird nie nachinstalliert, sondern eine Fehlermeldung mit den fehlenden Paketen gezeigt und beendet. build_exe.bat zeigt das verwendete Python, prüft alle Pakete vorab, installiert fehlende dort nach und bricht sonst ab, ohne zu bauen; eine alte dist\KombiTool.exe wird vorher entfernt, damit „EXE erstellt" nur nach echtem Erfolg erscheint. Alle .bat-Dateien mit Windows-Zeilenenden (CRLF). |
| v0.77 | DirComm öffnet nicht mehr unsichtbar + wählbares Screenshot-Tastenkürzel. Auslöser: DirComm zeigte nach dem Start nur noch ein Taskleisten-Symbol. In dircomm_prefs.json stand eine Position auf einem externen Monitor; ohne ihn landete das Fenster außerhalb jedes Bildschirms, weil die gespeicherte Position ungeprüft gesetzt wurde. Jetzt wird sie beim Start gegen die Arbeitsflächen der tatsächlich angeschlossenen Monitore geprüft (safe_geometry() in tools/base.py); liegt kein greifbarer Teil der Titelleiste auf einem Monitor, öffnet DirComm mittig auf dem Hauptbildschirm, zu große Fenster werden auf die Arbeitsfläche verkleinert. Minimiert oder maximiert wird die Position nicht mehr gespeichert (Windows meldet minimierte Fenster bei −32000/−32000). Zweitens: das Screenshot-Tastenkürzel ist nicht mehr fest F9, sondern unter ⚙️ Einstellungen wählbar (Zusatztaste + Taste, abschaltbar, wirkt sofort); ungeeignete Kürzel werden mit Begründung abgelehnt, der Systray-Eintrag zeigt das aktuelle Kürzel. Neues Modul tools/hotkey.py, neue Testsuite test_v077_geo_hotkey.py. |
| v0.76 | Gemeinsamer, einstellbarer Speicherort + Datenimport + neue Oberfläche. Bis v0.75 hatte jedes Werkzeug seinen Ablageort fest im Code (%USERPROFILE%\KombiTool\…) – der Notizzettel zeigte den Pfad nur an, ändern ließ er sich nicht. Jetzt gibt es einen gemeinsamen Datenordner für alle Werkzeuge, umstellbar im neuen Fenster ⚙️ Einstellungen (Systray), mit Wahl zwischen Verschieben, Kopieren und bloßem Umstellen des Pfades; verschoben wird erst, nachdem die Kopie angekommen ist. Der gewählte Pfad liegt gerätelokal in %LOCALAPPDATA%\KombiTool\location.json – nicht im Datenordner selbst, sonst wäre es ein Zirkelschluss – und ein unerreichbares Netzlaufwerk führt zum vorübergehenden Rückfall auf den Vorgabeordner samt Hinweis in der Statusleiste, statt zu Datenverlust. Neu ist außerdem der Datenimport aus einem beliebigen Ordner (alter Pfad, zweiter PC, Sicherung): mit Auflistung der gefundenen Bestände, Einzelauswahl und drei Verhaltensweisen bei Namensgleichheit – behalten, Notiz-Tabs anfügen oder überschreiben (mit .vor_import-Sicherung). Zweitens die Oberfläche: KombiTool übernimmt Palette, Schrift und Aufbau von Markdown-Editor-BL v2.5, einschließlich Dunkelmodus (hell / dunkel / wie Windows, sofort wirksam) und einer dunklen Statusleiste, die in jedem Werkzeug einen Link zu diesem Handbuch enthält. Dabei behoben: der Schriftmix aus Roboto und Segoe UI. Neue Testsuite test_v076_paths_theme.py. |
| v0.75 | Weltkarte: OpenStreetMap-Standardkacheln entfernt. Die in v0.74 aufgenommene OSM-Ebene zeigte statt der Karte „Access blocked — Referer is required by tile usage policy of OpenStreetMap's volunteer-run servers". Ursache: Die OSM-Kachelserver verlangen einen Referer-Header; eine per file:// von der Festplatte geöffnete Seite sendet keinen, und das lässt sich seitenseitig nicht nachrüsten. Der Server liefert dabei ein gültiges Bild, weshalb Leaflet keinen Kachelfehler meldete und die Notfall-Umschaltung aus v0.74 nicht griff. Ersetzt durch zwei ohne Referer geprüfte Quellen: Straßen (Esri) mit Orts- und Straßennamen und Topografie (OpenTopoMap). OpenTopoMap ist zugleich die neue Ausweichquelle — bewusst ein anderer Anbieter als die Esri-Ebenen, damit ein Ausfall dort nicht beide Seiten trifft. Alle fünf Kachelquellen wurden vor der Auslieferung einzeln ohne Referer abgerufen und geprüft. |
| v0.74 | Weltkarte ohne API-Schlüssel + Rechtsklick im Zielfeld: Der bisher genutzte Kachel-Dienst CARTO verlangt seit 2026 einen API-Schlüssel und lieferte die Karte nur noch mit dem quer aufgedruckten Hinweis „API KEY REQUIRED". Die Weltkarte im Traceroute bezieht ihr Kartenbild jetzt aus vier schlüsselfreien Quellen — Esri Canvas dunkel (Voreinstellung) und hell, OpenStreetMap sowie Esri-Satellit —, umschaltbar über das Symbol oben links. Häufen sich Kachelfehler, schaltet die Seite selbsttätig auf OpenStreetMap um; kann die Kartenbibliothek gar nicht geladen werden (kein Internet, Firewall), erscheint statt einer weißen Fläche ein erklärender Hinweis, und Leaflet wird zusätzlich von einem zweiten CDN geholt. Die Geolokalisierung über ip-api.com war von der Umstellung nicht betroffen und arbeitet unverändert ohne Schlüssel. Zweite Neuerung: Das Zielfeld hat ein Rechtsklick-Menü (Ausschneiden, Kopieren, Einfügen, Alles markieren, Feld leeren) — beim Einfügen wird aus dem kopierten Text automatisch die IP-Adresse bzw. der Hostname herausgezogen, auch aus einer ganzen tracert-Zeile oder einer URL. Die Funktion liegt als ToolBase.add_entry_context_menu() zentral bereit und lässt sich später in weiteren Tools nutzen. |
| v0.73 | Schriftgrößen-Fix (Punkte/Pixel): In Systeminfo, Pixellineal, DirComm, Duplikatfinder, DirVergleich und Notizzettel waren die Schriften der nativen Tk-Bereiche (Textfeld, Listen, Lineal-Beschriftung, Kontextmenüs) rund 1,38-mal zu groß, während Schaltflächen und Überschriften daneben korrekt aussahen. Ursache: Tk deutet eine positive Schriftgröße als Punkte, eine negative als Pixel — CustomTkinter rechnet ausschließlich in Pixeln, ToolBase.tk_font() gab die Größe aber positiv zurück. Seit v0.73 wird sie negativ geliefert; auf einem hochauflösenden Display bei hoher Skalierung wurde nachgemessen, dass die Nennwerte 10/12/14/18/24 damit exakt die Größe treffen, die CustomTkinter selbst setzt. Im Pixellineal entfällt zugleich die Deckelung des Skalierungsfaktors auf 1.5 — sie war ein Pflaster über demselben Fehler. Außerdem: build_exe.bat ruft jetzt py -m PyInstaller statt pyinstaller auf (PATH-unabhängig, nötig seit dem neuen Python Install Manager). |
| v0.72 | NEU Autostart mit Windows: neuer Systray-Menüpunkt „Mit Windows starten" (Toggle mit Häkchen). Trägt KombiTool in HKCU\Software\Microsoft\Windows\CurrentVersion\Run ein — nur für den aktuellen Benutzer, kein Administratorrecht. Beim Skript-Betrieb wird wscript.exe start_kombitool.vbs registriert (kein Konsolenfenster beim Boot), bei der PyInstaller-EXE der Pfad zur .exe direkt. Das Häkchen wird bei jedem Menü-Öffnen frisch aus der Registry gelesen und bleibt daher korrekt, auch wenn der Eintrag extern entfernt wurde. |
| v0.71 | Duplikatfinder: Sammel-Auswahl (✓-Spalte, ⚡ Auto-Auswahl "älteste/neueste behalten", Gruppenschutz-Warnung, Sammel-Löschen in den Papierkorb im Hintergrund); FIX "Im Explorer zeigen" öffnete den Dokumente-Ordner statt des Dateiordners (Schrägstriche im Pfad, Duplikatfinder + DirVergleich + DirComm); FIX Doppelklick auf Kopfzeile/Trennstrich/Leerbereich öffnete in DirComm die markierte Datei ("Öffnen mit"-Dialog); Traceroute-Weltkarte: nummerierte Marker, Latenz-Legende, Versatz deckungsgleicher Marker, Erkennung unsicherer GeoIP-Standorte (gestrichelt) mit Routen-Checkbox; Pixellineal: Skalen-Zoom (verwirrend, entkoppelte Skala vom Bildschirm) ersetzt durch Echtzeit-Lupe — beim Messen zeigt ein Fenster den vergrößerten Bildschirm neben dem Lineal mit Fadenkreuz, Mausrad schaltet ×2–×16 |
| v0.70 | NEU Duplikatfinder (Größe → Teil-Hash → Voll-Hash SHA1, Mindestgröße wählbar, Papierkorb-Löschung); NEU DirVergleich (zwei Ordnerbäume: nur links / nur rechts / unterschiedlich / identisch, Datums-Toleranz ±2 s, reines Lese-Werkzeug); Screenshot: globaler Hotkey F9; DirComm: leere Ordner gelb markiert, ∅-Button listet rekursiv leere Ordner, Altersanalyse per Rechtsklick; Fix-Runde: Status-Spalte in DirVergleich rechtsbündig, Spalten-Autofit per Doppelklick auf den Trennstrich (DirComm, Duplikatfinder, DirVergleich) |
| v0.69 | Bugfix-Release (Code-Review): Watchdog repariert — startete bis v0.68 alle 30 s fälschlich eine zusätzliche Queue-Schleife (steigende CPU-Last im Dauerbetrieb, Log-Spam); DirComm-Suche friert bei hängenden Netzlaufwerken nicht mehr ein (stat() im Suchthread); Screenshot-Overlay nutzt Ursprung des virtuellen Bildschirms (Multi-Monitor-Versatz behoben) und fordert nach der Aufnahme sofortige DPI-Prüfung an; Temp-Datei nach Zwischenablage-Kopie wird gelöscht; Notizzettel behält den aktiven Tab beim Schließen anderer Tabs; DirComm-Sortierung OSError-fest, Ordnergrößen-Tiefenlimit 8 → 30; Traceroute erkennt IPs in Klammern; Logging startet vor den Tool-Imports |
| v0.68 | DPI-Awareness-Fix: nach Schlafmodus/Monitor-Reconnect werden Schriftgrößen in allen betroffenen Tools (DirComm, Notizzettel, Systeminfo, Pixellineal) automatisch neu berechnet und aktualisiert |
| v0.67 | Globale Schriftgröße (⚙-Button in DirComm, Notizzettel, Systeminfo); Netzlaufwerk-Timeout 8s in DirComm (Synology-Support); Abbruch-Token für Size-Berechnungen beim Navigieren; Suche im Hintergrund-Thread; DirComm zweites Öffnen repariert; Treeview indicatorsize/indent DPI-skaliert; Logging in kombitool.log; Watchdog für GUI-Queue; Pixellineal über gesamten Monitor; Screenshot all_screens; Traceroute: Stop-Button, pathping-Modus, Weltkarte (Leaflet.js + CartoDB + ip-api.com), IPv4-Erzwingung; Notizzettel doppelte Schrift-Skalierung behoben |
| v0.66 | Notizzettel: Mehrere Tabs — dynamisch hinzufügen (+), löschen (×), umbenennen per Doppelklick; alle Tabs in einer JSON-Datei; automatische Migration alter Einzelnotizen |
| v0.65 | Code-Review-Fixes: _Tooltip-Scope-Bug; Imports bereinigt; _SIZE_POOL.shutdown(); screenshot.py nutzt zentrale VERSION |
| v0.64 | DirComm Schneeball-Bug behoben (tk.Wm.wm_geometry-Roundtrip, Prefs-Reset); Schriften in tk-nativen Widgets DPI-korrekt (tk_font() via ScalingTracker) |
| v0.55 | Architektur-Refactoring: neue ToolBase-Klasse (tools/base.py); DPI-skalierte Schriften zentral; alle Tools auf ToolBase umgestellt; diverse Bugfixes |
| v0.51 | DirComm: Drag & Drop (Verschieben/Kopieren); Kollisions- und Unterordner-Schutz |
| v0.48 | DirComm: Löschen in Papierkorb; rekursive Suche; Balkengrafik in Größen-Spalte |
| v0.45 | DirComm: Einstellungen persistent (Spaltenbreiten, Fenstergröße, letzter Pfad) |
| v0.44 | DirComm: Rechtsklick-Kontextmenü (Explorer öffnen, Pfad kopieren, Löschen) |
| v0.29 | DirComm: Spalten Datum und Typ; Pfad per Klick kopieren |
| v0.28 | DirComm: Icon-Toolbar mit Tooltips; Navigations-History; Doppelklick-Verhalten |
| v0.27 | Doppelklick öffnet Dateien; Einzelinstanz-Schutz |
| v0.26 | Screenshot: Verpixelungs-Tool; Auto-Install; build_exe.bat; erstes Handbuch |
| v0.25 | Notizzettel: Schriftgröße-Auswahl, Zeitstempel; Traceroute ohne Terminal; diverse Bugfixes |
| v0.22 | Systeminfo: Monitor-Sektion; Lineal: DPI-Handling und Einheiten-Umschaltung |