Declarações de função não funcionam em todos os shells, então outra abordagem é declarar um apelido assim:
alias cd 'cd \!*; echo -en "3]0;'pwd'\a"'
Este comando em particular faz com que o título mude para qualquer que seja o pwd.
Claro que você vai querer inicializar o título quando você iniciar o terminal, então não esqueça de incluir o título do gnome-terminal.
Eu uso um script perl para me ajudar a determinar primeiro todos os valores dos argumentos e, em seguida, invoca um novo terminal assim:
my $cmd = "gnome-terminal $window_with_profile $geometry $zoom $working_directory $temp_argv $title &";
system($cmd);
Mas como você deseja inicializar esses valores é com você ...
Você é bem-vindo para usar o seguinte código e ajustá-lo para seu uso pessoal, se quiser:
#!/usr/bin/perl
#use strict;
use Getopt::Long;
my $progName = "term.pl";
=pod
=head1 OBJECTIVE: open a gnome-terminal with a given path and a new background color
#1# In order to use this script you first need to set up 10 different terminal profiles each named "theme1" - "theme10"
Edit... profiles... new... theme1
Each theme should use a different color scheme...
The themes are later called with --window-with-profile=theme$int
This script then selects the next one one to open based on the number saved in the ~/.term_theme_counter file.
### The argument "." opens the terminal with the same dir as you are currently in.
Without it, the terminal opens to "~". Use --working-directory=<DIR> for others.
Also, -dir=<DIR> has been added for convenience
### You can still pass additional gnome-terminal arguments like: --tab_with_profile etc into the command
### Also see gnome-terminal --help
and gconf-editor and gconftool-2 --> /apps/gnome-terminal/profiles/
for editing terminal props
EXAMPLES:
term.pl .
term.pl /cadtools/tech/
Credits: This script was written by Damian Green over the years but first posted publicly in 2013
=cut
sub usage{
system("perldoc $progName");
};
my $opt_h = "";
my $geometry = "";
my $zoom = "";
my $window_with_profile = "";
my $working_directory = "";
my $temp_argv = " @ARGV ";
#my $counter = int(rand(10));
###lets keep a running counter instead
my $counter = 0;
my $home = $ENV{"HOME"};
$home = abs_path($home);
my $counter_file = "$home/.term_theme_counter";
if (-f $counter_file){
open (INFILE, "< $counter_file");
my @contents = <INFILE>;
close INFILE;
$counter = @contents[0];
}else{
open (OUTFILE, "> $counter_file");
print OUTFILE $counter;
close OUTFILE;
}
$counter++;
if ($counter > 10){
$counter = 1;
}
open (OUTFILE, "> $counter_file");
print OUTFILE "$counter\n";
close OUTFILE;
use Cwd 'abs_path';
my $pwd = abs_path();#expands /cadtools to /data/mmc/emc/cadtools_lnx/cadtoolsmy
my $title_path = "";
### first of all pull out the "." if there is one...
if ($temp_argv =~ m/(\s+)(\.)(\s+)/){
my $arg = ..;
my $val = ;
$temp_argv =~s/\Q$arg\E/ /; #<- remove the arg from the temp_argv
unless ($temp_argv =~ m/--working_directory/){
$working_directory = "--working-directory=$pwd";#<- #<- set the new working dir
}
$title_path = $pwd;
#}elsif ($temp_argv =~ m/(\s+)(\S+)(\s+)/ and -d ){
}elsif ($temp_argv =~ m/(\s+)((?!-)\S+)(\s+)/ and -d ){
my $arg = ..;
my $val = ;
$val = abs_path($val);
$temp_argv =~s/\Q$arg\E/ /;
unless ($temp_argv =~ m/--working_directory/){
$working_directory = "--working-directory=$val";
}
$title_path = $val;
}elsif ($temp_argv =~ m/(\s+)(--?dir=)(\S+)(\s+)/ and -d ){# and -d ){
my $arg = ...;
my $val = ;
$val = abs_path($val);
$temp_argv =~s/\Q$arg\E/ /;
unless ($temp_argv =~ m/--working_directory/){
$working_directory = "--working-directory=$val";
}
$title_path = $val;
}elsif($temp_argv !~ m/--working_directory/){
$working_directory = "--working-directory=$home";
$title_path = "$home";
}
if($temp_argv =~ m/(\s+)(--?geometry=)(\S+)(\s+)/){
$geometry = ;
my $arg = ...;
$temp_argv =~s/\Q$arg\E/ /;
}
if($temp_argv =~ m/(\s+)(--?window-with-profile=)(\S+)(\s+)/){
$window_with_profile = ;
my $arg = ...;
$temp_argv =~s/\Q$arg\E/ /;
}
if($temp_argv =~ m/(\s+)(--?zoom=)(\S+)(\s+)/){
$zoom = ;
my $arg = ...;
$temp_argv =~s/\Q$arg\E/ /;
}
if($temp_argv =~ m/(\s+)(--?h)(elp)?(\s+)/){
&usage(); exit;
}
if (!$geometry){
$geometry = "--geometry=150x30+180+500";
}else{
$geometry = "--geometry=$geometry";
}
if (!$zoom){
$zoom = "--zoom=1";
### some machines have a small zoom by default and so you can adjust it here for different machines if you want.
}else{
$zoom = "--zoom=$zoom";
}
if (!$window_with_profile){
### if gnome themes arent working on your machine, you may have to comment the following line out...
$window_with_profile = "--window-with-profile=theme$counter";
}else{
$window_with_profile = "--window-with-profile=$window_with_profile";
}
my $title = "--title=$title_path";
my $cmd = "gnome-terminal $window_with_profile $geometry $zoom $working_directory $temp_argv $title &"; #--sm-client-id=greend12
print "$cmd\n";
system($cmd);