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

bash code

About the author

Óscar
has doubledaddy super powers, father of Hugo and Nico, husband of Marta, *nix user, Djangonaut and open source passionate.