43 votes

Augmenter/Réduire la taille de la police dans iTerm2

Problème: Je utilise un ordinateur portable en déplacement et me connecte à un moniteur externe lorsque je suis au bureau. Étant donné que le moniteur externe est très grand, je dois augmenter la taille des polices dans la fenêtre iTerm2 existante (généralement une) et tous les onglets.
Contournement: Je fais monter les polices de 2 à 4 fois (en appuyant sur Cmd-+) pour chaque onglet ouvert dans une fenêtre (généralement juste un).

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

38voto

Bezerker Points 11

Il existe une manière vraiment merdique et boguée d'automatiser cela, mais je vais quand même la poster.

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

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

Maintenant voici le truc. Vous ne pouvez pas changer ni la taille de police ni le profil des sessions du 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, et il existe une séquence d'échappement personnalisée dans iTerm2 qui prend en charge le changement de profil pour la session dans laquelle elle a été echo'ée.

Ainsi, vous pouvez exécuter ceci :

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

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

À présent, nous pouvons utiliser AppleScript pour automatiser l'exécution pour 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 que cela écrit simplement le texte (au sens littéral) dans chaque session, donc si vous avez un éditeur de texte ouvert dans l'un de vos onglets, cela ne fonctionnera pas et collera la commande echo dans votre fichier de code/configuration. Si vous avez une commande ping en cours d'exécution dans l'un des onglets, cela ne fonctionnera pas non plus.
Assurez-vous qu'aucune activité interactive ne s'exécute dans l'un de vos shells.

Vous aurez également ces commandes restées dans l'historique de votre shell. Vous pourriez contourner cela 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 pourriez l'utiliser de cette façon :

iterm_change_profile LargeFont

Il y a aussi un inconvénient - lorsque vous passez du profil avec une plus grande police à celui avec une plus petite, la fenêtre de iTerm se redimensionne considérablement.

Mais, encore une fois, c'est une manière vraiment merdique.

15voto

François Cassin Points 704

Dans l'iTerm2 actuel (version 3.3.7), il y a Vue > Changer la taille de police et mettre à jour le profil qui résout le problème :

Pour changer la taille de la police indépendamment du profil, consultez ce problème iTerm2 où un script est fourni.

0voto

Jack Ben Points 920

J'ai dû modifier un peu la solution d'Igor; je ne sais pas pourquoi. Voici ce qui a fonctionné pour moi:

function iterm_change_profile() {
    osascript -e "
        tell application \"iTerm2\"
          tell current window
            repeat with aTab in tabs
                tell aTab
                    repeat with theSession in sessions
                        tell theSession
                            write text \" echo -e \\\"\\033]50;SetProfile=$1\\a\\\"\"
                        end tell
                    end repeat

      end tell"
}

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X