忍者ブログ

素人翻訳

適当に翻訳する。

「xsel --delete」と「xsel --clear」

 xsel --delete は効かないことが多いけれども、効くこともある。xedit のセレクション、及び xsel 自身が作り出したセレクションに対して「xsel --delete」を使ってみると、同コマンドの機能がよくわかる。

 先ず、セレクション所有者のウィンドウ ID を表示するプログラムを用意しておく(owner.c)。「xsel --delete」「xsel --clear」がどのような効果を持つのか観察する。

(1)xsel 自身が生み出したセレクションを削除する。「--delete」と「-d」は同じ。「--clear」と「-c」も同じ。

$ ./owner
PRIMARY : No Owner
SECONDARY : No Owner
CLIPBOARD : No Owner
$ echo AAA | xsel -i
$ xsel
AAA
$ ./owner
PRIMARY:WindowID : 0x3800001
SECONDARY : No Owner
CLIPBOARD : No Owner
$ echo BBB | xsel -is
$ xsel -s && ./owner
BBB
PRIMARY:WindowID : 0x3800001
SECONDARY:WindowID : 0x3c00001
CLIPBOARD : No Owner
$ xsel -d
$ xsel
$ ./owner
PRIMARY : No Owner
SECONDARY:WindowID : 0x3c00001
CLIPBOARD : No Owner
$ xsel -ds
$ xsel -s
$ ./owner
PRIMARY : No Owner
SECONDARY : No Owner
CLIPBOARD : No Owner
$ echo AAA | xsel -i && echo BBB | xsel -is
$ xsel && xsel -s && ./owner
AAA
BBB
PRIMARY:WindowID : 0x3800001
SECONDARY:WindowID : 0x3c00001
CLIPBOARD : No Owner
$ xsel -c && xsel -cs
$ xsel && xsel -s
$ ./owner
PRIMARY : No Owner
SECONDARY : No Owner
CLIPBOARD : No Owner

 この例では、「xsel --delete」も「xsel --clear」も同じ働きをしている。

(2)xedit のセレクションを削除する。

$ ./owner
PRIMARY : No Owner
SECONDARY : No Owner
CLIPBOARD : No Owner

 xedit内の文章を一部選択反転させる。

$ xsel && ./owner
PLEsample
MNmnMNPRIMARY:WindowID : 0x1800052
SECONDARY : No Owner
CLIPBOARD : No Owner
$ xsel -c
$ ./owner
PRIMARY : No Owner
SECONDARY : No Owner
CLIPBOARD : No Owner

 「xsel -c」の直後の画像。

 また新たに選択反転を行って、

$ xsel && ./owner
mnMNmnMNmn
a
iPRIMARY:WindowID : 0x1800052
SECONDARY : No Owner
CLIPBOARD : No Owner
$ xsel -d
$ ./owner
PRIMARY : No Owner
SECONDARY:WindowID : 0x1800052
CLIPBOARD : No Owner
$ xsel -s
mnMNmnMNmn
a
i$

 「xsel -d」直後の画像。

i$ xsel -ds
$ ./owner
PRIMARY : No Owner
SECONDARY:WindowID : 0x1800052
CLIPBOARD : No Owner
$ xsel -cs
$ ./owner
PRIMARY : No Owner
SECONDARY : No Owner
CLIPBOARD : No Owner

 「--clear」の方は単に PRIMARY セレクションの所有権を放棄するだけ。「--delete」の方は、xedit 内の選択反転していた文章を消した上で、PRIMARYセレクションの所有権を放棄し、SECONDARY セレクションを作成して、もともと PRIMARY セレクションに入っていた内容をそこへ移す。xedit では、「xsel --delete --secondary」が効いてない。xedit に PRIMARY、SECONDARY の両セレクションが存在する時、「xsel -d」を実行すると、PRIMARY セレクションの中身で SECONDARY セレクションが上書きされ、PRIMARY セレクションは消える。

 以下は、セレクションの所有者のウィンドウ ID を表示するプログラム(owner.c)。

// owner.c
// gcc -o owner owner.c -lX11

#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>

int main(){
	Window primary_owner;
	Window secondary_owner;
	Window clipboard_owner;
	char * clipboard_name = "CLIPBOARD";
	Display *my_disp;

	my_disp = XOpenDisplay("");
	Atom clipboard_atom
		 = XInternAtom(my_disp, clipboard_name, False);
	primary_owner = XGetSelectionOwner(my_disp, XA_PRIMARY);
	secondary_owner = XGetSelectionOwner(my_disp, XA_SECONDARY);
	clipboard_owner = XGetSelectionOwner(my_disp, clipboard_atom);

	if(primary_owner == None){
		printf("PRIMARY : No Owner\n");
	}else{
		printf("PRIMARY:WindowID : 0x%x\n", primary_owner);
	}
	if(secondary_owner == None){
		printf("SECONDARY : No Owner\n");
	}else{
		printf("SECONDARY:WindowID : 0x%x\n", secondary_owner);
	}
	if(clipboard_owner == None){
		printf("CLIPBOARD : No Owner\n");
	}else{
		printf("CLIPBOARD:WindowID : 0x%x\n", clipboard_owner);
	}

        XCloseDisplay(my_disp);
	return 0;
}
PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

カレンダー

03 2024/04 05
S M T W T F S
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30

最新コメント

[08/18 NONAME]
[05/18 NONAME]
[04/09 NONAME]
[03/21 NONAME]
[03/20 NONAME]

最新記事

ブログ内検索

広告

バーコード

広告