[Tips] Zoomer et dé-zoomer dans urxvt

Un billet court pour expliquer rapidement comment zoomer et dézoomer dans un terminal urxvt (rxvt-unicode).

L'objectif est le même que ctrl+/- dans un navigateur : modifier la taille des caractères dynamiquement.

Le code de base est le suivant :

printf '\33]50;%s\007' "xft:Terminus:pixelsize=XX"

Note : XX correspondant à la taille en pixels de la font (Terminus dans mon cas).

On va donc faire une première fonction qui va lancer cette commande à la volée. De mon coté j'utilise ZSH mais si vous préférez Bash ça sera sensiblement la même chose.

zoom() {
	printf '\33]50;%s\007' "xft:Terminus:pixelsize=$1"
}

Après avec recharger la conf de votre interpréteur de commande, vous pourrez la tester comme ça :

$ zoom 15
$ zoom 20

On va maintenant ajouter deux autres fonctions qui vont augmenter et diminuer progressivement la taille (à la manière d'un navigateur).

URXVT_SIZE=20
URXVT_PROGRESS_SIZE=5

zp() {
	URXVT_SIZE=$(echo "$URXVT_SIZE+$URXVT_PROGRESS_SIZE" | bc )
	zoom $URXVT_SIZE
}

zm() {
	URXVT_SIZE=$(echo "$URXVT_SIZE-$URXVT_PROGRESS_SIZE" | bc )
	zoom $URXVT_SIZE
}

Après rechargement de la conf, vous zoomerez avec la commande "zp" (zoom plus) et dé-zoomerez avec "zm" (zoom moins).

Pratique non ?

Simon Vieille

Sharepoint Office365 sur Linux : automatiser l'authentification (v2)

Sharepoint Office365 sur Linux : automatiser l'authentification (v2)

En septembre 2018, je publiais un article pour automatiser l'authentification sur Sharepoint…

Sharepoint Office365 sur Linux : automatiser l'authentification

Sharepoint Office365 sur Linux : automatiser l'authentification

Suite de l'aventure avec Sharepoint ! On a pu passer 2 étapes cruciales pour jouer avec Sha…

Sharepoint Office365 sur Linux (Webdav/Davfs) avec des fichiers accentués

Sharepoint Office365 sur Linux (Webdav/Davfs) avec des fichiers accentués

Suite de l'aventure avec Sharepoint ! Je me suis rendu compte que les répertoires et les fi…


  • Ulhume
  • Tu peux aussi faire mieux, et l'embarquer dans un plugin pour urxvt. C'est plutôt simple comme plugin :
    ----
    #!/usr/bin/perl

    sub on_user_command {
    my($term, $command) = @_;
    my $increment;
    if ($command eq "font-increase") {
    $increment = 1 ;
    } elsif ($command eq "font-decrease") {
    $increment = -1;
    } elsif ($command eq "font-reset") {
    $increment = 0;
    } else {
    return;
    }
    my $font = $term->resource('font');
    if ($font =~ /size\=(\d+)/) {
    my $original=$1;
    my $new=$original+$increment;
    if ($new<6) { $new = 6; }
    $font =~ s/size\=$original/size\=$new/;
    $term->cmd_parse( "\033]710;$font\007");
    }
    }
    -------------------
    Cela t'ajoute deux command font-increase, font-decrease et font-reset que tu peux mapper sur un alt-+/atl-- :
    URxvt.keysym.M-plus: perl:font-increase
    URxvt.keysym.M-minus: perl:font-decrease
    URxvt.keysym.M-equal: perl:font-reset

    Mon implémentation n'est pas nickelle, mais elle fait le job. Au passage, il est possible de définir des tonnes de choses par ce type de séquence dite "OSC" comme la palette, le curseur, etc, etc. Si cela t'intéresse j'ai écrit quelques papier sur mon site là dessus.
  • Hylobates
  • Bien pratique ce petit script pour URxvt, mais malheureusement le font-reset ne fait pas grand chose :)

    À part relire le fichier .Xdefaults pour trouver la taille par défaut, je ne vois pas trop ce qu'on pourrait faire pour reset (et il resterait le souci du « le mec a rien mis dans le .Xdefaults» ).
  • Ulhume
  • @Hylobates Mouais ok, j'avoue, j'ai jamais fini de le coder en fait, reste juste l'intention ;-) Pour prouver que je ne suis pas qu'un feignant, j'ai bricolé la version complète :
    #!/usr/bin/perl
    my %original_size = ();

    sub on_start {
    my($term) = @_;
    if ($term->resource('font') =~ /size\=(\d+)/) {
    $original_size{$term->vt} = $1;
    }
    }

    sub on_user_command {
    my($term, $command) = @_;

    my $font = $term->resource('font');
    if ($font =~ /size\=(\d+)/) {
    my $new_size = my $current_size = $1;
    if ($command eq "font-increase") {
    $new_size++;
    } elsif ($command eq "font-decrease") {
    $new_size--;
    } elsif ($command eq "font-reset") {
    $new_size=$original_size{$term->vt};
    } else {
    return;
    }
    if ($new_size<6) {
    $new_size = 6;
    }
    $font =~ s/size\=$current_size/size\=$new_size/;
    $term->cmd_parse( "\033]710;$font\007");
    }
    }
  • Simon
  • http://wall.deblan.fr *

    J'ai parcouru le site après ton premier commentaire et il y a une mine d'informations intéressante :) Tu n'aurais pas un flux RSS d'ailleurs ? J'aimerais pouvoir suivre un peu son actualité via mon butineur de flux ^^
  • Ulhume
  • Cooaaaaa ? Tu n'utilises pas Pentadactyl ??? ;-) :pageinfo et tu aurais vu que l'url des feeds c'est : http://artisan.karma-lab.net/rss.xml

    En fait, le site a été construit à une époque où les navigateurs avaient le bon goût d'afficher une icône RSS lorsqu'un flux était renseigné dans le markup... Faudrait que je me décide à coller une icône comme on fait aujourd'hui (pas l'impression que ça régresse tout ça, non, pas du tout...)

    Sinon merci (pour la mine d'info :) J'ai commençé ce site je ne veux pas dire quant, en gros lorsque je suis passé de Windows à Linux, que je notais tout dans des fichiers textes, et qu'un pote a fini par me dire "t'es con, fou ça sur un site, ça peut servir " :) Du coup y'a un peu à boire et à manger :)
  • Simon
  • J'ai utilisé un temps Pentadactyl mais il m'a viré des raccourcis type ^L, ^K, ^T donc ça m'a plus dérangé qu'autre chose =/ Cependant, si je n'avais pas eu ça, je l'aurais gardé, d'autant plus qu'il est pour moi le plus abouti des outils du genre.
  • Ulhume
  • De loin oui, je ne saurais même plus m'en passer. Au passage tu peux redéfinir tes propres mapping et ainsi récupérer ce quui t'a été volé.

Ajouter un commentaire

Votre commentaire - Vous pouvez utiliser du markdown

Renouveler