Default X resources are host specific (which I forgot today)
I've been using X for a very long time now, which means that over the years I've built up a large and ornate set of X resources, a fair number of which are now obsolete. I recently totally overhauled how my X session loads my X resources, and in the process I went through all of them to cut out things that I didn't need any more. I did this first on my home machine, then copied much of the work over to my office machine; my settings are almost identical on the two machines anyway, and I didn't feel like doing all of the painstaking reform pass a second time.
Xterm has many ornate pieces,
one of which is an elaborate system for customizing character
classes for double click word selection.
The default xterm behavior for this is finely tuned for use on Unix
machines; for example, it considers each portion of a path to be a
separate word, letting you easily select out one part of it. Way
back in Fedora Core 4, the people packaging xterm decided to change
this behavior to one that is allegedly more useful in double-clicking
on a URL. I found this infuriating and promptly changed it back by
setting the XTerm*charClass
X resource to xterm's normal default,
and all was good. Or rather I changed it on my work machine only,
because Fedora apparently rethought the change so rapidly that I
never needed to set the charClass
resource on my home machine.
(My old grumblings suggest that perhaps I skipped Fedora Core 4 entirely on my own machines, and only had to deal with it on other machines that I ran X programs on. This is foreshadowing.)
When I was reforming my X resources, I noticed this difference
between home and work and as a consequence dropped the charClass
setting on my work machine because clearly it wasn't necessary any
more. Neatening up my X resources and deleting obsolete things was
the whole point, after all. Then today I started a remote xterm
on an Ubuntu 16.04 machine, typed a command
line involving a full path, wanted to select a filename out of the
path, and my double-click selected the whole thing. That's when I
was pointedly reminded that default X resources for X programs
are host specific. Your explicitly set X resources are held by
the server, so all programs on all hosts will see them and use them,
but if you don't set some resource the program will go look in its
resource file on the host it's running on. There is no guarantee
that the XTerm resource file on Fedora is the same as the XTerm
resource file on Ubuntu, and indeed they're not.
(It turns out that way back in 2006, Debian added a patch to do this to their packaging of xterm 208. They and Ubuntu seem to have been faithfully carrying it forward ever since. You can find it mentioned in things like this version of the Debian package changelog.)
In summary, just because some X resource settings are unnecessary on one machine doesn't mean that they're unnecessary on all machines. If they're necessary anywhere, you need to set them in as X resources even if it's redundant for most machines. You may even want to explicitly set some X resources as a precaution; if you really care about some default behavior happening, explicitly setting the resource is a guard against someone (like Debian) getting cute and surprising you someday.
(There's another use of setting X resources to the default values that the program would use anyway, but it's slightly tricky and perhaps not a good idea, so it's for another entry.)
The reason I never had this problem at home, despite not setting
the XTerm*charClass
resource, is that I almost never use remote
X programs at home, especially not xterm. Instead I start a local
xterm and run ssh
in it, because in practice that's faster and
often more reliable (or at least it was). If I run a remote xterm
on
an Ubuntu machine from home, I have the problem there too, and so
I should probably set XTerm*charClass
at home just in case.
PS: To add to the fun of checking this stuff, different systems keep the default X resource files in different places. On Fedora you find them in /usr/share/X11/app-defaults, on Ubuntu and probably Debian they're in /etc/X11/app-defaults, and on FreeBSD you want to look in at least /usr/local/lib/X11/app-defaults.
(On OmniOS and other Illumos based systems it's going to depend on
where you installed xterm from, since it's not part of the base OS
and there are multiple additional package sources and even package
systems that all put things in different places. I recommend using
find
, which is honestly how I found out most of these hiding
places even on Linux and FreeBSD.)
|
|