From: Paul Hänsch Date: Thu, 13 Apr 2023 16:30:17 +0000 (+0200) Subject: read screen info X-Git-Url: https://git.plutz.net/?a=commitdiff_plain;h=d2826770279ce6ca5945f428e1abfd7454b3d87c;p=x11sh read screen info --- diff --git a/libx11.sh b/libx11.sh index 014431c..773a920 100755 --- a/libx11.sh +++ b/libx11.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash _EXEC="${0}" X11_FORK="${X11_FORK:-0}" @@ -103,6 +103,7 @@ x11_additional_data(){ x11_read_values(){ local data chars m1 m2 m3 m4; + read data; data="${data} " while [ $# -gt 0 ]; do case $1 in @@ -151,6 +152,49 @@ x11_read_values(){ printf '%i %i %i\n' "$m1" "$m2" "$m3" shift 1 ;; + DEPTH) + debug 'Data: %i\n' "${#data}" + [ ${#data} -lt 100 ] && debug 'Data: %s\n' "$data" + { read m1 m2 data; } <<-EOF + $(printf '%i ' $data |x11_read_values CARD8 pad 1 CARD16 pad 4) + EOF + debug 'Depth: %i, VTypes: %i\n' $m1 $m2 + debug 'DEPTH VID Vclass RGBbits ClrMaps MaskR MaskG MaskB\n' + while [ $m2 -gt 0 ]; do + { read m3; read data; } <<-EOF + $(printf '%i ' $data |x11_read_values CARD32 CARD8 CARD8 CARD16 CARD32 CARD32 CARD32 pad 4 -) + EOF + debug '%i %i %i %i %i %i %i %i\n' $m1 $m3 + printf '%i %i %i %i %i %i %i %i\t' $m1 $m3 + m2=$((m2 - 1)) + done + shift 1 + ;; + SCREEN) + { read m1; read data; } <<-EOF + $(printf '%i ' $data |x11_read_values \ + CARD32 CARD32 CARD32 CARD32 CARD32 CARD16 CARD16 \ + CARD16 CARD16 CARD16 CARD16 CARD32 CARD8 CARD8 CARD8 CARD8 - + ) + EOF + m2="${m1##* }" + #m1="${m1% *}" + debug 'Root: %i\nColormap: %i\nWhite: %i\nBlack: %i\nInput Mask: %i\nWidth: %i\nHeight: %i\nMMWidth: %i\nMMHeight: %i\nMaps min: %i\nMaps max: %i\nVisual: %i\nBacking-Stores: %i\nSave-Unders: %i\nRoot-depth: %i\nN Depth: %i\n' $m1 + # debug 'Depth / Visuals: %s\n' "$data" + while [ $m2 -gt 0 ]; do + { read m3; read data; } <<-EOF + $(printf '%i ' $data |x11_read_values DEPTH -) + EOF + m1="$m1 $m3" + m2=$((m2 - 1)) + done + printf '%s\n' "$m1" + shift 1 + ;; + -) + printf '\n' + shift 1 + ;; *) debug 'Unknown value type: %s\n' "$1" shift 1 @@ -213,6 +257,13 @@ x11_setup(){ m3=$((m3 - 1)) done debug "Pixmap Formats:\nDepth BPP SL pad\n%s" "$X11_PIXMAP_FORMATS" + while [ $m2 -gt 0 ]; do + { read m1; read data; } <<-EOF + $(printf '%i ' $data |x11_read_values SCREEN) + EOF + X11_SCREENS="${X11_SCREENS}${m1}${BR}" + m2=$((m2 - 1)) + done ;; esac }