web-dev-qa-db-fra.com

Augmenter / diminuer la taille de la police dans iTerm2

Problème: J'utilise un ordinateur portable lors de mes déplacements et je me connecte à un moniteur externe lorsque je suis au bureau. Étant donné que le moniteur externe est très volumineux, je dois augmenter les polices dans la fenêtre iTerm2 existante (généralement une) et dans tous les onglets.
Solution de contournement: J'échelle les polices 2 à 4 fois (en appuyant sur Cmd-+) pour chaque onglet ouvert dans une fenêtre (généralement juste un).

Question: Existe-t-il un moyen simple d'automatiser l'augmentation/la diminution de la taille de la police de 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 d'une fenêtre?

28
van

Il y a un moyen vraiment merdique et buggy d'automatiser cela, mais je le posterai quand même.

Vous pouvez créer un nouveau profil dans les préférences de l'iTerm2 (volet Profils). Appelons cela "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éé.

Maintenant, voici le truc. Vous ne pouvez pas modifier la taille de la police ni le profil des sessions de terminal à l'aide d'AppleScript (du moins, je n'ai pas trouvé de moyen), mais vous pouvez exécuter des commandes dans chaque session à l'aide d'AppleScript. 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 était echo 'ed.

Donc, vous pouvez exécuter cela:

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

dans chaque session ouverte pour changer le profil du terminal à "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. Ainsi, si un éditeur de texte est ouvert dans l'un de vos onglets, cela ne fonctionnera pas et collera la commande echo dans votre fichier de code/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'il n'y a pas de contenu interactif 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 en 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"
}

Donc, vous pouvez l'utiliser comme ça:

iterm_change_profile LargeFont

Il y a aussi un inconvénient: lorsque vous modifiez le profil de celui avec la police la plus grande vers la plus petite, la fenêtre de l'iTerm se redimensionne de manière significative.

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

23
Igor Hatarist