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:

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

Zwischengespeicherte Daten

DatenTTLZweck
Paketanzahlen5 MinutenVermeidet mehrfache Ausfuhrung von Paketmanager-Befehlen
Offentliche IP5 MinutenVermeidet 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

ModulNetzwerkzugriffExterner Dienst
public_ipJaifconfig.me, api.ipify.org, icanhazip.com
plugin:weatherJa (falls installiert)wttr.in
plugin:github-statsJa (falls installiert)api.github.com
Alle anderen ModuleNeinN/A

Plattformubergreifendes Verhalten

xfetch passt sich automatisch an das Betriebssystem an.

Plattformspezifisches Modulverhalten

ModulLinuxmacOSWindows
GPUlspci -mmsystem_profiler SPDisplaysDataTypewmic oder PowerShell
Akku/sys/class/power_supply/BAT*pmset -g battwmic path Win32_Battery
Shell$SHELL$SHELL$PSModulePath-Prufung
Datum/Uhrzeitdate-Befehldate-BefehlPowerShell
Paketepacman, dpkg, rpm, flatpak, snap, apk, nix-envbrewscoop, choco
Konfigurationspfad~/.config/xfetch/~/Library/Application Support/xfetch/%APPDATA%/xfetch/
Cache-Pfad~/.cache/xfetch/~/Library/Caches/xfetch/%LOCALAPPDATA%/xfetch/
Binary-Namexfetch-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.

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

VariableBeschreibungVerwendet von
USER / LOGNAMEAktueller BenutzernameKernmodule (user)
SHELLAktueller Shell-PfadKernmodule (shell)
HOMEHome-VerzeichnispfadKernmodule, Plugin-Erkennung
TERM_PROGRAMTerminalemulator-NameKernmodule (terminal)
TERMTerminaltypKernmodule (terminal)
WT_SESSIONWindows-Terminal-SitzungKernmodule (terminal)
XDG_CURRENT_DESKTOPDesktop-UmgebungKernmodule (wm)
DESKTOP_SESSIONDesktop-SitzungsnameKernmodule (wm)
XFETCH_PLUGIN_REPOPlugin-Repository-URLPlugin-Installation
XFETCH_PLUGIN_DEV_DIRPlugin-EntwicklungsverzeichnisPlugin-Erkennung
GITHUB_USERGitHub-Benutzernamegithub-stats-Plugin
CARGO_NET_GIT_FETCH_WITH_CLIGit-CLI-Abruf erzwingenPlugin-Builds