dotfiles/.bin/setvideo
2023-04-29 14:32:43 +02:00

40 lines
1.2 KiB
Bash
Executable File

#!/bin/ksh
# set the video device via argument (if you put something stupid her, so be it...)
[ ! -z $1 ] && doas ln -sf /dev/video$1 /dev/video
# we need it a few times, and caching is faster
DUMP=$(dmesg)
# save the current active video device
_cur=$(ls -l /dev/video | sed 's/.*\(.$\)/\1/')
# starting from dev 4, you need to cd /dev && sh MAKEDEV videoX
for i in 0 1 2 3 4 5 6
do
# find video attach and detach lines
_input="$(echo "$DUMP" | grep -E "^video$i\ at.*|^video$i detached" | tail -n 1)"
# if the last match is a detached line, stop here
echo "$_input" | grep -q "detached" && continue
# take the number from videoX, then grep for what's attached to find
# the last description for this device (usb devices may change order
# during runtime)
_type=$(echo "$_input" | cut -d" " -f3)
_number=$(echo "$_input" | cut -d" " -f1 | sed 's/[a-z]//g')
_desc=$(echo "$DUMP" | grep -E "^$_type at.*" | tail -1 | cut -d'"' -f2)
# Once we walked to the first non-existing device, we stop.
[ -z $_number ] && exit 0
# Show the device list and mark the current one
if [ $_cur -eq $_number ]
then
echo "> $_number: $_desc"
else
echo " $_number: $_desc"
fi
done