summaryrefslogtreecommitdiffstats
path: root/core/modules/hardware-stats
diff options
context:
space:
mode:
authorSimon Rettberg2017-04-07 14:08:01 +0200
committerSimon Rettberg2017-04-07 14:08:01 +0200
commitaec01fb315d54bbd572e293db9bebe679afba5c4 (patch)
tree7a2cc434ecbdafe4aec2c19c925b2628940b379a /core/modules/hardware-stats
parent[beamergui] Don't remove spaces from screen model name (diff)
downloadmltk-aec01fb315d54bbd572e293db9bebe679afba5c4.tar.gz
mltk-aec01fb315d54bbd572e293db9bebe679afba5c4.tar.xz
mltk-aec01fb315d54bbd572e293db9bebe679afba5c4.zip
[hardware-stats] Report screen meta data
Diffstat (limited to 'core/modules/hardware-stats')
-rw-r--r--core/modules/hardware-stats/data/etc/X11/Xsetup.d/99-detect-screens39
1 files changed, 39 insertions, 0 deletions
diff --git a/core/modules/hardware-stats/data/etc/X11/Xsetup.d/99-detect-screens b/core/modules/hardware-stats/data/etc/X11/Xsetup.d/99-detect-screens
new file mode 100644
index 00000000..879cfe96
--- /dev/null
+++ b/core/modules/hardware-stats/data/etc/X11/Xsetup.d/99-detect-screens
@@ -0,0 +1,39 @@
+#!/bin/sh
+# XXX: This file is actually sourced, so the shebang above doesn't do anything.
+# Thus we explicitly call bash below to get our echo -e -n support
+
+(
+bash <<"HEREDOC"
+
+ mkdir -p "/run/openslx"
+ [ -f "/run/openslx/screen-report-done" ] && exit 0
+ touch "/run/openslx/screen-report-done"
+
+ . /opt/openslx/config
+ [ -z "$SLX_REMOTE_LOG" ] && exit 0
+ UUID=$( cat /run/system-uuid )
+ [ -z "$UUID" ] && exit 0
+ XRANDR=$( mktemp )
+ TMP=$( mktemp )
+ TF=$( mktemp )
+ xrandr --verbose > "$XRANDR"
+
+ OUTPUTNAMES=$( < "$XRANDR" grep -E "[[:digit:]]+mm x [[:digit:]]+mm" | awk '{print $1}' )
+
+ declare -a POSTDATA
+ for output in ${OUTPUTNAMES}; do
+ < "$XRANDR" grep -Pzo "\n${output}\N*connected\N*\n(\s+\N*\n)+" > "$TMP"
+ echo -e -n "$( < "$TMP" grep -Eao '[0-9a-f]{32}' | sed -r ':a;N;$!ba;s/[^0-9a-f]//gI;s/([0-9a-f]{2})/\\x\1/gI' )" > "$TF"
+ MODEL_NAME=$( < "$TF" parse-edid | grep -m 1 -E '^\s*ModelName' | sed -r 's/^[^"]*"(.*)"[^"]*$/\1/;s/^\s+//;s/\s+$//' )
+ NATIVE_RES=$( < "$TMP" grep -Fa ' +preferred' | awk '{print $1}' )
+ POSTDATA+=( "-dscreen[${output}][name]=${MODEL_NAME}" "-dscreen[${output}][resolution]=${NATIVE_RES}" )
+ done
+
+ rm -f -- "$TF" "$XRANDR" "$TMP"
+ curl --data "uuid=$UUID" --data "type=~screens" "${POSTDATA[@]}" "$SLX_REMOTE_LOG"
+
+HEREDOC
+) &
+
+true
+