Skip to content

Latest commit

 

History

History
221 lines (154 loc) · 8.66 KB

File metadata and controls

221 lines (154 loc) · 8.66 KB

Fortgeschrittene Nutzung

Benchmark-Modus

Das Flag --benchmark zeigt Zeitinformationen fur die parallele Probephase und die Gesamtausfuhrungszeit an:

xfetch --benchmark

Beispielausgabe:

Parallel probes:   127ms
Total time:        189ms

Benchmark-Zeitmessung umfasst:

  • Parallele Proben: GPU-Erkennung, Paketzahlung und offentlicher IP-Abruf (gleichzeitig ausgefuhrt uber thread::scope)
  • Gesamtzeit: Gesamte Ausfuhrung einschlieelich Konfigurationsladen, Modulsammlung, Rendering und Ausgabe

Cache-System

xfetch zwischenspeichert bestimmte Daten, um die Leistung bei wiederholten Ausfuhrungen zu verbessern.

Cache-Speicher

Der Cache wird als JSON-Datei gespeichert unter:

Plattform Pfad
Linux ~/.cache/xfetch/cache.json
macOS ~/Library/Caches/xfetch/cache.json
Windows %LOCALAPPDATA%/xfetch/cache.json

Zwischengespeicherte Daten

Daten TTL Zweck
Paketanzahlen 5 Minuten Vermeidet mehrfache Ausfuhrung von Paketmanager-Befehlen
Offentliche IP 5 Minuten Vermeidet wiederholte HTTP-Anfragen

Cache verwalten

# Alle zwischengespeicherten Daten loschen
xfetch --clean-cache

Cache deaktivieren

Setzen Sie disable_cache: true in Ihrer Konfiguration, um das Caching vollstandig zu deaktivieren:

{
    "disable_cache": true
}

Dies ist nutzlich fur Umgebungen, in denen sich der Systemzustand haufig andert, oder wenn Sie bei jeder Ausfuhrung die aktuellsten Daten wunschen.

Datenschutzeinstellungen

xfetch bietet Optionen zur Steuerung des Netzwerkzugriffs und der Datenerfassung.

Abruf der offentlichen IP deaktivieren

Das Modul public_ip fuhrt eine HTTP-Anfrage an einen externen Dienst durch. Um dies aus Datenschutzgrunden zu deaktivieren:

{
    "disable_ip_fetching": true
}

Wenn aktiviert, gibt das Modul public_ip "Disabled" zuruck, anstatt zu versuchen, die IP-Adresse abzurufen.

Das pluginbasierte Wettermodul fuhrt ebenfalls externe API-Aufrufe durch. Um es zu deaktivieren, entfernen Sie einfach das Plugin aus Ihrer Konfiguration.

Netzwerkabhangigkeiten nach Modul

Modul Netzwerkzugriff Externer Dienst
public_ip Ja ifconfig.me, api.ipify.org, icanhazip.com
plugin:weather Ja (falls installiert) wttr.in
plugin:github-stats Ja (falls installiert) api.github.com
Alle anderen Module Nein N/A

Plattformubergreifendes Verhalten

xfetch passt sich automatisch an das Betriebssystem an.

Plattformspezifisches Modulverhalten

Modul Linux macOS Windows
GPU lspci -mm system_profiler SPDisplaysDataType wmic oder PowerShell
Akku /sys/class/power_supply/BAT* pmset -g batt wmic path Win32_Battery
Shell $SHELL $SHELL Prozess-Elternkette durchlaufen
Datum/Uhrzeit date-Befehl date-Befehl PowerShell
Pakete pacman, dpkg, rpm, flatpak, snap, apk, nix-env brew scoop, winget
Konfigurationspfad ~/.config/xfetch/ ~/Library/Application Support/xfetch/ %APPDATA%/xfetch/
Cache-Pfad ~/.cache/xfetch/ ~/Library/Caches/xfetch/ %LOCALAPPDATA%/xfetch/
Binary-Name xfetch-plugin-<name> xfetch-plugin-<name> xfetch-plugin-<name>.exe

Fallback-Ketten

xfetch verwendet abgestufte Fallback-Ketten fur plattformspezifische Funktionen:

  1. GPU-Erkennung: Primarer Befehl > Fallback-Befehl > "Unknown"
  2. Akku-Erkennung: Primarer Pfad > Fallback-Befehl > "N/A"
  3. Bildschirmauflosung (Plugin): xrandr > wlr-randr > xdpyinfo (Linux); system_profiler (macOS); PowerShell (Windows)
  4. Zeitzone (Plugin): /etc/timezone > /etc/localtime-Symlink > timedatectl

Terminalunterstutzung

  • Farbausgabe: Alle ANSI-fahigen Terminals
  • Bildlogos: iTerm2, Kitty oder Sixel-kompatible Terminals
  • ASCII-Logos: Alle Terminals
  • Animation: Erfordert TTY. Fallback auf statische Anzeige in Pipes oder Nicht-TTY-Kontexten.

Daemon-Modus

Der Daemon-Modus fixiert eine Animation oben im Terminal und loopt sie im Hintergrund, sodass die Shell-Eingabeaufforderung darunter nutzbar bleibt.

