选择/突出显示文本问题

选择/突出显示文本问题

我正在使用 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。

一旦您知道谁拥有该选择,就会更清楚发生了什么。

相关内容