64 lines
1.8 KiB
HTML
64 lines
1.8 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
|
|
<HTML>
|
|
<HEAD>
|
|
<META NAME="GENERATOR" CONTENT="SGML-Tools 1.0.9">
|
|
<TITLE>How to change the title of an xterm: Printing the current job name</TITLE>
|
|
<LINK HREF="Xterm-Title-6.html" REL=next>
|
|
<LINK HREF="Xterm-Title-4.html" REL=previous>
|
|
<LINK HREF="Xterm-Title.html#toc5" REL=contents>
|
|
</HEAD>
|
|
<BODY>
|
|
<A HREF="Xterm-Title-6.html">Next</A>
|
|
<A HREF="Xterm-Title-4.html">Previous</A>
|
|
<A HREF="Xterm-Title.html#toc5">Contents</A>
|
|
<HR>
|
|
<H2><A NAME="s5">5. Printing the current job name</A></H2>
|
|
|
|
<P>Often a user will start a long-lived foreground job such as <CODE>top</CODE>,
|
|
an editor, an email client, etc, and wishes the name of the job
|
|
to be shown in the title. This is a more thorny problem and is
|
|
only achieved easily in <CODE>zsh</CODE>.
|
|
<P>
|
|
<H2><A NAME="ss5.1">5.1 zsh</A>
|
|
</H2>
|
|
|
|
<P><CODE>zsh</CODE> provides an ideal builtin function for this purpose:
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
preexec() a function which is just before a command is executed
|
|
$*,$1,... arguments passed to preexec()
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
|
|
Thus, we can insert the job name in the title as follows:
|
|
<BLOCKQUOTE><CODE>
|
|
<PRE>
|
|
case $TERM in
|
|
xterm*)
|
|
preexec () {
|
|
print -Pn "\e]0;$*\a"
|
|
}
|
|
;;
|
|
esac
|
|
</PRE>
|
|
</CODE></BLOCKQUOTE>
|
|
|
|
Note: the <CODE>preexec()</CODE> function appeared around version 3.1.2
|
|
of <CODE>zsh</CODE>, so you may have to upgrade from an earlier version.
|
|
<P>
|
|
<P>
|
|
<H2><A NAME="ss5.2">5.2 Other shells</A>
|
|
</H2>
|
|
|
|
<P>This is not easy in other shells which lack an equivalent of the
|
|
<CODE>preexec()</CODE> function. If anyone has examples please email
|
|
them to the author.
|
|
<P>
|
|
<P>
|
|
<HR>
|
|
<A HREF="Xterm-Title-6.html">Next</A>
|
|
<A HREF="Xterm-Title-4.html">Previous</A>
|
|
<A HREF="Xterm-Title.html#toc5">Contents</A>
|
|
</BODY>
|
|
</HTML>
|