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!.