ソースアプリケーション(コンテンツのコピー元のアプリケーション)が閉じていると、クリップボードのコンテンツが使用できなくなることがあります。
これにより、ソースアプリケーションが何であるかを(たとえば、PIDで)知ることができるかどうか疑問に思います。
どうして?ソースアプリケーションがターミナルである場合、コピーされたコンテンツが相対パスである場合、ターミナルの作業ディレクトリを見つけて、ファイルへのフルパスを構築します。
参考までに、私は現在xclipを使用してクリップボードの内容を決定しています。たとえば、
xclip -selection primary -t STRING -o 2> /dev/null
@StéphaneChazelasが言ったこと。ただし、X11から他のクライアントの信頼できるPIDを取得する可能性は低いことに注意してください。Xクライアントが汎用ネットワーク接続(UNIXソケットまたはTCPソケット)を介してXサーバーに接続することを思い出してください。アプリケーションがローカルでない可能性があるため、PIDは意味がない場合があります。TCP(最近は一般的ではありません)またはSSH転送X11接続(より一般的)を介して接続される可能性があります。
—
Celada、2015年
メモをありがとう-私はXGetSelectionOwnerにアクセスするためにいくつかのCコードを書く必要があると思いますか?私はおそらくそれを行うことができます-解決策が得られたらポストバックします。
—
ジェフワード
XGetSelectionOwner(3)
選択の所有者のウィンドウIDを取得します。そこから、たとえば_NET_WM_PIDプロパティを持つウィンドウを見つけるためにウィンドウツリーをたどることができますxprop
(そのウィンドウは、そのプロパティを設定するローカルクライアントからのものであると想定しています)。xwininfo -root -tree | less +/0x<that-id>
アプリケーションを識別するには十分かもしれません。