commit 3186a82e480e8bf74c32e0d6464257e8bb1c8f5b Author: nbaglietto Date: Sat Aug 16 01:39:09 2025 -0300 Primer commit: subida inicial del proyecto diff --git a/README.md b/README.md new file mode 100644 index 0000000..7e68ff6 --- /dev/null +++ b/README.md @@ -0,0 +1,153 @@ +# Gestor de Sesiones TMUX + +![Bash](https://img.shields.io/badge/Shell-Bash-green) +![TMUX](https://img.shields.io/badge/Terminal-TMUX-blue) +![License](https://img.shields.io/badge/License-MIT-lightgrey) + +Script interactivo para gestionar sesiones de **tmux** con opciones predefinidas y personalizadas. + +## 📌 Tabla de Contenidos +- [Características](#-características) +- [Requisitos](#-requisitos) +- [Instalación](#-instalación) +- [Uso](#-uso) +- [Opciones](#-opciones) +- [Ejemplos](#-ejemplos) +- [Capturas](#-capturas) +- [Solución de Problemas](#-solución-de-problemas) +- [Contribuciones](#-contribuciones) +- [Licencia](#-licencia) + +## 🌟 Características +- Menú interactivo fácil de usar. +- Opciones predefinidas (**Gemini Nahuel**, **Nahuel**). +- Opción para nombres personalizados. +- Selección de ruta de trabajo para sesiones específicas. +- Verificación automática de existencia de sesiones. +- Manejo de errores con mensajes claros. + +## 📋 Requisitos +- **Bash** (v4.0+) +- **TMUX** (v3.0+) +- Sistemas basados en Unix (Linux, macOS) + +### Instalación de tmux +```bash +# Debian/Ubuntu +sudo apt install tmux + +# RedHat/CentOS +sudo yum install tmux +``` + +## 🔧 Instalación +1. Descarga el script: +```bash +wget https://ejemplo.com/remoto.sh +``` +2. Hazlo ejecutable: +```bash +chmod +x remoto.sh +``` +3. (Opcional) Mueve a tu PATH: +```bash +sudo mv remoto.sh /usr/local/bin/remoto +``` + +## 🚀 Uso +Ejecutar directamente: +```bash +./remoto.sh +``` +Si lo moviste a tu PATH: +```bash +remoto +``` + +## âš™ï¸ Opciones +El script presenta un menú interactivo con: + +- **Iniciar sesión** + - Gemini Nahuel (con selector de ruta) + - Nahuel + - Personalizado +- **Reanudar sesión** + - Mismas opciones que iniciar +- **Salir** + +## 📖 Ejemplos +Iniciar sesión Gemini Nahuel en una ruta: +``` +> 1 (Iniciar) +> 1 (Gemini Nahuel) +> ~/proyectos +``` + +Reanudar sesión Nahuel: +``` +> 2 (Reanudar) +> 2 (Nahuel) +``` + +### Uso Avanzado +Ejecución con parámetros (modo no interactivo): + +```bash +# Iniciar sesión directamente +./remoto.sh --new Gemini-Nahuel --path ~/docs + +# Reanudar sesión +./remoto.sh --attach Nahuel +``` + +Ver todas las sesiones disponibles: +```bash +tmux ls +``` + +Eliminar una sesión: +```bash +tmux kill-session -t nombre-sesion +``` + +### Atajos útiles en tmux +- `Ctrl+b d` → Desconectar sesión +- `Ctrl+b $` → Renombrar sesión + +📌 Para rutas con espacios, usa comillas: +```bash +"/ruta/con espacios/en/el/nombre" +``` + +📌 Puedes combinar con SSH: +```bash +ssh usuario@servidor -t "remoto" +``` + +## 📸 Capturas +``` +---------------------------------------- + GESTOR DE SESIONES TMUX - BY NAHUEL +---------------------------------------- + +1) Iniciar sesión +2) Reanudar sesión +3) Salir + +Elige una opción (1-3): +``` + +## ðŸ› ï¸ Solución de Problemas + +| Error | Solución | +|------------------------------|----------| +| Permiso denegado | Ejecuta `chmod +x tmux_session_manager.sh` | +| Ruta no existe | Verifica la ruta con `ls` | +| Sesión no existe | Crea una nueva sesión | +| Comando tmux no encontrado | Instala tmux: `sudo apt install tmux` | + +## 🤠Contribuciones +¡Las contribuciones son bienvenidas! Puedes abrir un **issue** o enviar un **pull request**. + +## 📜 Licencia +Este proyecto está bajo la licencia [MIT](LICENSE). diff --git a/remoto.sh b/remoto.sh new file mode 100644 index 0000000..ff646ca --- /dev/null +++ b/remoto.sh @@ -0,0 +1,109 @@ +#!/bin/bash + +# Función para iniciar una nueva sesión de tmux con ruta personalizada +start_session() { + local session_name="$1" + local working_dir="$2" + + # Si se especificó una ruta, usarla; de lo contrario, ir al HOME + if [ -n "$working_dir" ]; then + if [ -d "$working_dir" ]; then + tmux new-session -d -s "$session_name" -c "$working_dir" + echo "✅ Sesión '$session_name' creada en ruta: $working_dir" + else + echo "❌ La ruta '$working_dir' no existe. Usando HOME (~) por defecto." + tmux new-session -d -s "$session_name" + fi + else + tmux new-session -d -s "$session_name" + fi + + tmux attach-session -t "$session_name" +} + +# Función para reanudar una sesión existente +resume_session() { + local session_name="$1" + if tmux has-session -t "$session_name" 2>/dev/null; then + echo "🔵 Reanudando sesión '$session_name'..." + tmux attach-session -t "$session_name" + else + echo "❌ La sesión '$session_name' no existe. ¿Quieres crearla? (s/n)" + read -r response + if [[ "$response" =~ ^[Ss]$ ]]; then + # Solo pregunta por ruta si es Gemini Nahuel + if [ "$session_name" == "Gemini-Nahuel" ]; then + read -p "📁 Ingresa la ruta de trabajo (deja vacío para HOME): " custom_dir + start_session "$session_name" "$custom_dir" + else + start_session "$session_name" + fi + else + echo "Operación cancelada." + exit 1 + fi + fi +} + +# Menú principal +echo "----------------------------------------" +echo " GESTOR DE SESIONES TMUX - BY NAHUEL " +echo "----------------------------------------" +echo "" +echo "1) Iniciar sesión" +echo "2) Reanudar sesión" +echo "3) Salir" +echo "" +read -p "Elige una opción (1-3): " main_choice + +case "$main_choice" in + 1) + echo "" + echo "Opciones de sesión:" + echo "1) Gemini Nahuel" + echo "2) Nahuel" + echo "3) Otro" + echo "" + read -p "Elige un nombre de sesión (1-3): " session_choice + + case "$session_choice" in + 1) + read -p "📁 Ingresa la ruta de trabajo (deja vacío para HOME): " custom_dir + start_session "Gemini-Nahuel" "$custom_dir" + ;; + 2) start_session "Nahuel" ;; + 3) + read -p "Introduce el nombre de la sesión: " custom_name + start_session "$custom_name" + ;; + *) echo "❌ Opción inválida." ;; + esac + ;; + 2) + echo "" + echo "Opciones de sesión:" + echo "1) Gemini Nahuel" + echo "2) Nahuel" + echo "3) Otro" + echo "" + read -p "Elige un nombre de sesión (1-3): " session_choice + + case "$session_choice" in + 1) resume_session "Gemini-Nahuel" ;; + 2) resume_session "Nahuel" ;; + 3) + read -p "Introduce el nombre de la sesión: " custom_name + resume_session "$custom_name" + ;; + *) echo "❌ Opción inválida." ;; + esac + ;; + 3) + echo "👋 ¡Hasta luego!" + exit 0 + ;; + *) + echo "❌ Opción inválida." + exit 1 + ;; +esac