Буфер обмена Motif (XmClipboard)
Собственный буфер обмена Motif: API с блокировками, форматами и отменой, хранивший данные в свойствах корневого окна, а не у владельца, так что скопированное переживало программу, из которой его скопировали.
У выделений X есть врождённая слабость: вставляющий берёт текст у программы, которая его скопировала, и если её уже нет, вставлять нечего. Motif 1.0 решил это в 1989 году собственным буфером, хранимым на сервере. Копирование — последовательность: XmClipboardStartCopy, один или несколько вызовов XmClipboardCopy с форматом, XmClipboardEndCopy; извлечение зеркально — XmClipboardRetrieve. Данные и каталог элементов лежали в свойствах корневого окна, _MOTIF_CLIP_HEADER и родственных, с блокировкой от одновременной записи. XmClipboardCopyByName регистрировал только формат и оставлял владельцу выдать содержимое, когда о нём действительно попросят, — для больших изображений, а XmClipboardUndoCopy возвращал предыдущий элемент.
Цена: X-сервер превращался в маленькую базу данных, а читать её могли только программы Motif. Чтобы не быть островом, библиотека ещё и брала на себя выделение CLIPBOARD и отвечала на запросы из свойств, так что программы, следующие ICCCM, могли вставлять из Motif, но не наоборот. Когда в 2000-х менеджеры буфера обмена решили проблему выживания на стороне ICCCM, конструкция стала курьёзом, а тот, кто запустит xlsatoms в современной системе с одной открытой программой Motif, всё ещё увидит эти атомы.