The weight of the clipboard
I'm working on a clipboard manager, because I'm not happy with any of the ones currently available. Here are my design goals:<p>- The system should be able to efficiently store, manipulate, and search an unlimited number of clipboard entries with reasonable performance.<p>- The software should be cross-platform, and should have implementations for major desktop platforms (Windows, X11, Wayland, macOS).<p>- Non-text data (images) and rich text (e.g. HTML) should be supported.<p>- Clipboard history can be shared across instances using a network connection.<p>- Instances may temporarily go offline, and sync up with other instances once a connection is re-established.<p>- - All functionality should continue to be available when offline (other than sync).<p>- Deletions must be propagated across instances.<p>- Deleted clips must not be trivially recoverable.<p>- Deleted clips must be deleted everywhere, including any copies in OS clipboards.<p>- Sync should be incremental (and otherwise generally efficient).<p>- When connected, actions should propagate across instances in real time (instantly, as opposed to polling, and with no unnecessary roundtrips).<p>- Relaying should be supported (in a `A <-> B <-> C` scheme, A should be able to see C's actions).<p>- Network topology cycles should not result in a feedback loop.<p>- It should be safe and easy to simply copy the database file to another host, "pre-seeding" the clipboard history.<p>- Support "portable installs" (carrying the software, configuration, and database on portable storage).<p>- It should be easy to write interoperable implementations of bridges/clients in most programming languages.<p>- Non-GUI functionality should be separated (or separatable) from GUI functionality, so that a GUI toolkit doesn't need to be loaded at all times.<p>Any suggestions?