Sunday, January 22, 2006

Why isn't the clipboard a stack?

For 22 years now, graphical OSes have offered the same puny little single ref-cell as the model of the clipboard, i.e., the storage for the copy-paste mechanism. Yet most of the interaction I have with my computer is stack-shaped; start performing a task, realize it requires a sub-task, perform the sub-task, and return to the previous task. If I happen to have copied something to the clipboard which I am pasting in various places and then need to perform a sub-task in the middle, this single register may become trashed in the process, with a "user-save register policy" as my only recourse.

I know Microsoft Office has some sort of fixed-width-but-bigger-than-1 array for its clipboard, but it's only within Office, not OS-wide.

I'm not saying the design of a stack-based clipboard would be obvious--for example, I don't know how the system should know when to pop an item off the stack--but a single ref cell isn't enough.


Anonymous said...

Maybe something like Emacs' `kill-ring'?

Anonymous said...

Actually, I know of at least two examples of desktop environments where the clipboard is a stack and you get access to items besides just the top of the stack:

- in KDE, kclipboard lets you move an entry you copied previously (up to a configurable limit) to the top of the stack

- in Mac OS X, you can install a third-party utility (such as PTHPasteboard from to get similar behaviour (and more)and, in TextMate you can "paste-and-pop" an entry off of the clipboard, so that the next time you paste, you get the entry you copied on the clipboard before the previous one (without installing any third-party clipboard manager)

So, I think the model of the clipboard has always been richer than just 1 cell, but no-one has figured out the perfect interface to it yet (as you said, it's not so trivial..), so we have to install an extra utility. On the other hand, choice is good, I guess :-)

Anonymous said...

I've been using the previously-copy/cut feature of klipper, KDE's clipper for ages, it is really useful.

Anonymous said...

In Windows, I use the ditto tool:

It's not quite a stack, but I think it works pretty well. I use it at work a lot now.

Red Rift said...

The xclipboard program is used to collect and display text selections that are sent to the CLIPBOARD by other clients. It is typically used to save CLIPBOARD selections for later use.


Ralph R. Swick, DEC/MIT Project Athena
Chris D. Peterson, MIT X Consortium
Keith Packard, MIT X Consortium

The program usually comes with X implementations.

Anonymous said...

It shouldn't be a stack. It should be a patch graph so that multiple users can copy and share. The same is true of undo stacks -they should be patch graphs.

While we're busting up old assumptions in guis: can we have more than one cursor and a focus for every keyboard plugged in? Thanks.