xwinclip watches for updates to either clipboard and copies data between them when either one is updated.
xwinclip monitors the X PRIMARY and CLIBPOARD selections for changes in ownership, and makes the contents of the most recent one to change available to paste from the Windows clipboard.
It also monitors the contents of the Windows clipboard for changes, taking ownership of the PRIMARY and CLIPBOARD selections, and making the contents of the Windows clipboard available in them.
Note well: The XWin(1) X server has internal clipboard integration that is enabled by default. Do NOT run xwinclip unless XWin(1) has been started with the -noclipboard option.
The INCR (Incrememntal transfer) clipboard protocol for clipboard contents larger than the maximum size of an X request is not supported.
Some X clients, notably ones written in Tcl/Tk, do not re-assert ownership of the PRIMARY selection or update it's timestamp when it's contents change, which currently prevents xwinclip from correctly noticing that the PRIMARY selection's contents have changed.
Windows clipboard rendering is synchronous in the WM_RENDER*FORMAT message (that is, we must have placed the contents onto the clipboard by the time we return from processing this message), but we must wait for the X client which owns the selection to convert the selection to our requested format. This is currently achieved using a fixed timeout of one second.
The XWin(1) server should indicate somehow (by placing an atom on the root window?) that it is running with it's internal clipboard integration enabled, and xwinclip should notice this and exit with an appropriate error.
Probably many other bugs.