Aumentar / Disminuir tamaño de fuente en iTerm2

31

Problema: uso una computadora portátil mientras viajo y me conecto a un monitor externo cuando estoy en la oficina. Dado que el monitor externo es muy grande, necesito aumentar las fuentes en la iTerm2ventana existente (generalmente una) y todas las pestañas.
Solución alternativa: escalo las fuentes de 2 a 4 veces (presionando Cmd-+) para cada pestaña que he abierto en una ventana (generalmente solo una).

Pregunta: ¿Hay alguna manera fácil de automatizar el aumento o la disminución del tamaño de fuente para todas las pestañas de la ventana actual? O si tuviera que crear dos perfiles separados, ¿podría aplicar fácilmente algún perfil a todas las pestañas abiertas actualmente en una ventana?

camioneta
fuente

Respuestas:

25

Hay una manera realmente mala y con errores para automatizar esto, pero lo publicaré de todos modos.

Puede crear un nuevo perfil en las preferencias de iTerm2 (el panel Perfil). Llamémoslo "LargeFont". Puede clonarlo desde el predeterminado presionando ⌘ = .

Establezca el tamaño de fuente que desea que se muestre en el panel de Texto del perfil recién creado.

Ahora aquí está el truco. No puede cambiar ni el tamaño de fuente ni el perfil de las sesiones de terminal usando AppleScript (al menos no he encontrado una manera), pero puede ejecutar comandos en cada sesión usando AppleScript, y hay una secuencia de escape personalizada en iTerm2 que admite el cambio de perfiles para la sesión en la que se echoeditó.

Entonces, puedes ejecutar eso:

echo -e "\033]50;SetProfile=LargeFont\a"

en cada sesión abierta para cambiar el perfil del terminal a "LargeText".

Ahora podemos usar AppleScript para automatizar la ejecución de todas las sesiones abiertas:

tell application "iTerm"
    repeat with theTerminal in terminals
        tell theTerminal
            repeat with theSession in sessions
                tell theSession
                    write text "echo -e '\\033]50;SetProfile=LargeText\\a'"
                end tell
            end repeat
        end tell
    end repeat
end tell

Tenga en cuenta que solo escribe el texto (literalmente) en cada sesión, por lo que si tiene algún editor de texto abierto en una de sus pestañas, no funcionará y pegará el comando echo en su código / archivo de configuración en lugar. Si tiene un comando ping ejecutándose en una de las pestañas, tampoco funcionará.
Debes asegurarte de que no haya material interactivo ejecutándose en ninguno de tus shells.

También te quedarán estos comandos en el historial de tu shell. Puede omitirlo agregando un espacio antes del comando en sí (como echo -e ...), esto funciona al menos en zsh.

Aquí está la función zsh:

function iterm_change_profile() {
    osascript -e "
        tell application \"iTerm\"
            repeat with theTerminal in terminals
                tell theTerminal
                    repeat with theSession in sessions
                        tell theSession
                            write text \" echo -e \\\"\\\\033]50;SetProfile=$1\\\\a\\\"\"
                        end tell
                    end repeat
                end tell
            end repeat
        end tell"
}

Entonces podrías usarlo así:

iterm_change_profile LargeFont

También hay un inconveniente: cuando cambia el perfil del que tiene la fuente más grande al más pequeño, la ventana de iTerm cambia de tamaño significativamente.

Pero, de nuevo, es una manera realmente de mierda.

Igor Hatarista
fuente
Gracias, lo intentaré. Algo similar que me gustaría en iTerm2 sería cambiar también el Color Preset (Solarized-Dark y Solarized-Light dependiendo de la luz circundante). Supongo que también crearé un perfil separado para eso.
van
1
Gracias, @Igor. Funcionó bien, aunque como mencionaste, no es la forma más limpia. Y puede desmarcar la opción para aumentar / disminuir la ventana para cambiar el tamaño cuando el tamaño de fuente cambia en Preferencias generales -> "Ajustar ventana al cambiar el tamaño de fuente".
van
@van Jaja, perdí totalmente esa opción, ¡gracias!
Igor Hatarista
acabo de descubrir otra cosa: si uso TmuxIntegration , cambiar el tamaño de letra funciona en todas las pestañas (ventanas / paneles tmux) Sin embargo, el color sigue siendo solo por panel.
van