TL;DR: you can use clipmon
available on MELPA, and turn on clipmon-mode
.
Note: the details below apply to X servers, but the package should work on any platform.
How does the clipboard work ?
Clipboard is implemented as an asynchronous process. When you copy from an application, it becomes the "clipboard owner" but doesn't actually put the copied data anywhere. When you paste into an application, it requests the data from the current "clipboard owner".
Reference: http://www.jwz.org/doc/x-cut-and-paste.html
How to get the content of the clipboard
As I understand it, the "reliable" way to see if there's new data in the clipboard is to periodically poll the X server to check what's there. For emacs, the package clipmon (https://github.com/bburns/clipmon) does that. Every two seconds by default.
Excerpt from the README :
It also adds changes to the system clipboard to the kill ring, making
Emacs into a clipboard manager for text - you can then use a package
like browse-kill-ring or helm-ring to view and manage your clipboard
history.
(Please note that I didn't actually try this package, but it certainly looks like a solution.)