Primer commit: subida inicial del proyecto

This commit is contained in:
2025-08-16 01:39:09 -03:00
commit 3186a82e48
2 changed files with 262 additions and 0 deletions

153
README.md Normal file
View File

@ -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).

109
remoto.sh Normal file
View File

@ -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