我正在使用 Backtrack 5。由于它基于 Ubuntu 10.04,我决定在这里提出我的问题:
我在使用鼠标选择文本时遇到问题。例如,当我尝试重命名文件夹时,有时我可以成功突出显示文本,但当我释放鼠标按钮时,它不再突出显示。有时我什至无法成功突出显示我想要的文本部分。它会突出显示实际选择的或多或少的文本。
起初我以为这是我的鼠标引起的问题,但是,我尝试了另一个鼠标,问题仍然存在。这个问题确实困扰着我上网。请你帮助我好吗?
答案1
可能有什么东西不断地窃取 X 选择。来找出是谁。你可以编译这个:
#include <stdio.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
int main() {
printf("%#lx\n", XGetSelectionOwner (XOpenDisplay(0), XA_PRIMARY));
return 0;
}
和:
gcc that-file.c -lX11
该代码用于返回 X 选择的所有者的窗口 ID PRIMARY
。然后您可以使用xdotool
获取拥有该窗口的进程的 PID(假设该窗口来自本地客户端并且它让窗口管理器知道其 PID):
ps -fp "$(xdotool getwindowpid "$(./a.out)")"
如果你没有xdotool
,你可以用困难的方式做到这一点:你可以在输出中查找该窗口ID xwininfo -root -all
:
xwininfo -root -all | less "+/$(./a.out)"
拥有所选内容的窗口可能没有名称,但您可以查看其父级或祖级以获取更多线索。一旦找到由窗口管理器管理的祖先,您就可以通过以下方式获取进程 ID(假设该窗口来自本地进程):
xprop -id that-id _NET_WM_PID
例子:
$ xwininfo -root -wm -tree | grep -B3 "$(./a.out)"
24 children:
0x2800024 "Sun 12 May - 21:40 - zsh (2)": ("xterm" "XTerm") 1920x1059+0+19 +0+19
1 child:
0x280002f (has no name): () 1920x1059+0+0 +0+19
0x280002f 拥有 PRIMARY 选择,其父项是“xterm”(0x2800024 由窗口管理器管理)。
$ xprop -id 0x2800024 _NET_WM_PID
_NET_WM_PID(CARDINAL) = 9707
$ ps -fp 9707
UID PID PPID C STIME TTY TIME CMD
chazelas 9707 1 0 08:50 ? 00:00:02 xterm
这就是它的 pid。
一旦您知道谁拥有该选择,就会更清楚发生了什么。