Set terminal tab title using fish shell
Approach #1: setting the title by hand
When there are many terminal tabs opened, it is really useful to give them meaninful names.
Fish shell allows setting the current tab's title creating a fish_title
function.
If we want to name our tab FOO
, we could just write this in the terminal:
function fish_title
echo "FOO"
end
After entering the code, the function will be exported and the new title will be used.
The problem with this way is that writing the function each time is tedious.
There is an easy way to overcome this problem.
Approach #2: using a helper function
We could write a helper which export the fish_title
function for us.
I call this helper set_title
, but other name could be used as well.
First we need to write the helper function:
function set_title
set -l title $argv[1]
function fish_title --inherit-variable title
echo "$title"
end
end
Now we can test it, eg. to name our tab BAR
we could call it this way: set_title BAR
Finally, to save the function persistently, we execute this: funcsave set_title
How does it work?
Each time we execute set_title
, it will re-export the fish_title
function.
We need to make the title variable available inside fish_title
scope.
The trick is using the --inherit-variable
option, which will solve this for us.