选择/突出显示文本问题

Xen*_*ius 5 gui mouse text backtrack

我正在使用 Backtrack 5。因为它基于 Ubuntu 10.04,所以我决定在这里问我的问题:

我在用鼠标选择文本时遇到问题。例如,当我尝试重命名文件夹时,有时我可以成功突出显示文本,但是当我松开鼠标按钮时,它不再突出显示。有时我什至无法成功突出显示我想要的文本部分。它或多或少突出显示然后实际选择的文本。

起初我以为是我的鼠标引起的问题,但是,我尝试了另一只鼠标,问题仍然存在。在网上冲浪时,这个问题确实困扰着我。请你帮助我好吗?

Sté*_*las 15

可能有什么东西在不断地窃取 X 选择。要找出它是谁。你可以编译这个:

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

int main() {
  printf("%#lx\n", XGetSelectionOwner (XOpenDisplay(0), XA_PRIMARY));
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

和:

gcc that-file.c -lX11
Run Code Online (Sandbox Code Playgroud)

该代码是返回PRIMARYX 选择的所有者的窗口 ID 。然后您可以使用xdotool获取拥有该窗口的进程的 PID(假设 Window 来自本地客户端并且它让窗口管理器知道它的 PID):

ps -fp "$(xdotool getwindowpid "$(./a.out)")"
Run Code Online (Sandbox Code Playgroud)

如果您没有xdotool,则可以采用困难的方法:您可以在以下输出中查找该窗口 ID xwininfo -root -all

xwininfo -root -all | less "+/$(./a.out)"
Run Code Online (Sandbox Code Playgroud)

拥有选择的窗口可能没有名称,但您可以查看其父级或祖父级以获取更多线索。找到由窗口管理器管理的祖先后,您可以通过以下方式获取进程 ID(假设窗口来自本地进程):

xprop -id that-id _NET_WM_PID
Run Code Online (Sandbox Code Playgroud)

例子:

$ 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
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

这就是它的pid。

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