README.md

    xwidpid

    Утилита для X11 использующая расширение Xres для удобноно получения идентификаторов окон WID через идентификатор процесса PID и наоборот для их сопоставления.

    Зачем

    Существуют разные механизмы сопоставления PID процесса и его окна или окон например wmctrl -lp, но эти утилиты надеятся на то что окно установит _NET_WM_PID и сообщит тем самым свой PID, к сожалению это происходит не всегда. Например запустив glxgears мы легко получим его PID, но зная только его, мы никак не узнаем его WID тоесть не можем сопоставить пару WID/PID. Прямых путей решения этой пробелмы две, первая использовать LD_PRELOAD для перехвата функции создания окна X11 и принудительная установка значения в PID в _NET_WM_PID это надёжный, но хак. Второй способ предложенный Ja-Ja-Hey-Ho это использовать расширение Xres для X11 и кажется это тоже надёжный способ, более однозначный, но это расширение. Но плюсы явности перевешивают плюсы хака. Есть ещё варианты, но они основываются на косвенных данных и работают через раз (перебор окон с нулевым PID возврата от wmctrl -lp).

    Зависимости

    apt install libxres xorg
    

    Сборка

    sudo apt install libxres-dev libx11-dev pkg-config gcc make
    make
    

    Установка и удаление

    Глобально

    sudo make install
    sudo make uninstall
    

    Локально

    make PREFIX=$HOME/.local install
    make PREFIX=$HOME/.local uninstall
    

    Независимо

    make DESTDIR=$HOME/some_you_dir install
    make DESTDIR=$HOME/some_you_dir uninstall
    

    Использование

    Получить список окон принадлежащих процеcсу

    • xwidpid --pid PID
    • xwidpid -p PID
    • xwidpid PID

    Получить идентификатор процесса через идентификатор окна

    • xwidpid --wid WID
    • xwidpid -w WID
    • xwidpid WID

    Получить список всех пар PID/WID

    • xwidpid --all
    • xwidpid -a
    • xwidpid

    PID процесса является просто числом 12345, а WID окна это тоже простое число, но в шестнадцатеричной записи 0x0x320273c, это позволяет различать ввод и не использовать явно ключи -p/-w/--wid/--pid если не хочется.

    Коды возврата

    • 0 всё хорошо
    • 1 не найдена пара PID и WID
    • 2 внутренняя ошибка или плохой аргумент коммандной строки

    На заметку

    Описание

    Утилита для получения WID из PID и PID из WID под X11

    Конвейеры
    0 успешных
    0 с ошибкой