Skip to content

HustavoJhon/ghfetch

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ghfetch

Rust License Theme

ghfetch es una herramienta CLI inspirada en Neofetch y Fastfetch que muestra tu perfil de GitHub junto con informacion del sistema, todo con una estetica retro-terminal en tema Gruvbox.

Muestra tu avatar en ASCII, estadisticas del sistema, y un grafico de contribuciones real — todo en una sola pantalla responsive.

   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░     👻 OS  ·············· Arch Linux
   ░░▒▒▓▓▓▓▓▓▓▒▒░░░░░░░░░░░░░░░     👻 Kernel ········· 6.12.10-arch1-1
   ░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░░░░░░░░     👻 CPU ············ AMD Ryzen 5 3600
   ░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░░     👻 RAM ············ 8.2 GiB / 16 GiB
   ░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░░     👻 Disk ··········· 120 GiB / 445 GiB
   ░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒░░░░░░░     👻 Shell ·········· zsh
   ░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░░░░░░     👻 Terminal ······· kitty
   ░░░░░▒▓▓▓▓▓▓▓▓▓▓▓▓▒▒░░░░░░░░     👻 Res ············ 1920x1080
   ░░░░░░░░░▒▒▓▓▓▒▒▒░░░░░░░░░░░░     👻 Uptime ········· 3h 42m
   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░     👻 Arch ··········· x86_64

                                      73 contribuciones  Menos █ █ █ █  Mas

                                        ░░░░░░░░░░░░░░░▒░░░░░░░░░▒░░░░▓▓░░
                                        ░░░░░░░░░░░░░▒░░░░░░░░░▒▓░░░░░▓▓░░
                                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▓▓░░
                                        ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒░

   fetched in 110ms

Caracteristicas

  • Avatar en ASCII multiplataforma — Descarga tu foto de GitHub y la convierte en arte ASCII con soporte para:
    • True Color (24-bit) — Calidad maxima en terminales modernas (kitty, alacritty, wezterm)
    • 256 colores — Buena calidad en terminales compatibles
    • 16 colores — Compatibilidad maxima
    • ASCII puro — Funciona en cualquier terminal, incluso sin soporte de color
    • Deteccion automatica — Se adapta a las capacidades de tu terminal
  • Deteccion automatica — Lee tu usuario desde git config github.user o gh auth status
  • Info del sistema mejorada — SO (con deteccion de distribucion Linux), kernel, CPU, GPU, RAM, disco, paquetes, shell, terminal, DE, WM, resolucion, uptime, arquitectura
  • Informacion del perfil de GitHub — Bio, ubicacion, empresa, blog, Twitter, seguidores, siguiendo, repos, gists, fecha de creacion
  • Top repositorios — Muestra tus 5 repositorios mas populares con estrellas y lenguaje
  • Grafico de contribuciones — Calendario ASCII del ano actual con datos reales de GitHub
  • Layout responsive — Avatar a la izquierda, info y contribuciones apiladas a la derecha
  • Tema Gruvbox Dark — Paleta de colores cohesiva con iconos fantasma por categoria
  • Rapido — ~100ms cacheado, ~800ms primera ejecucion
  • Multiplataforma — Linux, macOS, Windows
  • Configurable — Archivo TOML con todas las opciones

Instalacion

Instalador automatico (recomendado)

git clone https://github.com/hustavojhon/ghfetch.git
cd ghfetch
bash install.sh

El instalador detecta tu usuario de GitHub automaticamente, te pide un token (opcional) y configura todo.

Desde codigo fuente

git clone https://github.com/hustavojhon/ghfetch.git
cd ghfetch
cargo build --release
cp target/release/ghfetch ~/.local/bin/

Requisitos

  • Rust 1.95+
  • Git (para deteccion automatica de usuario)

Uso

ghfetch                          # Tu perfil (detectado automaticamente)
ghfetch -u torvalds              # Perfil de otro usuario
ghfetch -w 50                    # Avatar mas grande
ghfetch --no-avatar              # Solo info del sistema
ghfetch --no-contributions       # Ocultar grafico
ghfetch --no-profile             # Ocultar info del perfil
ghfetch --no-repos               # Ocultar top repos
ghfetch --nerd-font-icons        # Iconos Nerd Font en vez de emojis
ghfetch --ascii-avatar           # Forzar avatar ASCII puro
ghfetch --color-256              # Forzar modo 256 colores
ghfetch --truecolor              # Forzar modo true color

Opciones

Flag Corta Descripcion
--username -u Usuario de GitHub (auto-detectado si no se especifica)
--config -c Ruta al archivo de configuracion
--no-avatar Oculta el avatar ASCII
--no-system Oculta info del sistema
--no-contributions Oculta grafico de contribuciones
--no-profile Oculta informacion del perfil de GitHub
--no-repos Oculta top repositorios
--avatar-width -w Ancho del avatar en caracteres
--nerd-font-icons Usa glifos Nerd Font
--ascii-avatar Fuerza avatar ASCII puro (funciona en cualquier terminal)
--color-256 Fuerza modo 256 colores
--truecolor Fuerza modo true color (24-bit)

Deteccion de usuario

ghfetch intenta detectar tu usuario de GitHub en este orden:

  1. Flag -u (maxima prioridad)
  2. Variable de entorno GHFETCH_USERNAME
  3. git config --global github.user
  4. gh auth status (GitHub CLI)
  5. Archivo de configuracion ~/.config/ghfetch/config.toml

Si nada funciona, ghfetch te pide que configures uno.

Para guardar tu usuario permanentemente:

git config --global github.user TU_USUARIO

Configuracion

Archivo ~/.config/ghfetch/config.toml:

username = ""

[display]
show_avatar = true
show_system_info = true
show_contributions = true
show_profile_info = false
show_top_repos = true
nerd_font_icons = false
max_contrib_weeks = 53

# Modo de renderizado del avatar: "auto", "truecolor", "256", "16", "ascii"
# auto: detecta automaticamente las capacidades de la terminal
# truecolor: 24-bit RGB (mejor calidad)
# 256: paleta de 256 colores (buena compatibilidad)
# 16: 16 colores basicos (maxima compatibilidad)
# ascii: caracteres ASCII (funciona en cualquier terminal)
avatar_mode = "auto"

[profile]
# Controla que informacion del perfil mostrar (cuando show_profile_info = true)
show_bio = true
show_location = true
show_company = true
show_blog = true
show_twitter = true
show_created_at = true
show_followers = true
show_following = true
show_public_repos = true
show_public_gists = true
show_hireable = true

[cache]
avatar_ttl_hours = 24
profile_ttl_hours = 1
contributions_ttl_hours = 2
cache_dir = ".cache/ghfetch"

[icons]
ghost = "👻"

[icons.overrides]
# os = "󰻀"
# cpu = "󰻠"
# ram = "󰘚"

Variables de entorno

Variable Proposito
GITHUB_TOKEN Token de acceso personal (5000 req/h)
GHFETCH_USERNAME Usuario por defecto
GHFETCH_CONFIG Ruta al archivo de configuracion
COLORTERM Deteccion de soporte true color
TERM Deteccion de capacidades de terminal

Compatibilidad de terminales

ghfetch detecta automaticamente las capacidades de tu terminal y ajusta el renderizado del avatar:

Terminal Modo Calidad
kitty, alacritty, wezterm True Color (24-bit) Excelente
iTerm2, Terminal.app (macOS) True Color (24-bit) Excelente
Windows Terminal True Color (24-bit) Excelente
xterm-256color 256 colores Buena
Terminales basicas 16 colores Aceptable
Sin soporte de color ASCII puro Funcional

Puedes forzar un modo especifico con las flags --ascii-avatar, --color-256, o --truecolor.


Arquitectura

src/
├── main.rs           # Punto de entrada, CLI, orquestacion
├── theme.rs          # Paleta Gruvbox, utilidades ANSI, iconos
├── config.rs         # Carga de archivo TOML, defaults
├── cache.rs          # Cache en disco con TTL por clave
├── terminal.rs       # Deteccion de capacidades de terminal
├── system.rs         # Informacion del sistema multiplataforma
├── github.rs         # Cliente REST + GraphQL para GitHub
├── avatar.rs         # Descarga, resize y conversion a ASCII (multi-modo)
├── greetings.rs      # Saludo dinamico (desactivado por defecto)
├── contributions.rs  # Renderizado del grafico de contribuciones
└── renderer.rs       # Motor de layout responsive

Dependencias principales

Crate Uso
clap Parseo de argumentos CLI
toml + serde Archivos de configuracion
ureq Cliente HTTP para API de GitHub
image Procesamiento de avatar
sysinfo Informacion del sistema
chrono Fechas y horas
terminal_size Deteccion de tamano de terminal
dirs Directorios XDG

Rendimiento

  • Primera ejecucion: ~800ms (descarga avatar + API)
  • Ejecucion cacheada: ~110ms
  • Binario: ~3.6 MB

Estrategia de cache:

  • Avatar: 24h
  • Perfil: 1h
  • Contribuciones: 2h
  • Directorio: ~/.cache/ghfetch/

Roadmap

  • Temas adicionales (Nord, Catppuccin, Tokyo Night)
  • Modo --watch con actualizacion en vivo
  • Salida JSON para scripting
  • Soporte de imagenes inline (iTerm2/Kitty)
  • Paquetes para AUR, Homebrew, Scoop
  • Estadisticas de lenguajes desde GitHub
  • Deteccion de distribuciones Linux
  • Soporte multi-modo para avatar (truecolor, 256, 16, ASCII)

Contribuir

  1. Hace un fork
  2. Crea una rama (git checkout -b feature/nueva-cosa)
  3. Hace tus cambios
  4. Ejecuta cargo build y cargo clippy
  5. Envia un pull request

Licencia

MIT © Gustavo Jhon

About

No description or website provided.

Topics

Resources

License

Stars

2 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors