- Window height overcalculation in left layout — auto-size formula applied the top header height (115px) even in
layout: "left"mode where no top header exists; header contribution is now 32px (outer margins only) when sidebar layout is active, preventing the excess empty space at the bottom of the window
- Duplicate disk entries — devices mounted at multiple points (e.g. btrfs subvolumes) no longer appear as separate rows; deduplication is based on the block device name
- Window height clipping — replaced hardcoded height with dynamic calculation based on actual content (sections + rows); caps at 90% of monitor height using
Gdk.Displayinstead of deprecatedGdk.Screen - First label auto-highlighted on open — GTK's automatic focus on the first selectable widget caused the first value (e.g. Uptime) to appear highlighted on launch; fixed with
set_can_focus(False)afterset_selectable(True)
--config <path>CLI flag — load any config file directly;extendsis ignored in this modeextendskey in config — point to a theme file that wins over your personal config- Load order:
DEFAULTS→config.json→extends file(extended file has highest priority) - One level only —
extendsinside an extended file is ignored - Designed for theme switching: keep personal settings in
config.json, swap themes viaextends
- Load order:
- Layout system —
layout: "top"(classic) orlayout: "left"(vertical sidebar)- Sidebar shows OS name and date rotated 90°, logo at top or bottom (
logo.sidebar_position) - Sidebar hides locale string for a cleaner look
- Sidebar shows OS name and date rotated 90°, logo at top or bottom (
- Animation system — live background animations rendered via Cairo
rain— diagonal streaks falling at 15°, configurable color, speed, drop countsnow— circular flakes with sinusoidal horizontal driftmatrix— falling half-width katakana columns with bright head and fading trailaurora— undulating sine bands using accent, hi, and ok palette colorswarp— stars radiating from center, accelerating outward (starfield effect)scopeparam:"body"(below header only) or"full"(entire window)
- Gradient bar — animated 2-color scrolling bar replacing the header separator
- Horizontal in top layout, vertical in left layout
- Configurable colors, disabled by default
- Background image overlay — any image rendered at bottom-right corner
- Scales source image to configured size
- Adjustable opacity, rendered above content but behind nothing (Overlay stack)
bg_image.enabledflag — set tofalseto disable completely (no image, no distro logo fallback)
- Theme files — ready-made themes in
themes/folder (21 included)- Each file is fully self-contained: all config keys explicitly defined, no ambiguity
- Use with
--configfor direct testing or pointextendsto activate
- Added
python-cairoas explicit dependency
- Window now uses
Gtk.Overlaystack: base content → animation → background image - Body content uses its own
Gtk.Overlayto allow scoped animations DEFAULTSin script is now the single source of truth for all config keys
- Session — reads
XDG_CURRENT_DESKTOP,XDG_SESSION_DESKTOP,DESKTOP_SESSIONwith session type; no longer Hyprland-only - Display — cascade:
hyprctl→xrandr→wlr-randr→$DISPLAY/$WAYLAND_DISPLAY - GPU — removed hardcoded
[Discrete]label; detects 3D controller as fallback - Shell — reads
$SHELLfrom environment instead of assuming fish - Terminal — detects kitty, alacritty, wezterm, foot, xfce4-terminal, konsole, gnome-terminal, tilix; falls back to
$TERM_PROGRAM/$TERM - Term Font — reads kitty, alacritty (toml/yml), foot, wezterm configs
- Packages — detects pacman, dpkg, rpm, apk, flatpak, snap
- OS Age — reads pacman, dpkg, dnf, zypper, yum logs in order
- Login — uses
$USER/$LOGNAME+tty; GUI sessions showuser@localhost - bg_image — falls back to distro logo from Papirus when no path is set
- Full config file system via
~/.config/vsfetch/config.jsonpalette— 14 color keys, full UI customization (defaults to Catppuccin Mocha)font— font family overridefont_sizes— independent sizes fortitle,body, andsmalltextlogo.size— header logo pixel sizelogo.override— custom logo: file path or icon theme namedefault_mode—"full","mini", or"version"(CLI flags still take priority)sections— visible sections and display order for full modedev_tools— fully customizable development tools list (icon, name, command)chassis— manual override for chassis type detectionwindow— width and height per mode- Partial configs supported — only specified keys override defaults
- Chassis auto-detection from
/sys/class/dmi/id/chassis_type config.jsonexample file in repo (installed to/usr/share/doc/vsfetch-git/config.json.example)
- WM class changed from
arch-abouttovsfetch - Header logo rendered directly on header background (no wrapper box or border radius)
- Header text vertically centered relative to logo
- Header text left padding increased (+15px)
- Logo padding added (5px all sides)
- Replaced deprecated
Gtk.Window.set_wmclass()withGLib.set_prgname() - Fixed invalid Python escape sequences causing
SyntaxWarningon Python 3.12+
- GTK3 "About This Computer" panel for Arch Linux / Hyprland
- Sections: Hardware, Desktop, Terminal, Development, Uptime
--miniand--versionmodes- Auto-detects OS and loads Papirus distributor logo
- Color-coded disk/RAM usage