agosto 2008 Archives

mar, 2008-08-05 11:49:54 -0500

Modificacion de rxvt-unicode con tabs

rxvt-unicode es un emulador de terminal muy bonito, lo que le hacía falta era que pudiera tener tabs, buscando un poco en google se encuentra que colocando urxvt -pe tabbed se puede tener tabs los shorcuts son con Shift y las flechas:

Nuevo Tab                               Shift + Flecha Abajo
Mover a la tab del lado derecho         Shift + Flecha Derecha
Mover a la tab del lado izquierdo       Shift + Flecha Izquierda

al probarlo se tiene problemas con las tildes y las ñ este problema se soluciona cambiando el archivo /usr/lib/urxvt/perl/tabbed en la función tab_key_press, cambiaremos los shortcuts parecidos a los de firefox o a los de gnome terminal.

Se cambia:
urxvt::ShiftMask   >   urxvt::ControlMask
0xff51             >   0xff55
0xff53             >   0xff56
0xff54             >   0x74

Con estola función queda de la siguiente manera

sub tab_key_press {
   my ($self, $tab, $event, $keysym, $str) = @_;

   if ($event->{state} & urxvt::ControlMask) {
      if ($keysym == 0xff55 || $keysym == 0xff56) {
         my ($idx) = grep $self->{tabs}[$_] == $tab, 0 .. $#{ $self->{tabs} };

         --$idx if $keysym == 0xff55;
         ++$idx if $keysym == 0xff56;

         $self->make_current ($self->{tabs}[$idx % @{ $self->{tabs}}]);

         return 1;
      } elsif ($keysym == 0x74) {
         $self->new_tab;

         return 1;
      }
   }
   elsif ($event->{state} & urxvt::ControlMask) {
      if ($keysym == 0xff55 || $keysym == 0xff56) {
         my ($idx1) = grep $self->{tabs}[$_] == $tab, 0 .. $#{ $self->{tabs} };
         my  $idx2  = ($idx1 + ($keysym == 0xff55 ? -1 : +1)) % @{ $self->{tabs} };

         ($self->{tabs}[$idx1], $self->{tabs}[$idx2]) =
            ($self->{tabs}[$idx2], $self->{tabs}[$idx1]);

         $self->make_current ($self->{tabs}[$idx2]);

         return 1;
      }
   }

   ()
}