Skip to main content

xpynfo

This is a simple CLI tool to dump X window info in a tree format.

Current version is a proof-of-concept. The API will potentially change drastically.

Features

System Dependencies

The core features depend on libxcb. The xcffib docs also mention libxcb-render. I suspect the full list of xcb components is actually necessary, but I haven’t checked from a fresh install yet.

Here’s a good way to discover dependencies in the RPM world. You should be able to replace dnf with yum on older systems.

$ sudo dnf install -y dnf-utils --allowerasing

# For a full XCB install, use this as the first line instead
# UNLISTED_DEPS=($(eval "echo 'xcb-'{'proto','util-*'}{'','-devel'}"));
$ UNLISTED_DEPS=($(eval "echo xcb-util-renderutil{,-devel}")); \
    DEPS=($(\
        repoquery --requires --resolve python2-xcffib \
            | awk -F':' '\
                /^[^:]*:[^:]*$/{ \
                    gsub("-[0-9]+$", "", $1); \
                    print $1; \
                }' \
            | sort -u \
    )); \
    FULL_DEPS=( "${UNLISTED_DEPS[@]}" "${DEPS[@]}" "${DEPS[@]/%/-devel}" )
    eval sudo dnf install \
        --skip-broken \
        $(printf "'%s' " "${FULL_DEPS[@]}")

Package xcb-util-renderutil-0.3.9-10.fc28.x86_64 is already installed, skipping.
Package xcb-util-renderutil-devel-0.3.9-10.fc28.x86_64 is already installed, skipping.
Package libxcb-1.13-1.fc28.x86_64 is already installed, skipping.
Package libxcb-1.13-1.fc28.i686 is already installed, skipping.
Package python2-2.7.15-1.fc28.x86_64 is already installed, skipping.
Package python2-cffi-1.11.2-1.fc28.x86_64 is already installed, skipping.
Package python2-six-1.11.0-3.fc28.noarch is already installed, skipping.
Package libxcb-devel-1.13-1.fc28.x86_64 is already installed, skipping.
Package python2-devel-2.7.15-1.fc28.x86_64 is already installed, skipping.
No match for argument: python2-cffi-devel
No match for argument: python2-six-devel
Dependencies resolved.
Nothing to do.
Complete!

# Or, for an even simpler full install,
$ sudo dnf install 'libxcb*' 'xcb*'

I have no idea how to do this in other ecosystems. It should be possible in the Debian world or the Arch world with some tweaking.

Installation

$ pip install --user xpynfo

Usage

$ export PATH=~/.local/bin:$PATH
$ which xpynfo
~/.local/bin/xpynfo
$ xpynfo --version
xpynfo <version>
$ xpynfo --help
< dumps all the help >
$ xpynfo \
    --recurse \
    --use-names \
    --style AsciiStyle \
    --max-depth 1 \
    --properties \
    $(xprop | awk '/WM_CLIENT_LEADER/{ print strtonum($NF); }')
# Note: you have to click a window to populate xprop
106954753: Sublime Text
|   Properties:
|       WM_CLASS: ['sublime_text', 'Sublime_text']
|       WM_CLIENT_LEADER: 106954753
|       WM_CLIENT_MACHINE: gxc-fedora-28.wotw
|       WM_COMMAND: sublime_text
|       WM_ICON_NAME: sublime_text
|       WM_LOCALE_NAME: en_US.UTF-8
|       WM_NAME: Sublime Text
|       WM_NORMAL_HINTS: <WM_SIZE_HINTS>
|       WM_PROTOCOLS: ['WM_DELETE_WINDOW', 'WM_TAKE_FOCUS', '_NET_WM_PING']
|       _NET_WM_ICON_NAME: sublime_text
|       _NET_WM_NAME: Sublime Text
|       _NET_WM_PID: 637
|       _NET_WM_USER_TIME_WINDOW: 106954754
+-- 106954754

(Very Basic) Documentation

usage: xpynfo [-h] [-V] [-r] [-d MAX_DEPTH] [-a] [-g] [-p] [-n]
              [-s {AsciiStyle,ContRoundStyle,ContStyle,DoubleStyle}]
              [window_id]

A tool to examine various pieces of X info. Without options the command simply
prints the window id.

positional arguments:
  window_id             Specify the window ID; default is the screen's root
                        window

optional arguments:
  -h, --help            show this help message and exit
  -V, --version         Displays the package version and exits

Scope Control:
  Options to control the scope of the calls xpynfo makes

  -r, --recurse         Also query children of the given ID recursively
  -d MAX_DEPTH, --max-depth MAX_DEPTH
                        Limit the depth of recursion

X Calls:
  Options to add X information

  -a, --attributes      Add XWindowAttributes info to output
  -g, --geometry        Add XGetGeometry info to output
  -p, --properties      Add XListProperties combined with parsed XGetProperty
                        info to output

Style:
  Options to tweak output look

  -n, --use-names       Add _NET_WM_NAME or WM_NAME (when available) to output
  -s {AsciiStyle,ContRoundStyle,ContStyle,DoubleStyle}, --style {AsciiStyle,ContRoundStyle,ContStyle,DoubleStyle}
                        Set the anytree rendering style

Metadata

Release files for xpynfo 0.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distribution (wheel)

Table of built distributions (wheels) for xpynfo 0.0.0
File Interpreter ABI Platform
xpynfo-0.0.0-py2.py3-none-any.whl Python 2, Python 3 none any Details

Release files / xpynfo-0.0.0-py2.py3-none-any.whl

Download URL xpynfo-0.0.0-py2.py3-none-any.whl
Size 16.9 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
c0b46033bd624bf59b61d3bad3ad222580446af4a06e4d138d39b2dec0055d6b
BLAKE2b-256 checksum
How to use checksums
dc3345ce7b7e8efacbcd79b3290b87839f62271b1e03247f402f3f8b64a2b53e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Security for xpynfo 0.0.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.0.0 This release

1 release file No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page