Skip to main content

Dripfetch

A customizable terminal dashboard with animated Matrix-style rain. Place system info, logos, clocks, calendars, weather, text, and network graphs anywhere on screen, and tune everything from one YAML file.

Dripfetch demo

Features

  • Rain with adjustable density, symbols, colors, speed, length, and box collisions
  • Seven box types: logo, sysinfo, clock, calendar, weather, net, text
  • 487 ASCII logos, auto-detected from your OS or chosen explicitly
  • Five border styles, shared palette and padding
  • Click a box and move it with arrows or WASD; the position is saved to YAML
  • Seven presets plus a default (0), validated configs with clear error paths

Install

Requires Python 3.10+ and a POSIX terminal with curses (macOS, Linux).

pipx install dripfetch                       # recommended
python -m pip install dripfetch              # inside a virtual environment
pipx install .                               # from a source checkout

brew tap a-shygun/dripfetch https://github.com/a-shygun/dripfetch.git
brew install a-shygun/dripfetch/dripfetch    # Homebrew

yay -S dripfetch                             # Arch (AUR)

bash install.sh sets up a local virtual environment in ~/dripfetch and links dripfetch into ~/.local/bin; bash uninstall.sh removes it and keeps your config.

Uninstall: pipx uninstall dripfetch · python -m pip uninstall dripfetch · brew uninstall dripfetch · yay -R dripfetch

Nix

psutil and ruamel.yaml are runtime dependencies, not native build inputs. Put them in dependencies (or propagatedBuildInputs), not nativeBuildInputs, or the installed command fails with ModuleNotFoundError:

python3Packages.buildPythonApplication {
  pname = "dripfetch";
  version = "0.4.0";
  pyproject = true;
  src = ./.;
  build-system = [ python3Packages.setuptools ];
  dependencies = with python3Packages; [ psutil ruamel-yaml ];
}

Usage

dripfetch
Key Action
q Quit
Space Pause / resume rain
Click Select a box
Arrows / WASD Move the selected box (saved automatically)
Esc Deselect

Commands

Command Action
dripfetch -c, --use-config NUMBER|NAME|PATH Run with a preset or YAML file for this session only
dripfetch --set-config NUMBER|NAME|PATH Save a preset or file as the active config
dripfetch --set-logo NAME Save a logo in the active config
dripfetch --list-configs / --list-logos / --list-boxes List presets, logos, or box types
dripfetch --print-logo NAME Print a logo
dripfetch --config-path Show the config path in use
dripfetch --init-config Create or restore the default config
dripfetch -v, --version / --version-raw Show the version
dripfetch -h, --help Show help
dripfetch --use-config 2                  # try a preset
dripfetch -c ./my-layout.yaml             # try your own file
dripfetch --set-config moonlight_observatory

Presets are 01_neon_matrix, 02_moonlight_observatory, 03_ops_console, 04_citrus_pop, 05_arcade_white, 06_ink_and_amber, 07_arcade_cabinet, and 0 for the default. A selector can be the number, full name, or short name.

Lower CPU usage

The rain is the main cost. Lower rain.intensity to use less CPU; 0 disables rain and leaves the dashboard nearly idle. Around 20–60 suits a laptop on battery. Pausing with Space and shorter lengths also help.

Configuration

The active config is ~/.config/dripfetch/config.yaml. The packaged 0_default.yaml documents every option. Moving a box writes its new position back to the file in use.

background: "#080B12"
keyboard:
  layout: qwerty            # qwerty | azerty | qwertz
rain:
  collision: true
  intensity: 60             # lower = less CPU
  character: ["│", "┃", "╎"]
  colors:  [[0.7, "#21F7A8"], [0.3, "#45B8FF"]]   # [probability, value], must sum to 1
  speeds:  [[0.5, 30], [0.5, 50]]                 # ms per step, lower = faster
  lengths: [[0.8, 6], [0.2, 14]]
  effects: {acceleration: false, splash: false}
boxes:
  border: titled_single     # single | double | titled_single | titled_double | none
  border_color: "#50FFC1"
  text_color: "#D9E5F4"
  accent_color: "#50FFC1"
  padding: {horizontal: 2, vertical: 0}
  items:
    - type: logo
      logo: arch2
      position: {horizontal: -32, vertical: 0}
    - type: clock
      clock_size: small
      show_date: true
      position: {horizontal: 28, vertical: -7}
    - type: text
      title: NOTE
      text: |
        Dripfetch is running.
      alignment: center
      position: {horizontal: 28, vertical: 7}

Colors are #RRGGBB or #RRGGBBAA. Positions are cell offsets from the center (positive = right / down).

Box options

Type Options
logo logo (omit to detect your OS), colors for $1, $2, … markers
sysinfo sections: system, display, hardware, disk, connectivity (true/false)
clock clock_size small/medium/big, clock_style single/double, clock_24h, show_seconds, show_am_pm, blink_colon, show_date
calendar starting_day: monday, sunday, saturday
weather location or latitude/longitude, units celsius/fahrenheit (or metric/imperial), days 1–7. Uses Open-Meteo and needs internet.
net width, height, interval, download_color, upload_color
text text (string, block, or list), alignment left/center/right

Every box also accepts title, border, and position.

Neon Matrix
01 · Neon Matrix
Moonlight Observatory
02 · Moonlight Observatory
Ops Console
03 · Ops Console
Citrus Pop
04 · Citrus Pop
Arcade White
05 · Arcade White
Ink and Amber
06 · Ink and Amber
Arcade Cabinet
07 · Arcade Cabinet
Default layout
0 · Default

Project layout

src/dripfetch/
├── app/      cli.py (arguments), app.py (main loop), config.py (YAML + validation), terminal.py (renderer)
├── box/      base, manager, layout, placement, border, colors, registry, validation
│   └── types/  one module per box type; helper/ holds their support code
├── rain/     manager, spawning, physics, rendering, colors, models, constants
└── assets/   logos/*.txt and configs/*.yaml
Formula/      Homebrew formula        packaging/arch/  AUR PKGBUILD

To add a box type, drop a module with one BaseBox subclass into box/types/. It is discovered automatically and the module name becomes its type. An optional validate_config(cls, item, path) classmethod validates its options.

License

MIT. Report vulnerabilities privately, see SECURITY.md.

Metadata

Release files for dripfetch 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dripfetch 0.4.0
File Size Uploaded
dripfetch-0.4.0.tar.gz 154.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dripfetch 0.4.0
File Interpreter ABI Platform
dripfetch-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 397.5 kB

Release files / dripfetch-0.4.0.tar.gz

Download URL dripfetch-0.4.0.tar.gz
Size 154.7 kB
Tags Source
SHA-256 checksum
How to use checksums
ebc73ef614f71e8cbb1f6af30c063833b01781c0cd4f88b7617a3d08977f43a6
BLAKE2b-256 checksum
How to use checksums
9677e8482c7a2152805a4b51fd18d8584459dcdc1842bd2b37f1a057eb0fbc80
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release files / dripfetch-0.4.0-py3-none-any.whl

Download URL dripfetch-0.4.0-py3-none-any.whl
Size 242.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8dc3eb6cb611f234c0b4119bc2c7ef0a172c4884e7841f949c49888509b423c5
BLAKE2b-256 checksum
How to use checksums
ee834e37e1b719450f6c63be5a8ed58fddd2c7ed7ad197ffa6beb8ff6bdc8d31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 4, 2026.

Transparency log

Release history Release notifications | RSS feed

0.5.0

2 release files

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page