Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь, но, насколько я думаю, единственный способ реализовать это опрос.
Я также попытался посмотреть на исходный код одного из известных менеджеров буфера обмена http://parcellite.sourceforge.net/.
Я нашел этот код в этом.
/* Add the daemon loop */
timeout_id = g_timeout_add_full(G_PRIORITY_LOW,
DAEMON_INTERVAL,
(GSourceFunc)daemon_check,
NULL,
(GDestroyNotify)reset_daemon);
И в заголовочном файле DAEMON_INTERVAL определен как 500. Таким образом, он проверяет каждые 500 миллисекунд.