xfetch --daemon      # Daemon starten
xfetch --daemon-stop # Daemon stoppen

Die Animation lauft nur in TTY-Terminals; bei Pipes oder Umleitungen wird das statische Logo angezeigt. Der Daemon-Modus erfordert einen logo_animation-Block mit einem Plugin (z. B. animate-logo). Im Daemon-Modus loopt die Animation unbegrenzt — duration_ms und loop werden ignoriert. Fur eine endliche Animation, die von selbst stoppt, den Daemon-Modus deaktiviert lassen.

Hinweis: Sowohl der animierte Daemon als auch der Live-Statistik-Daemon funktionieren unter Linux, macOS und Windows. Unter Windows rendert der Elternprozess das erste Frame und startet einen Worker, der die Konsole teilt; --daemon-stop/--daemon-live-stop signalisieren ihn und er beendet sich selbst, wenn die Shell die Konsole verlässt.

Live-Statistik-Daemon

Der Live-Statistik-Daemon (daemon_live) fixiert einen Fetch-Block am oberen Terminalrand und fragt alle daemon_live_refresh Sekunden eine leichte Modul-Teilmenge neu ab. Er ist ein Geschwister des obigen animierten Daemons — der vorhandene animierte Daemon bleibt unverandert. Konfigurationsschlussel: daemon_live, daemon_live_refresh, daemon_live_modules, daemon_live_reload (Hot-Reload der Konfiguration und des aktiven Themes).

xfetch --no-daemon-live     # Live-Daemon deaktivieren, auch wenn er in der Konfiguration aktiviert ist
xfetch --daemon-live-stop   # laufenden Live-Daemon stoppen
xfetch --daemon-live-reload # Hot-Reload erzwingen

WSL-Darstellung

Unter dem Windows-Subsystem fur Linux kann die OS-Zeile uber os_wsl_style (nur Linux) mit WSL-Details dekoriert werden:

Wert Verhalten
off Schlichter OS-Name, keine Dekoration
minimal Fügt (WSL) an (Standard)
full Fügt die WSL-Version und WSLg (falls vorhanden) an

Intro-Effekte

xfetch effects installiert, listet und entfernt Intro-Effekte, die die Inhaltszeilen beim Start des Fetch animieren. Der Konfigurationsschlussel effects (ein einzelner Effekt oder eine Liste) bestimmt, welche Effekte in welcher Reihenfolge abgespielt werden:

xfetch effects install <name>   # Effekt installieren
xfetch effects list             # installierte Effekte auflisten
xfetch effects remove <name>    # Effekt entfernen
{
    "effects": {
        "plugin": "decrypt",
        "duration_ms": 1500,
        "fps": 30
    }
}

Siehe die Seite Effekte für das vollständige Protokoll, die Konfigurationsfelder und das Schreiben eigener Effekte.

Leistungsoptimierung

xfetch verwendet mehrere Leistungsoptimierungen:

Paralleles Probing

Die folgenden Proben laufen gleichzeitig mit Rusts thread::scope:

  • GPU-Erkennung
  • Paketzahlung
  • Offentlicher IP-Abruf

Dies reduziert die Gesamtausfuhrungszeit durch parallele Ausfuhrung von E/A-gebundenen Operationen.

Lazy Initialization

Systemressourcen werden nur initialisiert, wenn das entsprechende Modul angefordert wird:

  • sysinfo::System (CPU, Arbeitsspeicher, Festplatten, Netzwerke) -- wird lazy initialisiert
  • sysinfo::Disks -- wird nur initialisiert, wenn ein Festplattenmodul konfiguriert ist
  • sysinfo::Networks -- wird nur initialisiert, wenn ein Netzwerkmodul konfiguriert ist
  • sysinfo::Components -- wird nur initialisiert, wenn Temperaturmodule konfiguriert waren

Caching

Paketanzahlen und offentliche IP-Abfragen werden mit TTLs zwischengespeichert, um redundante Systemaufrufe und Netzwerkanfragen zu vermeiden.

Umgebungsvariablen-Referenz

Variable Beschreibung Verwendet von
USER / LOGNAME Aktueller Benutzername Kernmodule (user)
SHELL Aktueller Shell-Pfad Kernmodule (shell)
HOME Home-Verzeichnispfad Kernmodule, Plugin-Erkennung
TERM_PROGRAM Terminalemulator-Name Kernmodule (terminal)
TERM Terminaltyp Kernmodule (terminal)
WT_SESSION Windows-Terminal-Sitzung Kernmodule (terminal)
XDG_CURRENT_DESKTOP Desktop-Umgebung Kernmodule (wm)
DESKTOP_SESSION Desktop-Sitzungsname Kernmodule (wm)
XFETCH_PLUGIN_REPO Plugin-Repository-URL Plugin-Installation
XFETCH_PLUGIN_DEV_DIR Plugin-Entwicklungsverzeichnis Plugin-Erkennung
GITHUB_USER GitHub-Benutzername github-stats-Plugin
GH_TOKEN / GITHUB_TOKEN GitHub-Token, um das API-Rate-Limit für Updates zu erhöhen xfetch update
CARGO_NET_GIT_FETCH_WITH_CLI Git-CLI-Abruf erzwingen Plugin-Builds