| 
 
A software archaeology screwup
 This week I switched from using the konsoleterminal program to usinggnome-terminal,
because the former gets all sorts of font widths and heights wrong for
high-bit characters like ⇒ and ③, making it very difficult to edit
such text, and the latter, I discovered doesn't.  Here's howkonsoledisplays the text☆☆★★★   “Good”as I move the cursor rightwards
through it: Uggggggh.  Why did I put up with this bullshit for so long? (I know, someone is going to write in and say the problem isn't in konsole,
it's in the settings for the KooKooFont 3.7.1 package, and I can
easily fix this by adding, removing, or adjusting the appropriate
directives in/usr/share/config/fontk/config/fontulator-compat.d/04-spatulation,
and… I don't care,gnome-terminalworks andkonsoledoesn't.) So I switched terminals, but this introduced a new problem: konsolewould
detect when a shell command had been run, and automatically retitle
the tab it was run in, until the command exited.  I didn't realize until this
feature went away how much I had been depending on it to tell the tabs
apart.  Undergnome-terminalall the tabs just saidTerminal. Reaching back into my memory, to a time even before there were tabs, I
recalled that there used to be a simple utility I could run on the
command line to set a terminal title.  I did remember xsetname,
which sets the X window title, but I didn't want that in this
case. I looked around through the manual and mybindirectory and
didn't find it, so I decided to write it fresh. It's not hard.  There's an escape sequence which, if received by the
terminal, should cause it to retitle itself.  If
the terminal receives     ESC ] 0 ; pyrzqxgl \cG
 it will change its title to pyrzqxgl.  (Spaces in the display above
are for clarity only and should be ignored.) It didn't take long to write the program: #!/usr/bin/python3
from sys import argv, stderr
if len(argv) != 2:
    print("Usage: title 'new title'", file=stderr)
    exit(-2)
print("\033]0;{}\a".format(argv[1]), end="")
 The only important part here is the last line.  I named the program
title, installed it in~/bin, and began using it
immediately. A few minutes later I was looking for the tab that had an SSH session
to the machine plover.com, and since the title was stillTerminal,
once I found it, I rantitle plover, which worked.  Then I stopped
and frowned.  I had not yet copied the program to Plover.  What just
happened? Plover already had a ~/bin/titlethat I wrote no less than
14½ years ago:    -rwxr-xr-x 1 mjd mjd 138 Feb 11  2004 /home/mjd/bin/title
 Here it is: #!/usr/bin/perl
my $title = join " ", @ARGV;
$title = qx{hostname -s || hostname} if $title eq "";
chomp $title;
print "\e]0;$title\cG";
 Why didn't I find that before I wrote the other one? The old program is better-written too.  Instead of wasting code
to print a usage message if I didn't use it right, I had spent that code
in having it do something useful instead. This is not the first time I have done something like
this. Oh well, at least I can reacquire the better UI now that I know about
it. [ Addendum 20220127: I did it again ] 
 
[Other articles in category /oops] 
permanent link
 
 |