![クリップボードの内容の変更について通知を受け取る](https://rvso.com/image/191811/%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E5%86%85%E5%AE%B9%E3%81%AE%E5%A4%89%E6%9B%B4%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E9%80%9A%E7%9F%A5%E3%82%92%E5%8F%97%E3%81%91%E5%8F%96%E3%82%8B.png)
ファイルを監視するのと同じような方法でクリップボードを監視してinotify
、実際のクリップボードの内容を tmux ステータス ラインまたはシステム内の他のカスタム GUI に表示できるようにしたいと思います。ポーリングはシステムをロードし、応答性があまり良くないので好きではありません。私は GNOME/X11 を使用しています。どのような方法がありますか?
答え1
長い間、回答が得られていないので、私はこれに取り組んでみます。
まず、投票は簡単ですが、あなたはそれをしたくないと言いました。
実際のクリップボードを提供するプログラムを調べ、それを終了してから strace で実行し、いくつかの簡単なクリップボード操作を実行して、何が起こるかを確認します。うまくいけば、これにより、新しいデータがどのようにどこに保存されているかについての手がかりが得られます。それがわかれば、何を検出しようとしているのかが具体的にわかります。
答え2
クリップ通知クリップボードの変更が検出されると応答するシンプルなプログラムです。
PS. プライマリ クリップボード イベント (テキスト選択) も監視しますが、これは望ましくない可能性があります。これは、次の 1 行をコメント アウトするだけで簡単に回避できます。
XFixesSelectSelectionInput(disp, root, XA_PRIMARY, XFixesSetSelectionOwnerNotifyMask);
ソースコードファイル内のclipnotify.c
(すべてのクレジットは別のStackExchangeの回答というユーザーによって作成されましたアキルこの回避策を提案していただきありがとうございます。多くのトラブルを回避できました。
PS. clipnotify をインストールするには、github リポジトリをクローンし、クローンしたディレクトリでコマンドを実行するだけですmake
。プログラムを実行するために実行されるディレクトリに新しい実行可能ファイルが作成されます。