「xclip」や「xsel」などのコマンドラインクリップボードツールは、クリップボードをどのように保持しますか?そうでないX Windows環境ではどうすればよいですか?

the_velour_fog

vimが終了したときにXクリップボードがクリアされるというこの質問を読んだ後、Xウィンドウクリップボードは、選択が取得されたプログラムが開いたままのときにのみ存在することを知りました。
「グリッパー」や「パーセライト」のようなプログラムが存在するのは、この動作のためです。

プログラムが終了するたびにXクリップボードがクリアされる場合、プログラムはどのようxclipxsel動作しますか?
そして、このようなプログラムを使用することのセキュリティへの影響は何ですか?たとえば、パスワードがクリップボードにコピーされた場合、このパスワードをプログラムやユーザーがアクセスできる一時ファイルに保存できますか?

ステファン・チャゼラス

以下のようなクリップボードのアプリケーションがありますない限りxclipboardclipit彼らから選択を盗む...、xsel/xclip長い彼らは選択を所有しているとして、将来の選択要求を処理するために、バックグラウンド・プロセスをフォークします。

$ printf test | xclip
$ ps -C xclip
  PID TTY          TIME CMD
14115 pts/10   00:00:00 xclip

そのxclipプロセスは、選択(ここではPRIMARY選択)の要求を処理しています。ただし、別のアプリケーションで何かを選択した場合(または、何かを保存するために使用しxselたり、xclip再度使用したりする場合)、そのxclipプロセスはその選択を他のアプリケーションに譲り渡して終了します。

$ printf test | xsel
$ ps -C xclip
  PID TTY          TIME CMD
$ ps -C xsel
  PID TTY          TIME CMD
14212 ?        00:00:00 xsel

上記、xselからの選択を引き継ぎましたxclip

あなたは特定の選択を所有している人を見つけることができます:

#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
int main(int argc, char* argv[])
{
    Display *d = XOpenDisplay(NULL);
    Window w = XGetSelectionOwner(d, XInternAtom (d, argv[1], False));
    printf("0x%08x\n", w);
    return 0;
}

次に:

$ make xgo LDFLAGS=-lX11
$ ./xgo PRIMARY
0x07000001

それはあなたにウィンドウIDを与えるでしょう。そのIDでxprop -idまたはxwininfo -id使用できますが、xclip/の場合、xsel多くの情報を取得できません。

GNU / Linuxベースのシステムでltraceは、XライブラリAPIレベルで何が起こっているかを確認するのに役立ちます。

X11プロトコルレベルで何が起こっているかを確認するには、X11プロトコルのトラフィックキャプチャするも参照してください

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

Related 関連記事

ホットタグ

アーカイブ