Augmenter / Diminuer la taille de la police dans iTerm2

31

Problème: j'utilise un ordinateur portable en déplacement et je me connecte à un moniteur externe au bureau. Étant donné que le moniteur externe est très grand, j'ai besoin d'augmenter les polices dans la iTerm2fenêtre existante (généralement une) et tous les onglets.
Solution: j'élargis les polices de 2 à 4 fois (en appuyant sur Cmd-+) pour chaque onglet que j'ai ouvert dans une fenêtre (généralement une seule).

Question: Existe - t-il un moyen simple d'automatiser l' augmentation / la diminution de la taille de police pour tous les onglets de la fenêtre actuelle? Ou si je devais créer deux profils distincts, pourrais-je facilement appliquer un profil à tous les onglets actuellement ouverts dans une fenêtre?

van
la source

Réponses:

25

Il existe un moyen vraiment merdique et buggé d'automatiser cela, mais je le publierai quand même.

Vous pouvez créer un nouveau profil dans les préférences de l'iTerm2 (le volet Profil). Appelons-le "LargeFont". Vous pouvez le cloner à partir de celui par défaut en appuyant sur ⌘ = .

Définissez la taille de police à afficher dans le volet Texte du profil nouvellement créé.

Voici maintenant l'astuce. Vous ne pouvez pas modifier la taille de la police ou le profil des sessions de terminal à l'aide d'AppleScript (au moins, je n'ai pas trouvé de moyen), mais vous pouvez exécuter des commandes dans chaque session à l'aide d'AppleScript, et il existe une séquence d'échappement personnalisée dans iTerm2 qui prend en charge la modification des profils pour la session dans laquelle il a été echoédité.

Vous pouvez donc exécuter cela:

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

dans chaque session ouverte pour changer le profil du terminal en "LargeText".

Nous pouvons maintenant utiliser AppleScript pour automatiser l'exécution de toutes les sessions ouvertes:

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

Veuillez noter qu'il écrit simplement le texte (littéralement) dans chaque session, donc si vous avez un éditeur de texte ouvert dans l'un de vos onglets - il ne fonctionnera pas dedans et collera la commande echo dans votre code / fichier de configuration au lieu. Si une commande ping est exécutée dans l'un des onglets, elle ne fonctionnera pas non plus.
Vous devez vous assurer qu'aucun élément interactif ne s'exécute dans aucun de vos shells.

Vous aurez également ces commandes dans l'historique de votre shell. Vous pouvez le contourner en ajoutant un espace avant la commande elle-même (comme echo -e ...), cela fonctionne au moins dans zsh.

Voici la fonction 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"
}

Vous pouvez donc l'utiliser comme ça:

iterm_change_profile LargeFont

Il y a aussi un inconvénient - lorsque vous changez le profil de celui avec la police la plus grande en la plus petite, la fenêtre de l'iTerm se redimensionne considérablement.

Mais, encore une fois, c'est une façon vraiment merdique.

Igor Hatarist
la source
Merci, je vais essayer. Une chose similaire que j'aimerais dans iTerm2 serait de changer également le préréglage de couleur (Solarized-Dark et Solarized-Light en fonction de la lumière environnante). Je suppose que je vais également créer un profil distinct pour cela.
van
1
Merci, @Igor. Cela a bien fonctionné, même si, comme vous l'avez mentionné, ce n'est pas le moyen le plus propre. Et vous pouvez décocher l'option pour augmenter / diminuer la fenêtre à redimensionner lorsque la taille de police change dans les Préférences générales -> "Ajuster la fenêtre lors du changement de taille de police".
van
@van Haha, j'ai totalement raté cette option, merci!
Igor Hatarist
vient de découvrir une autre chose: si j'utilise TmuxIntegration , la modification de la taille de la police fonctionne sur tous les onglets (fenêtres / volets tmux). La couleur est toujours juste par volet cependant.
van