user@linuxtrack:~ $ python -c 'print("Soyez les bienvenus !")'

Vous n'êtes pas identifié(e).

#1 08-05-2014 20:36:39

azgarech
Crazy one

Automatiser le switch des moniteurs avec xandr

J'utilise Viperr et pour le moment sur la version 5 on utilise xandr qui ne permet pas de faire de switch auto lorsque l'on plug un moniteur.
J'ai donc créé un petit script qui se lance depuis l'autostart. pour info VGA1 est le port VGA sur mon portable et DP2 est le port VGA qui est sur mon dock.
N'hésitez pas à commenter car si je peux l'améliorer je suis preneur .

#!/bin/bash

# nouveau mode pour le VGA ( sinon ma télé n'est pas détecté comme compatible 1920*1080)
xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync
xrandr --addmode VGA1 1920x1080

# moniteur par défaut eDP1
MONITOR=eDP1

# fonction pour switcher entre le mode double écran et mono écran et vice versa
function ActivateVGA {
    echo "Switching to VGA1"
    xrandr --output VGA1 --auto --left-of eDP1 --output eDP1 --auto
    MONITOR=VGA1
    nitrogen --restore
}
function ActivateDP2 {
    echo "Switching to DP2"
    xrandr --output DP2 --auto --left-of eDP1 --output eDP1 --auto
    MONITOR=DP2
    nitrogen --restore
}
function DeactivateDP2 {
    echo "Switching to eDP1"
    xrandr --output DP2 --off --output eDP1 --auto
    MONITOR=eDP1
    nitrogen --restore
}
function DeactivateVGA {
    echo "Switching to eDP1"
    xrandr --output VGA1 --off --output eDP1 --auto
    MONITOR=eDP1
    nitrogen --restore
   }

# fonction qui vérifie si le VGA ou DP2 est branché
function VGAActive {
    [ $MONITOR = "VGA1" ]
}
function VGAConnected {
    ! xrandr | grep "^VGA1" | grep disconnected
}
function DP2Active {
    [ $MONITOR = "DP2" ]
}
function DP2Connected {
    ! xrandr | grep "^DP2" | grep disconnected
}


# script faisant l'activation ou la désactivation
while true
do
    if ! DP2Active && DP2Connected
    then
        ActivateDP2
    fi

    if DP2Active && ! DP2Connected
    then
        DeactivateDP2
    fi
   
    if ! VGAActive && VGAConnected
    then
        ActivateVGA
    fi

    if VGAActive && ! VGAConnected
    then
        DeactivateVGA
    fi

    sleep 1s
done

Dernière modification par azgarech (08-05-2014 20:37:13)


Security is always excessive until it’s not enough. — Robbie Sinclair

Hors ligne

#2 09-05-2014 17:42:01

IceF0x
#! Gourou Linux

Re : Automatiser le switch des moniteurs avec xandr

Je déplace section script bash car ça n'a pas vraiment sa place dans Openbox.


Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

#3 09-05-2014 18:02:35

IceF0x
#! Gourou Linux

Re : Automatiser le switch des moniteurs avec xandr

Chez moi le nom n'est pas VGA1 mais VGA-1 ce n'est donc pas portable entre distribution mais réservé à ton cas particulier.

Essaye ceci.

#!/bin/bash

# nouveau mode pour le VGA ( sinon ma télé n'est pas détecté comme compatible 1920*1080)
xrandr --newmode "1920x1080" 148.5 1920 2008 2052 2200 1080 1089 1095 1125 +hsync +vsync
xrandr --addmode VGA1 1920x1080

# moniteur par défaut eDP1
MONITOR=eDP1

# fonction pour switcher entre le mode double écran et mono écran et vice versa
ActivateVGA(){
    echo "Switching to VGA1"
    xrandr --output VGA1 --auto --left-of eDP1 --output eDP1 --auto
    MONITOR=VGA1
    nitrogen --restore
}
ActivateDP2(){
    echo "Switching to DP2"
    xrandr --output DP2 --auto --left-of eDP1 --output eDP1 --auto
    MONITOR=DP2
    nitrogen --restore
}
DeactivateDP2(){
    echo "Switching to eDP1"
    xrandr --output DP2 --off --output eDP1 --auto
    MONITOR=eDP1
    nitrogen --restore
}
DeactivateVGA(){
    echo "Switching to eDP1"
    xrandr --output VGA1 --off --output eDP1 --auto
    MONITOR=eDP1
    nitrogen --restore
}

# fonction qui vérifie si le VGA ou DP2 est branché
VGAActive(){
    [ $MONITOR = "VGA1" ]
}
VGAConnected(){
    ! xrandr | grep "^VGA1" | grep disconnected
}
DP2Active(){
    [ $MONITOR = "DP2" ]
}
DP2Connected(){
    ! xrandr | grep "^DP2" | grep disconnected
}

# script faisant l'activation ou la désactivation
while sleep 1
  do
    if ! DP2Active && DP2Connected
    then
        ActivateDP2
    fi

    if DP2Active && ! DP2Connected
    then
       DeactivateDP2
    fi
       
    if ! VGAActive && VGAConnected
    then
       ActivateVGA
    fi

    if VGAActive && ! VGAConnected
    then
       DeactivateVGA
    fi
done

Utiliser des logiciels propriétaires, c'est comme les plats préparés, on est incapable de dire les conservateurs qu'ils contiennent, on dira toujours que c'est bon, mais ça ne remplacera jamais le repas fait maison par sa maman.
]:D #! Crunchbang & Archlinux GNU/Linux User ]:D

Hors ligne

Pied de page des forums