Un presentador de diapositivas minimalista y de alto rendimiento escrito en C utilizando Cairo y Pango. Renderiza archivos Markdown directamente en pantalla con transiciones suaves, temas visuales y exportación a PNG/PDF/SVG/GIF/JPG.
| Dark (Default) | Monokai |
|---|---|
![]() |
![]() |
| Nord | Rose |
|---|---|
![]() |
![]() |
| Light | Ambercat |
|---|---|
![]() |
![]() |
| Blue | Catppuccin |
|---|---|
![]() |
![]() |
| Dracula | Gruvbox |
|---|---|
![]() |
![]() |
| Tokyo Night | |
|---|---|
![]() |
- Títulos (
#a######) con tamaños decrecientes - Párrafos con word-wrapping automático
- Listas con viñetas (anidadas nivel 1 y 2)
- Listas numeradas (
1.,a),i), etc.) - Listas de tareas (
- [ ]/- [x]) - Blockquotes con barra lateral
- Imágenes PNG/JPG/GIF/BMP (auto-escalado, caché de 64 slots)
- Tablas con ancho proporcional, wrapping, filas alternadas y cabecera
- Bloques de código (fenced) con resaltado de sintaxis
- Códulo inline (
código) - Énfasis: bold, italic, combinado
fade— Fundido cruzadoslide-left— Entrada desde la derechaslide-right— Entrada desde la izquierdaslide-up— Entrada desde abajoslide-down— Entrada desde arribanone— Corte instantáneo- Duración: 300ms con easing smoothstep
- Configurables por slide via
<!-- transition: tipo -->
| Tema | Descripción |
|---|---|
dark |
Fondo oscuro, texto blanco, acentos neutros |
rose |
Vino oscuro, acentos rosados |
monokai |
Vibrante, títulos rosados, viñetas verdes |
nord |
Azul-gris ártico, azules y verdes suaves |
light |
Fondo blanco, texto oscuro, acentos azules |
blue |
Pizarra azul profunda, acentos cielo |
ambercat |
Ámbar/marrón técnico |
dracula |
Púrpura/rosa/cian vibrante |
gruvbox |
Tono tierra retro |
catppuccin |
Pastel suave (mocha) |
tokyo-night |
Ciberpunk azul/rosa/cian |
Configuración incrustada al inicio del archivo:
---
theme: dracula
font: JetBrains Mono
scale: 1.2
colors:
bg: "#0f0f23"
title: "#ff6b6b"
sub: "#a9b1d6"
body: "#c0caf5"
bullet: "#7dcfff"
accent: "#7aa2f7"
num: "#565f89"
table-hdr: "#1a1b26"
table-row: "#24283b"
table-alt: "#1f2335"
table-bdr: "#3b4261"
code-bg: "#1a1b26"
code-txt: "#c0caf5"
code-kw: "#bb9af7"
code-com: "#565f89"
code-str: "#9ece6a"
code-sym: "#f7768e"
---<!-- notes: texto -->en una línea<!-- notes:...-->multilinea- Se imprimen automáticamente al navegar
- Detecta cambios en el archivo
.mdcada 500ms - Recarga automática preservando tema, fuente y escala
- Notificación en consola
--export png— Exporta diapositivas a PNG (una por slide)--export pdf— Exporta todas las slides a un solo PDF--export svg— Exporta diapositivas a SVG (vectorial, una por slide)--export gif— Exporta todas las slides como GIF animado--export jpg/--export jpeg— Exporta diapositivas a JPEG (una por slide, calidad 90)--export-res WxH— Resolución personalizada (defecto: 1080x1080)--slide N— Seleccionar diapositiva específica (0-index, para png/svg/jpg)
- Win32 (Windows nativo) — GDI double-buffer, timer 60fps
- X11 (Linux/BSD) — Doble buffer, framerate adaptativo
- Teclado, ratón, pantalla completa en ambos
sudo apt install libcairo2-dev libpango1.0-dev libx11-devInstala las dependencias desde la terminal MSYS2 (no PowerShell):
pacman -S mingw-w64-x86_64-cairo mingw-w64-x86_64-pango \
mingw-w64-x86_64-gcc make
makeEsto produce:
slides/slides.exe— Presentador interactivolibslider.so/slider.dll— Librería compartida (para Python ctypes)
En Windows, el Makefile auto-detecta MSYS2 (C:/msys64/mingw64, C:/msys2/mingw64).
Si usas Cygwin GCC, el Makefile muestra una advertencia.
./slides [opciones] presentacion.mdEn Linux, la documentación completa está disponible vía man:
man slides| Flag | Descripción |
|---|---|
-p, --palette <nombre> |
Elegir tema (dark, rose, monokai, nord, light, ...) |
-f, --font-family <str> |
Tipografía (ej. 'Arial', 'JetBrains Mono') |
-s, --font-scale <num> |
Factor de escala (ej. 1.2) |
-e, --export <tipo> |
Exportar a 'pdf', 'png', 'svg', 'gif' o 'jpg' |
-er, --export-res <WxH> |
Resolución de exportación (ej. 1920x1080) |
-sl, --slide <num> |
Slide específico para exportar (0-index, para png/svg/jpg) |
--kiosk <sec> |
Avance automático cada N segundos (bucle infinito) |
--auto-advance <sec> |
Igual que --kiosk |
--bg, --title, --sub, … |
17 colores vía CLI (ver docs/colors.md) |
-v, --version |
Versión |
-h, --help |
Ayuda |
Los argumentos CLI sobrescriben la configuración de frontmatter. La lista completa
de colores y su uso en frontmatter está en docs/colors.md.
| Tecla | Acción |
|---|---|
→ Enter Space PageDown |
Siguiente diapositiva |
← Backspace PageUp |
Diapositiva anterior |
Home |
Primera diapositiva |
End |
Última diapositiva |
F F11 |
Pantalla completa (toggle) |
Ctrl++ |
Acercar (zoom in) |
Ctrl+- |
Alejar (zoom out) |
Ctrl+0 |
Restablecer zoom |
Tab |
Vista general (mini-mapa de todas las slides) |
→ ← ↑ ↓ Enter |
Navegar y seleccionar en vista general |
Esc |
Salir / Cerrar vista general |
N |
Mostrar/ocultar número de slide y barra de progreso |
Q |
Salir |
Ratón: clic izquierdo/rueda-arriba = anterior, clic derecho/rueda-abajo = siguiente.
--kiosk N avanza automáticamente a la siguiente diapositiva cada N segundos. Al llegar a la última, vuelve a la primera en bucle infinito. Ideal para vitrinas, displays públicos o ferias. La navegación manual resetea el contador.
./slides --kiosk 5 presentacion.md
./slides --auto-advance 10 presentacion.mdLa directiva <!-- img: clave=valor, ... --> permite controlar fit, tamaño,
opacidad, bordes redondeados, rotación y alineación de imágenes:
<!-- img: fit=cover, opacity=0.5 -->
Ver la especificación completa en docs/images.md.
./slides examples/features.md
./slides examples/transitions.md
./slides examples/custom_colors.md
./slides --palette dracula examples/frontmatter.md
./slides examples/img_config.md
./slides --export pdf --export-res 1920x1080 presentacion.md
./slides --export gif presentacion.md
./slides --export jpg --export-res 1920x1080 presentacion.md
./slides --export svg --slide 0 presentacion.md
./slides -e png -sl 2 presentacion.md # exporta solo slide 3 como PNGslider.h API pública
src/
core/
parser.c Parser Markdown + frontmatter + transiciones
themes.c 11 temas visuales
highlighter.c Resaltado de sintaxis genérico
internal.h Estructuras internas (Slide, Slider, Theme)
render/
renderer.c Motor Cairo/Pango (solo slider_render)
render_util.c Utilidades de render + caché de imágenes
render_table.c Dibujado de tablas
render_code.c Bloques de código con syntax highlighting
render_transition.c Transiciones entre diapositivas
export_png.c Exportación a PNG
export_jpg.c Exportación a JPG
export_pdf.c Exportación a PDF
export_gif.c Exportación a GIF animado
export_svg.c Exportación a SVG
ui/
backend_win32.c Ventana Win32 (nativa)
backend_x11.c Ventana X11
help.c Ayuda (--help / --version)
help.h
main.c CLI + punto de entrada
make testEjecuta 668 tests unitarios y de integración (Python + ctypes sobre slider.dll / libslider.so).










