three-screens
Soluzione per tre schermi, come descritta nelle slide
This commit is contained in:
101
three-screens
Normal file
101
three-screens
Normal file
@@ -0,0 +1,101 @@
|
||||
#!/bin/bash
|
||||
function setClone {
|
||||
PRIMARY=$1
|
||||
SECONDARY=$2
|
||||
while read -r l
|
||||
do
|
||||
if echo $l | grep -Eq "^[a-zA-Z]"
|
||||
then
|
||||
DEV=`echo $l | sed -e "s/ .*$//"`
|
||||
MODELIST=`echo ${DEV} | sed -e "s/-/_/g"`_MODES
|
||||
typeset -n CML=$MODELIST
|
||||
elif echo $l | grep -q "^[0-9]"
|
||||
then
|
||||
MODE=`echo $l | sed -e "s/ .*$//"`
|
||||
CML="${!MODELIST} $MODE"
|
||||
fi
|
||||
done
|
||||
PRIMARY_LIST=`echo ${PRIMARY} | sed -e "s/-/_/g"`_MODES
|
||||
SECONDARY_LIST=`echo ${SECONDARY} | sed -e "s/-/_/g"`_MODES
|
||||
typeset -n PRIMARY_MODES=$PRIMARY_LIST
|
||||
typeset -n SECONDARY_MODES=$SECONDARY_LIST
|
||||
MODE=""
|
||||
for pm in $PRIMARY_MODES
|
||||
do
|
||||
for sm in $SECONDARY_MODES
|
||||
do
|
||||
if [ $pm = $sm -a -z $MODE ]
|
||||
then
|
||||
MODE=$pm
|
||||
fi
|
||||
done
|
||||
done
|
||||
if [ -z "$MODE" ]
|
||||
then
|
||||
echo Nessun modo comune ERRORE!
|
||||
exit 2
|
||||
else
|
||||
echo $MODE
|
||||
|
||||
xrandr --output $PRIMARY --mode $MODE
|
||||
xrandr --output $SECONDARY --mode $MODE
|
||||
xrandr --output $SECONDARY --same-as $PRIMARY
|
||||
fi
|
||||
}
|
||||
|
||||
POSITION='right-of'
|
||||
if [ -n "$1" ]
|
||||
then
|
||||
if [ $1 = '-l' ]
|
||||
then
|
||||
POSITION='left-of'
|
||||
elif [ $1 = '-r' ]
|
||||
then
|
||||
POSITION='right-of'
|
||||
elif [ $1 = '-u' ]
|
||||
then
|
||||
POSITION='above'
|
||||
else
|
||||
echo "-l Display piccolo a sinisitra"
|
||||
echo "-r Display piccolo a destra"
|
||||
echo "-l Display piccolo sopra"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
|
||||
PRIMARY=`xrandr | grep " connected" | grep primary | sed -e "s/ .*$//"`
|
||||
# https://stackoverflow.com/questions/613572/capturing-multiple-line-output-into-a-bash-variable
|
||||
declare R=($(xrandr | grep " connected" | grep -v primary | sed -e "s/[^ ]* c[^ ]* \([0-9]*\).*$/\1/"))
|
||||
|
||||
if expr ${R[0]} \< ${R[1]}
|
||||
then
|
||||
SRES=${R[0]}
|
||||
else
|
||||
SRES=${R[1]}
|
||||
fi
|
||||
|
||||
echo risoluzion schermo piccolo $SRES
|
||||
|
||||
SECONDARY=`xrandr | grep " connected" | grep -v primary | grep -v ${SRES}x | sed -e "s/ .*$//"`
|
||||
TERTIARY=`xrandr | grep " connected" | grep -v primary | grep ${SRES}x | sed -e "s/ .*$//"`
|
||||
if [ -z $SECONDARY ]
|
||||
then
|
||||
SECONDARY=`xrandr | grep " connected" | grep -v primary | grep ${SRES}x | grep -v $TERTIARY | sed -e "s/ .*$//"`
|
||||
fi
|
||||
|
||||
# SECONDARY=DP-1
|
||||
# TERTIARY=DP-2
|
||||
|
||||
echo Primary $PRIMARY
|
||||
echo Secondary $SECONDARY
|
||||
echo Tertiary $TERTIARY
|
||||
|
||||
xrandr | setClone $PRIMARY $SECONDARY
|
||||
xrandr --output $TERTIARY --$POSITION $PRIMARY
|
||||
|
||||
|
||||
# echo "xrandr | setClone $PRIMARY $SECONDARY same-as"
|
||||
# xrandr | setClone $SECONDARY $TERTIARY same-as
|
||||
# echo "xrandr --output $TERTIARY --$POSITION $PRIMARY"
|
||||
# xrandr --output $SECONDARY --$POSITION $PRIMARY
|
||||
Reference in New Issue
Block a user