quoteszsh es una utilidad en C++ que te da la bienvenida a tu terminal con un diseño ASCII aleatorio y una frase generada por IA, con múltiples niveles de fallback para asegurar que siempre tengas un mensaje.
- Frases generadas por IA a través de OpenRouter (API externa) o Ollama (localmente).
- Múltiples diseños ASCII seleccionados al azar.
- Prompts variados para diferentes tipos de frases (motivacionales, sobre Linux, programación, etc.).
- Sistema de fallback inteligente:
- Intenta OpenRouter.
- Si falla, intenta Ollama local.
- Si ambos fallan, muestra una frase predefinida con
cowsay(si está instalado). - Si
cowsayfalla, muestra una frase predefinida simple.
- Integración sencilla con
.zshrc(u otros archivos de inicio de shell).
Estas son las herramientas y librerías necesarias para compilar quoteszsh tú mismo:
-
Compilador de C++ Moderno:
- Se requiere un compilador que soporte C++17 o superior (el código usa características de C++17).
- Ejemplos:
- GCC (g++): Versión 7 o superior.
- Clang: Versión 5 o superior.
- Instalación (Debian/Ubuntu):
sudo apt install build-essential g++
-
CMake:
- Sistema de gestión de la compilación. Versión 3.15 o superior recomendada.
- Instalación (Debian/Ubuntu):
sudo apt install cmake
-
Git:
- Necesario para que CMake (
FetchContent) descargue las dependencias (libreríascpp-httplibynlohmann/json). - Instalación (Debian/Ubuntu):
sudo apt install git
- Necesario para que CMake (
-
Librerías de Desarrollo de OpenSSL (para soporte HTTPS):
cpp-httplibnecesita OpenSSL para realizar peticiones HTTPS a OpenRouter.- Instalación (Debian/Ubuntu):
sudo apt install libssl-dev - Instalación (Fedora/RHEL):
sudo dnf install openssl-devel
-
pkg-config (opcional pero recomendado):
- Ayuda a CMake a encontrar librerías como OpenSSL.
- Instalación (Debian/Ubuntu):
sudo apt install pkg-config
(Las librerías cpp-httplib y nlohmann/json se descargan automáticamente por CMake durante el proceso de compilación, por lo que no necesitan instalación manual previa).
-
Ejecutable
quoteszshCompilado:- Deberás haber compilado el programa o descargado un binario precompilado (si lo proporcionas).
-
(Opcional, para Fallback a OpenRouter) API Key de OpenRouter:
- Si quieres usar OpenRouter como fuente primaria de frases, necesitas una API Key de OpenRouter.ai.
- Esta clave debe configurarse como una variable de entorno:
export OPENROUTER_API_KEY="tu_clave_aqui"(generalmente en tu~/.zshrco~/.bashrc).
-
(Opcional, para Fallback a Ollama Local) Ollama y un Modelo Descargado:
- Si quieres usar Ollama local como fallback (o como fuente primaria si modificas el código):
- Instalar Ollama: Sigue las instrucciones en ollama.ai.
- Descargar un Modelo: Necesitas tener al menos un modelo de lenguaje descargado. El programa intentará usar el modelo especificado en el código (actualmente configurado para
qwen3-4b-abliterated-nothink:latestcomo fallback, pero puedes cambiarlo en el código fuente o pasarlo como argumento si modificas la funciónmain).- Ejemplo para descargar un modelo:
ollama pull qwen:latest(oollama pull mistral:latest,ollama pull llama3:latest, etc.)
- Ejemplo para descargar un modelo:
- Ollama Corriendo: El servicio de Ollama debe estar ejecutándose en
http://localhost:11434(configuración por defecto).
- Si quieres usar Ollama local como fallback (o como fuente primaria si modificas el código):
-
(Opcional, para Fallback a Cowsay)
cowsayInstalado:- Si tanto OpenRouter como Ollama fallan, el programa intentará usar
cowsaycon una frase predefinida. - Instalación (Debian/Ubuntu):
sudo apt install cowsay - Puedes personalizar el personaje de
cowsay(ej.-f tux) en el código si lo deseas.
- Si tanto OpenRouter como Ollama fallan, el programa intentará usar
-
Shell Compatible (Zsh recomendado):
- Las instrucciones de integración están optimizadas para Zsh (
.zshrc), pero el ejecutable en sí debería funcionar en cualquier terminal Linux. La integración con otros shells (.bashrc,.fishrc) requeriría ajustes menores en el archivo de inicio del shell.
- Las instrucciones de integración están optimizadas para Zsh (
- Clona este repositorio:
git clone https://github.com/tu_usuario/quoteszsh.git cd quoteszsh - Crea un directorio de compilación y entra en él:
mkdir build cd build - Ejecuta CMake para configurar el proyecto (desde el directorio
build):(Esto configurará un build de tipo Debug por defecto. Para un build de Release, usacmake ..
cmake -DCMAKE_BUILD_TYPE=Release ..) - Compila el proyecto:
El ejecutable
make -j$(nproc) # o simplemente 'make'
quoteszshse encontrará en el directoriobuild.
Una vez compilado, copia el ejecutable a un directorio en tu PATH. Se recomienda ~/.local/bin/:
mkdir -p ~/.local/bin
cp build/quoteszsh ~/.local/bin/Asegúrate de que ~/.local/bin esté en tu PATH.
Añade lo siguiente a tu archivo ~/.zshrc:
# ~/.zshrc
# Asegurar que ~/.local/bin esté en el PATH (si lo usas)
if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
export PATH="$HOME/.local/bin:$PATH"
fi
# (OPCIONAL) Exportar tu API Key de OpenRouter
export OPENROUTER_API_KEY="tu_api_key_de_openrouter_aqui"
# Ejecutar quoteszsh al iniciar la terminal
if command -v quoteszsh &> /dev/null; then
echo
quoteszsh
# echo # Línea en blanco opcional después
fi
# (OPCIONAL) Si quieres el mensaje de bienvenida adicional debajo:
# function show_extra_welcome_info() {
# function show_extra_welcome_info() { } # Para que solo se ejecute una vez
# local welcome_line="¡Bienvenido, $USER, a tu terminal Debian!"
# # ... (resto de tu mensaje de bienvenida adicional) ...
# echo "$welcome_line" # etc.
# }
# autoload -Uz add-zsh-hook
# add-zsh-hook precmd show_extra_welcome_infoRecarga tu configuración de shell (source ~/.zshrc) o abre una nueva terminal.
- Errores de CMake o Compilación: Asegúrate de tener todas las "Requisitos de Compilación" instaladas.
- "Error_API_KEY": Verifica que la variable de entorno
OPENROUTER_API_KEYesté correctamente exportada y que la clave sea válida. - "Error_OLLAMA_CONNECTION": Asegúrate de que el servicio de Ollama esté corriendo (
systemctl status ollamao similar) y que el modelo especificado esté descargado (ollama list). - Faltan diseños ASCII / Placeholder no encontrado: Verifica la variable
asciiArtsy el stringplaceholderenmain.cpp.