]> git.plutz.net Git - x11sh/commitdiff
read screen info
authorPaul Hänsch <paul@plutz.net>
Thu, 13 Apr 2023 16:30:17 +0000 (18:30 +0200)
committerPaul Hänsch <paul@plutz.net>
Thu, 13 Apr 2023 16:30:17 +0000 (18:30 +0200)
libx11.sh

index 014431c016b3c1ac932ee56c2c67ae23349f688e..773a92036f41317e2aeae5fc08087bf7fb5e7b7f 100755 (executable)
--- 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
 }