Bash script: iTerm2 schemas
Hasta hace poco tenía un problema de severidad media con iTerm2
: soy muy vago para volver a abrir todos los esquemas que normalmente tengo montados, entre panes, tabs y windows me da mucha pereza tener que cerrar el programa.
Si a eso unimos que últimamente no hay más que actualizaciones cada 2 días, la incomodidad se acentúa. En su día programé un Applescript que, compilado con Automator
, abría iTerm con el esquema deseado, pero todos sabemos que los proyectos no son siempre los mismos y el esquema puede variar de semana en semana. Y hacer cambios en Automator, compilar y volver a ejecutar ese script era otro PITA.
Así que opté por algo más sencillo, un script en bash que puedia lanzar y/o editar según el antojo del momento y que no me haga perder más tiempo que el de tomar un piscolabis:
#!/usr/bin/env bash function new_tab() { osascript <<-EOF tell application "System Events" to keystroke "t" using command down -- new tab EOF } # Local schema ################################################################# function local() { osascript <<-EOF tell application "iTerm" activate tell the current terminal activate current session tell the last session to write text "ssh myserver" tell i term application "System Events" to keystroke "d" using command down -- split ver tell the last session to write text "cd ~/Webs/Python/MyProject" tell i term application "System Events" to keystroke "D" using command down -- split hor tell the last session to write text "cd cd ~/Webs/Python/MyProject; . env/bin/activate ; cd src ; ./manage.py runserver --settings=project.settings.devel" end tell end tell EOF } # Fabric schema ################################################################ function fab() { osascript <<-EOF tell application "iTerm" activate tell the current terminal activate current session tell the last session to write text "cd ~/Webs/Fabric/ ; . env/bin/activate" tell i term application "System Events" to keystroke "D" using command down -- split hor tell the last session to write text "cd ~" end tell end tell EOF } # Main stream ################################################################## case "$1" in 'local') local ;; 'fab') fab ;; *) echo "Use - $0 local|fab" exit 0 ;; esac
La base del script le dice a iTerm en cada función lo que tiene que hacer, en el primer caso conecta por ssh a un servidor, abre un pane nuevo haciendo split vertical, se coloca en un directorio concreto, abre otro pane horizontalmente y ejecuta elrunserver oportuno, adecuando el proyecto para poder empezar a trabajar. En el segundo caso dividimos la pantalla en dos panes, en uno activamos el entorno de Fabric y en el otro nos colocamos en nuestro directorio para poder empezar a trabajar.
Como se puede comprobar son ejemplos sencillos de ejecutar (./schema.sh local
), sencillos de editar y ajustar a las necesidades, y sencillos de extrapolar a vuestras necesidades. ¡Viva el BASH!.
- yo tmux + tmuxinator