Skip to content

Repository files navigation

piko

A fast, lightweight system information tool written in Rust, inspired by Neofetch.

License: MIT Version

Piko gathers and displays system metrics alongside distribution ASCII art. It is built to start instantly (sub-10ms), requires zero configuration to run, and supports custom layouts and color palettes.

Features

  • Fast execution (<10ms) using direct procfs/sysfs reads
  • Zero configuration required; embedded defaults work out of the box
  • 10 built-in color themes (Catppuccin, Nord, Dracula, Gruvbox, Tokyo Night, One Dark, Solarized, Rose Pine, Synthwave)
  • 230+ distribution ASCII logos imported from Neofetch with authentic multi-color palettes and small variants
  • Comprehensive system info: OS, Host/Model, Kernel, Uptime, Packages (11 package managers), Shell, DE, WM, Terminal, CPU, GPU (with udev / vulkan hardware detection), Memory, Disks, and Battery
  • Terminal color blocks palette
  • Border formatting (single, double, rounded, bold)
  • Formats: Terminal ANSI, JSON, and YAML

Installation

Nix / NixOS

Run directly without installing:

nix run github:Elxes04/Piko

Install to profile with Nix Flakes:

nix profile install github:Elxes04/Piko

Add to your NixOS configuration (flake.nix):

{
  inputs = {
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    piko.url = "github:Elxes04/Piko";
  };

  outputs = { self, nixpkgs, piko, ... }: {
    nixosConfigurations.yourhostname = nixpkgs.lib.nixosSystem {
      modules = [
        ({ pkgs, ... }: {
          environment.systemPackages = [
            piko.packages.${pkgs.stdenv.hostPlatform.system}.default
          ];
        })
      ];
    };
  };
}

From Source

git clone https://github.com/Elxes04/piko.git
cd piko
cargo build --release
sudo cp target/release/piko /usr/local/bin/

Or run the included installer:

./install.sh

From Cargo

cargo install --path .

Usage

Run piko without arguments to display system info using your detected distribution logo:

piko

CLI Flags

Options:
  -c, --config <CONFIG>                Path to custom TOML config file
  -t, --theme <THEME>                  Color theme name (e.g. catppuccin, nord, dracula, gruvbox, tokyo-night)
      --ascii-distro <DISTRO>          Override distribution logo (e.g. arch, nixos, debian, fedora)
      --logo-only                      Display only the distro logo
      --list-logos                     List all available distribution logos
      --list-themes                    List all available themes
  -f, --format <FORMAT>                Output format: normal, json, yaml [default: normal]
      --logo-position <POSITION>       Logo position: left, right, top, bottom
      --logo-size <SIZE>               Logo size: small, medium, large
      --logo-style <STYLE>             Logo style: ascii, unicode, minimal
  -b, --border                         Draw a border around the output
      --border-style <STYLE>           Border style: single, double, rounded, bold
      --no-separators                  Hide field separators
      --color-blocks <BOOL>            Toggle color blocks palette (true/false)
      --gen-config                     Generate default config in ~/.config/piko/config.toml
      --print-config                   Print default configuration to stdout
      --export-config <PATH>           Export current configuration to file
      --import-config <PATH>           Load and apply configuration from file
  -h, --help                           Print help
  -V, --version                        Print version

Examples

# Use a specific theme
piko --theme nord

# Use compact logo size with a border
piko --logo-size small --border

# Override the distro logo
piko --distro arch

# Generate a config file to customize
piko --gen-config

# Export machine-readable system info
piko --format json

Configuration

Piko checks for configuration files in the following order:

  1. Path supplied to --config <path>
  2. Path defined in $PIKO_CONFIG
  3. $XDG_CONFIG_HOME/piko/config.toml (or ~/.config/piko/config.toml)
  4. /etc/piko/config.toml
  5. Embedded default configuration

Generate a starter configuration file at ~/.config/piko/config.toml:

piko --gen-config

Example configuration snippet:

layout = "default"

[output]
info_keys = [
    "OS",
    "Host",
    "Kernel",
    "Uptime",
    "Packages",
    "Shell",
    "DE",
    "WM",
    "Terminal",
    "CPU",
    "GPU",
    "Memory",
    "Disk",
    "Battery",
]
show_logo = true
logo_position = "left"
logo_size = "medium"
show_title = true
show_color_blocks = true
color_blocks_style = "circle"

[theme]
name = "catppuccin"

[display]
border = false
border_style = "rounded"
show_separators = true
separator_symbol = ":"

Supported Distributions

Piko includes ASCII art for:

Alpine, Android / Termux, Arch Linux, Artix, CentOS, Debian, EndeavourOS, Fedora, FreeBSD, Gentoo, Kali, Linux Mint, macOS, Manjaro, NixOS, OpenBSD, openSUSE, Pop!_OS, Raspberry Pi, Red Hat, Ubuntu, Void Linux, Windows, and generic Linux (Tux).

To see all available logos at any time:

piko --list-logos

Documentation

Full documentation is available in the docs/ directory:

License

MIT License. See LICENSE for details.

About

`Piko` is a command-line application written in Rust that gathers and displays system information in a customizable format. Inspired by tools like Neofetch, this application allows users to view details about their operating system, CPU, memory usage, and more

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages