Files
conky_widget/app.md
T
Egutierrez e4fdd0199d feat: reloj permanente, pestañas Procesos y Devices, líneas pixel-perfect
- Gráficos de línea pixel-perfect: ANTIALIAS_NONE + ancho 1px + coords
  ancladas al centro del pixel, para trazos nítidos sobre la rejilla.
- Reloj + fecha (formato europeo) en una franja superior común a todas las
  pestañas; la barra de pestañas y el contenido bajan para hacerle sitio.
- Nueva pestaña Procesos: nº de procesos (total + en ejecución), hilos,
  carga 1/5/15 min y tablas TOP CPU / RAM / I/O. Cada fila muestra el PID
  (clicable, abre htop -p) separado del nombre.
- Nueva pestaña Devices: almacenamiento (lsblk sin loops), interfaces de
  red físicas e IP, y dispositivos USB (lsusb).
- Docker con detalle: contador running/total y, por contenedor, nombre +
  imagen + estado abreviado (Up 33h / Up 2d) coloreado según salud.
- Fix: el header de Docker se dibujaba con baseline directa y solapaba la
  barra de pestañas; ahora usa el mismo offset que el resto de paneles.
- metric.sh: helpers nproc_count/running, nthreads, load_avg, top_cpu/ram/io,
  disk_list, usb_list, net_ifaces, docker_list, docker_count.
- Ventana 545 -> 575 px de alto. app.md a v0.2.0.
2026-06-06 13:20:08 +02:00

90 lines
4.0 KiB
Markdown

---
name: conky_widget
lang: lua
domain: infra
version: 0.2.0
description: "Widget de escritorio Conky con 5 pestañas clickeables (Sistema / Red / Docker / Procesos / Devices), reloj permanente, gráficos de línea pixel-perfect y botones que lanzan herramientas de análisis de red."
tags: [conky, widget, desktop, monitoring, network, processes, devices, lua, launcher-buttons]
uses_functions: []
uses_types: []
framework: "conky"
entry_point: "conky.conf"
dir_path: "apps/conky_widget"
repo_url: "https://gitea-dgg044oo04woo4ggcsws4gk0.organic-machine.com/dataforge/conky_widget"
e2e_checks:
- id: lint_install
cmd: "bash -n install.sh"
timeout_s: 10
- id: lint_launch
cmd: "bash -n lua/launch.sh"
timeout_s: 10
- id: lua_parse
cmd: "luac -p lua/widget.lua 2>/dev/null || lua -e \"assert(loadfile('lua/widget.lua'))\""
timeout_s: 10
severity: warning
---
# conky_widget
Visualizador de escritorio basado en Conky (1.19, X11 + Lua + Cairo) que muestra
el estado del PC en vivo en la esquina superior derecha del monitor primario.
El contenido está organizado en tres pestañas clickeables y, en la pestaña de
red, incluye botones que abren herramientas de análisis de paquetes.
Una franja superior con **reloj + fecha** (formato europeo) es común a todas las
pestañas. Los gráficos de línea se dibujan sin antialiasing y con las coordenadas
ancladas al pixel (`pixel-perfect`).
## Pestañas
| Pestaña | Contenido |
|---|---|
| **Sistema** | Gráficos de área en vivo: CPU, RAM, CPU temp, GPU, GPU temp, VRAM, disco I/O y red, más barras de uso de los cuatro discos. Las series se vuelven rojas al superar su umbral. |
| **Red** | Velocidad de bajada/subida de `enp5s0`, gráfico histórico en vivo, paquetes/s por protocolo, top hosts remotos, conexiones establecidas, total descargado/subido, y botones [Wireshark] [ntopng] [nethogs]. |
| **Docker** | Contador `running/total` y, por contenedor, nombre + imagen + estado abreviado (`Up 33h`, `Up 2d`), coloreado según salud. |
| **Procesos** | Nº de procesos (total + en ejecución), hilos, carga 1/5/15 min, y tablas TOP CPU / TOP RAM / TOP I/O. Cada fila muestra el PID (clicable: abre `htop -p <pid>`) y el nombre. |
| **Devices** | Dispositivos de almacenamiento (`lsblk`, sin loops), interfaces de red físicas con su IP, y dispositivos USB (`lsusb`). |
## Cómo funciona
- `conky.conf` posiciona la ventana (`own_window_type = normal` para recibir
clics) y delega todo el dibujo a `lua/widget.lua`.
- `lua/widget.lua` dibuja con Cairo en el hook `conky_draw` y gestiona los clics
en el hook `conky_mouse`: la barra superior cambia de pestaña y los botones de
la pestaña Red lanzan la herramienta correspondiente.
- `lua/launch.sh` comprueba si el binario existe antes de lanzarlo; si falta,
muestra un `notify-send` indicando el paquete a instalar.
## Instalación
```bash
cd apps/conky_widget
./install.sh # symlink en ~/.config/conky + autostart XFCE
conky -c ~/.config/conky/conky_widget/conky.conf & # arrancar ahora
```
Parar: `pkill -f conky_widget/conky.conf`
## Configuración
- **Monitor**: editar `xinerama_head` en `conky.conf` (`0` = HDMI-0 primario,
`1` = DP-1).
- **Interfaz de red**: cambiar `NIF` al inicio de `lua/widget.lua`.
- **Botones**: editar la tabla `BTNS` en `lua/widget.lua` (etiqueta, binario a
comprobar, paquete apt y comando shell).
## Requisitos
- `conky` compilado con Lua bindings + Cairo (verificable con `conky --version`).
- Sesión X11 (en Wayland los clics y `own_window` no funcionan).
- Opcional para los botones: `wireshark`, `ntopng`, `nethogs`. Sin ellos el
widget funciona igual; los botones avisan de cómo instalarlos.
## Notas
- El botón Wireshark abre `/var/log/pktcap/cap.pcapng` (buffer rotativo de 10
min) si existe; en caso contrario abre Wireshark en vivo. Ese buffer lo genera
un servicio `dumpcap` aparte (pendiente de montar).
- El historial del gráfico de red se mantiene en memoria mientras Conky corre;
al reiniciar el widget se empieza de cero.