disp to support arandr
This commit is contained in:
68
skel/disp
68
skel/disp
@@ -1,16 +1,19 @@
|
||||
#!/bin/bash
|
||||
|
||||
[[ -z "$DISPLAY" ]] && export DISPLAY=:0
|
||||
|
||||
CONFIGFOLDER=$HOME/.config/q-tools-disp/
|
||||
CONFIG=${CONFIGFOLDER}disp
|
||||
CONFIG=${CONFIGFOLDER}disp.conf
|
||||
ARANDR_FOLDER="$HOME/.screenlayout"
|
||||
|
||||
TEMPLATE='# configure the display names with "xrandr"
|
||||
MAIN=eDP-1
|
||||
ANALOG=VGA-1
|
||||
DIGITAL=DP-1
|
||||
|
||||
# You hay have to change ANALOG/DIGITAL in the outputs,
|
||||
# You hay have to change ANALOG/DIGITAL in the outputs,
|
||||
# especially for Workstation choices
|
||||
# If you want a single display as your workstation setup,
|
||||
# If you want a single display as your workstation setup,
|
||||
# leave WORKSTATIONRIGHT empty
|
||||
WORKSTATIONLEFT=$MAIN
|
||||
WORKSTATIONRIGHT=$DIGITAL
|
||||
@@ -29,7 +32,7 @@ _display_main() {
|
||||
xrandr | grep " connected" | awk '{ print $1 }' | grep -v "$MAIN" | while read display; do
|
||||
_xrandr --output $display --off
|
||||
done
|
||||
|
||||
|
||||
}
|
||||
|
||||
_display_presentation() {
|
||||
@@ -38,7 +41,7 @@ _display_presentation() {
|
||||
_allon
|
||||
}
|
||||
xrandr | grep " connected" | awk '{ print $1 }' | while read display; do
|
||||
_xrandr --output $display --mode 1024x768 --pos 0x0 --gamma $g:$g:$g
|
||||
_xrandr --output $display --mode 1024x768 --pos 0x0 --gamma $g:$g:$g
|
||||
done
|
||||
}
|
||||
_display_workstation() {
|
||||
@@ -46,7 +49,7 @@ _display_workstation() {
|
||||
echo "ERROR: You do not have configuration yet"
|
||||
_help
|
||||
}
|
||||
if [ -z "$WORKSTATIONLEFT" ];then
|
||||
if [ -z "$WORKSTATIONLEFT" ];then
|
||||
echo "WORKSTATIONLEFT not defined, turning everything on"
|
||||
_allon
|
||||
fi
|
||||
@@ -54,7 +57,7 @@ _display_workstation() {
|
||||
echo "WORKSTATIONLEFT=$WORKSTATIONLEFT is not connected, turning everything on"
|
||||
_allon
|
||||
}
|
||||
if [ -z "$WORKSTATIONRIGHT" ];then
|
||||
if [ -z "$WORKSTATIONRIGHT" ];then
|
||||
# Single display setup
|
||||
_xrandr --output "$WORKSTATIONLEFT" --auto --gamma $g:$g:$g
|
||||
xrandr | grep " connected" | awk '{ print $1 }' | grep -v "$WORKSTATIONLEFT" | while read display; do
|
||||
@@ -71,7 +74,7 @@ _display_workstation() {
|
||||
xrandr | grep " connected" | awk '{ print $1 }' | grep -v "$WORKSTATIONLEFT" | grep -v "$WORKSTATIONRIGHT" | while read display; do
|
||||
_xrandr --output $display --off
|
||||
done
|
||||
|
||||
|
||||
}
|
||||
_isconnected() {
|
||||
xrandr | grep -q "${1} connected"
|
||||
@@ -87,7 +90,11 @@ _setup() {
|
||||
# config
|
||||
mkdir -p "$CONFIGFOLDER"
|
||||
[[ -f "$CONFIG" ]] || {
|
||||
echo "$TEMPLATE" > "$CONFIG"
|
||||
{
|
||||
echo '#Displays seen by the system:'
|
||||
xrandr | grep connected | awk '{ print "#"$1": "$2 }'
|
||||
echo "$TEMPLATE"
|
||||
} > "$CONFIG"
|
||||
FIRST=$( xrandr | grep connected | head -n1 | awk '{ print $1 }' )
|
||||
sed -i 's,^MAIN=.*,MAIN='$FIRST',' "$CONFIG"
|
||||
}
|
||||
@@ -107,29 +114,45 @@ _xrandr() {
|
||||
echo xrandr "$@"
|
||||
xrandr "$@"
|
||||
}
|
||||
_list_arandr() {
|
||||
test -d "$ARANDR_FOLDER" || return
|
||||
ls "$ARANDR_FOLDER" | head -n 6 | awk '{printf(" %d %s\n", NR+3, $0) }'
|
||||
}
|
||||
_run_arandr_script() {
|
||||
script_name=$( ls "$ARANDR_FOLDER"| awk 'NR=='$1'-3 {print $0}' )
|
||||
[[ -f "$ARANDR_FOLDER/$script_name" ]] && {
|
||||
echo Running script: $script_name
|
||||
sh -x "$ARANDR_FOLDER/$script_name"
|
||||
}
|
||||
}
|
||||
_help() {
|
||||
echo 'SBL-DISP
|
||||
|
||||
echo 'DISPtool
|
||||
|
||||
Running without arguments shows display configuration choices
|
||||
|
||||
|
||||
help Get this help message
|
||||
setup Setup display names
|
||||
all Try to turn all displays on
|
||||
|
||||
Following arguments require "setup"
|
||||
|
||||
Display configurations:
|
||||
|
||||
0 Run "arandr" to setup manually
|
||||
1 Main display only
|
||||
2 Presentation: Main and external screen clones
|
||||
3 Workstation: Run your workstation mode, setup in the configuration file
|
||||
|
||||
|
||||
Second argument to any previous sets the gamma correction value
|
||||
Configuration file: '$CONFIG'
|
||||
|
||||
Display settings saved with arandr are displayed last:
|
||||
'
|
||||
_list_arandr
|
||||
exit
|
||||
}
|
||||
|
||||
[[ -f "$CONFIG" ]] && . "$CONFIG"
|
||||
[[ -f "$CONFIG" ]] || CONFIGURED="(You do not have a configuration!)"
|
||||
|
||||
|
||||
# Sub functions exit on their own
|
||||
[[ "$1" = "help" ]] && _help
|
||||
@@ -142,23 +165,28 @@ if [ -z "$1" ]; then
|
||||
echo "Currently connected displays:"
|
||||
xrandr | grep --color=always -e ".* connected" -e '.*\*' | awk '{ print $1,$2,$3} '
|
||||
echo 'Menu choices:
|
||||
|
||||
|
||||
0 Run "arandr" to setup manually
|
||||
1 Main display only ('$MAIN')
|
||||
2 Presentation: Main and all external screen clones (1024x768)
|
||||
3 Workstation: Your personal configration ('$WORKSTATIONLEFT + $WORKSTATIONRIGHT', panel on '$PANEL')
|
||||
|
||||
a All displays on
|
||||
s Create and edit configuration '$CONFIGURED'
|
||||
|
||||
See further help by running with argument: -h
|
||||
Settings from arandr:
|
||||
'
|
||||
_list_arandr
|
||||
read -N 1 i
|
||||
echo ""
|
||||
fi
|
||||
|
||||
case $i in
|
||||
all) _allon; ;;
|
||||
setup) _setup; ;;
|
||||
0) arandr; ;;
|
||||
"a"*) _allon; ;;
|
||||
"s"*) _setup; ;;
|
||||
0) ( arandr & ); ;;
|
||||
1) _display_main; ;;
|
||||
2) _display_presentation; ;;
|
||||
3) _display_workstation; ;;
|
||||
[4-9]) _run_arandr_script $i; ;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user