получить событие, когда пользователь выбрал текст в любом окне в X11

Я попробовал dmidecode

dmidecode -t memory

К счастью, в строке Bank Locator: SOCKET 1 CHANNEL 7 DIMM 0указано, что модуль DIMM 170 находится на канале 7. Машина поддерживает 32 модуля DIMM, всего 8 каналов. Соответствующие каналы перечислены ниже:

Handle 0x0026, DMI type 17, 40 bytes
Memory Device
        Array Handle: 0x0006
        Error Information Handle: Not Provided
        Total Width: 72 bits
        Data Width: 64 bits
        Size: 32 GB
        Form Factor: DIMM
        Set: None
        Locator: DIMM170 J31
        Bank Locator: SOCKET 1 CHANNEL 7 DIMM 0
        Type: DDR4
        Type Detail: Synchronous Registered (Buffered)
        Speed: 2666 MT/s
        Manufacturer: Samsung
        Serial Number: 0x40C3BA1D
        Asset Tag: 1838
        Part Number: M393A4K40BB2-CTD
        Rank: 2
        Configured Clock Speed: 2666 MT/s
        Minimum Voltage: 1.2 V
        Maximum Voltage: 2.0 V
        Configured Voltage: 1.2 V
[user@centos ~]$ sudo dmidecode -t memory | grep CHANNEL
        Bank Locator: SOCKET 0 CHANNEL 0 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 0 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 1 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 1 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 2 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 2 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 3 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 3 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 4 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 4 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 5 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 5 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 6 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 6 DIMM 1
        Bank Locator: SOCKET 0 CHANNEL 7 DIMM 0
        Bank Locator: SOCKET 0 CHANNEL 7 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 0 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 0 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 1 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 1 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 2 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 2 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 3 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 3 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 4 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 4 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 5 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 5 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 6 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 6 DIMM 1
        Bank Locator: SOCKET 1 CHANNEL 7 DIMM 0
        Bank Locator: SOCKET 1 CHANNEL 7 DIMM 1

2
28.09.2021, 07:17
1 ответ

Обычно, выделение текста помещает его в основное выделение (, которое не находится в буфере обмена ).

Существует clipnotify, но он срабатывает, когда и первичный, и буфер обмена становятся владельцами, но часть буфера обмена легко удалить, чтобы создатьprimarynotify.c:

#include <X11/Xatom.h>
#include <X11/Xlib.h>
#include <X11/extensions/Xfixes.h>
#include <stdlib.h>

int main(void) {
    Display *disp;
    Window root;
    XEvent evt;

    disp = XOpenDisplay(NULL);
    if (!disp)
        exit(1);

    root = DefaultRootWindow(disp);

    XFixesSelectSelectionInput(disp, root, XA_PRIMARY, XFixesSetSelectionOwnerNotifyMask);

    XNextEvent(disp, &evt);
    XCloseDisplay(disp);
}

Затем скомпилируйте его (зависит от Xfixes):

cc -lX11 -lXfixes -o primarynotify primarynotify.c

и запустить его в цикле оболочки,

while primarynotify; do
    echo "Primary owned: A selection has just been made."
done

Не забудьте поместить primarynotifyв какой-нибудь каталог $PATH, иначе вам придется указать полный путь к нему.

1
28.09.2021, 09:06

Теги

Похожие вопросы