[Annoyances] X-Windows Copy & Paste

John Meacham john at repetae.net
Tue Aug 19 13:44:38 EEST 2003

On Tue, Aug 19, 2003 at 12:09:33PM +0200, Waldo Bastian wrote:
> On Tuesday 19 August 2003 10:55, John Meacham wrote:
> > It occurs to me that since xterm does not allow modification of the text
> > being selected, there is no point in not setting CLIPBOARD on selection.
> > since the point of setting CLIPBOARD independently of PRIMARY is to
> > allow replacement of the selected text with a paste from another app.
> > i.e. no functionality is lost, but we gain the ability to paste X
> > selections into apps with explicit paste commands.
> In KDE we found that any interaction between CLIPBOARD and PRIMARY is 
> considered highly confusing by our users. The models of neither CLIPBOARD nor 
> PRIMARY provide any feedback to the user about what is going on, so the only 
> thing that the user has to go on is his(m/f) own mental visualization. For 
> that reason it is very important IMO to keep these models as simple as 
> possible, and a separate as possible. The user wouldn't KNOW that selecting 
> in xterm sets both CLIPBOARD and PRIMARY, he would need to deduct this from 
> using the feature and he might very well come up with a model about how this 
> all works that is actually quite different from how it actually works. 
> Keep also in mind that this isn't about xterm alone, other applications also 
> support the concepts of PRIMARY and CLIPBOARD and users tend to build their 
> mental picture about how it works based upon their experience with a variety 
> of applications and then apply this mental picture to all applications. How 
> xterm behaves shapes their expectations about other applications and vice 
> versa.

Yeah, I regret including that first paragraph about xterm. I meant it to
go towards my motivation in formulating this proposal, but it seems to
have just caused people to think my proposal is xterm specific, or
dismiss it as another 'unify PRIMARY and CLIPBOARD without reguard for
the consequences' newbie post. (it isn't, there is method in the

The problem right now is not the interaction between CLIPBOARD and
PRIMARY, it is that the current set of interactions do not allow for a
simple set of rules for a user to follow. right now they are almost
independent, which is bad because it confuses people when they interact.
AND since some apps only work well with one or the other, users have to
learn about both to work with the system. the solution is not to
seperate them further (which can't really be done anyway) but rather
make them 'almost the same'. this means users need not worry about the
differences, furthermore it allows applications to simplify their
interfaces by not providing illrelevant options.

a goal is that ALL apps 'natural' cut and 'natural' paste mechanism work
together properly.  with the current scheme, some apps can't even talk
to each other. try selecting something in xterm and using it to replace
some selected text in another app.

users need only learn a single mechanism to transfer data between
arbitray apps, they can learn other mechanisms as they become more
experienced with the system. 

two simple patterns work for trasfering text, simple patterns which are
easy to tell people starting out:

* drag-select and middle click always
* always using menus when available 

these are much easier to tell people and for them to remember than use
drag-select, then you sometimes have to do some copy operation which
isn't always available or easy to get to.

advanced users have an rule that always works and does everything:
   * middle click Always pastes the currently selected text
   * if you want to menu-paste something, menu-copy it if
     possible, otherwise select it. (note: this is better than the
     current situation, where this just can't be done at all if there is no
     'copy' button)

I guess the essence of the proposal is:

all apps which allow selection must either: 
        have an explicit copy operation in a standard place -or- 
           set both PRIMARY and CLIPBOARD on selection

the essence of the whole thing is :


apps which set CLIPBOARD _MUST_ set PRIMARY
apps which set PRIMARY _MUST_ provide a mechanism (explicit or inplicit)
for setting CLIPBOARD
when thought about that way, the interopability benefits are pretty

xterm just happened to be a good example of a program which did this
wrong by default.

this doesn't affect people who like everything to be all GUIy with 
edit menus and whatnot, it is so apps without explicit edit menus
can co-behave with apps that do have them in a sane fashion. 


John Meacham - California Institute of Technology, Alum. - john at foo.net

More information about the xdg mailing list