[XRANDR]Basculer d'un ecran a un autre -Script-(Re en cours)
[XRANDR]Basculer d'un ecran a un autre -Script-(Re en cours)
Bonjour à tous,
Je suis possesseur d'un netbook, et ayant un ecran vga a disposition, je profite de celui ci pour regarder mes films.
Seulement voila, l'utilisation de lxrandr est un peu fastidieuse (oui ok c'est trois click, mais c'est trois click de trop) surtout parce qu'il faut penser a switcher d'ecran avant de débrancher le vga (et comme je ne pense a rien en ce moment, ça m'énerve). Etant sous kde j'ai aussi tenté via le gestionnaire de moniteurs de regler mon probleme (plutot pas tres pratique je trouve)
Donc je me posais la question : est ce que vous connaissez un ptit script basique a base de xrandr de if de then et de else me permettant de basculer en une touche vers le vga quand celui ci est connecté, et vers l'écran natif du netbook lorsque le vga est débranché.
Ou encore mieux : Je branche le vga, et bim! mon ecran de netbook s'eteint et le vga prends le relais. Je le débranche et bim! ça reviens sur le netbook.
(ce serait l'idéal a vrai dire....)
Merci d'avance !
Je suis possesseur d'un netbook, et ayant un ecran vga a disposition, je profite de celui ci pour regarder mes films.
Seulement voila, l'utilisation de lxrandr est un peu fastidieuse (oui ok c'est trois click, mais c'est trois click de trop) surtout parce qu'il faut penser a switcher d'ecran avant de débrancher le vga (et comme je ne pense a rien en ce moment, ça m'énerve). Etant sous kde j'ai aussi tenté via le gestionnaire de moniteurs de regler mon probleme (plutot pas tres pratique je trouve)
Donc je me posais la question : est ce que vous connaissez un ptit script basique a base de xrandr de if de then et de else me permettant de basculer en une touche vers le vga quand celui ci est connecté, et vers l'écran natif du netbook lorsque le vga est débranché.
Ou encore mieux : Je branche le vga, et bim! mon ecran de netbook s'eteint et le vga prends le relais. Je le débranche et bim! ça reviens sur le netbook.
(ce serait l'idéal a vrai dire....)
Merci d'avance !
Dernière modification par ed0c le jeu. 12 mai 2011, 17:44, modifié 2 fois.
Re: [XRANDR]Basculer d'un ecran a un autre en 1 touche(en co
Salut,
Alors rien qu'avec une touche ça risque d'être chaud à moins que tu n'aies un clavier de gamer ; mais avec une combinaison de touches, tu devrais pouvoir trouver ton bonheur sur cette page.
Alors rien qu'avec une touche ça risque d'être chaud à moins que tu n'aies un clavier de gamer ; mais avec une combinaison de touches, tu devrais pouvoir trouver ton bonheur sur cette page.
Combattu souvent, battu parfois, abattu jamais ! (François de Charette)
Re: [XRANDR]Basculer d'un ecran a un autre en 1 touche(en co
Oui je viens juste de lire ça... mais c'est pas vraiment ce que je recherche. (Merci tout de meme !)
Je suis tombé sur le wiki et c'est a peu pres le genre de script que je cherche. Hormis le fait que le script permet un mode "clone".
Vous savez comment le modifier afin de ne pouvoir avoir qu'un seul ecran de visible?
J'ai essayé de le modifier sans succes...J'avoue etre une vrai bille en programmation..
Je suis tombé sur le wiki et c'est a peu pres le genre de script que je cherche. Hormis le fait que le script permet un mode "clone".
Vous savez comment le modifier afin de ne pouvoir avoir qu'un seul ecran de visible?
J'ai essayé de le modifier sans succes...J'avoue etre une vrai bille en programmation..

Code : Tout sélectionner
#!/bin/bash
#
# This script toggles the extended monitor outputs if something is connected
#
# your notebook monitor
DEFAULT_OUTPUT='LVDS1'
# outputs to toggle if connected
OUTPUTS='VGA1'
# get info from xrandr
XRANDR=`xrandr`
EXECUTE=""
for CURRENT in $OUTPUTS
do
if [[ $XRANDR == *$CURRENT\ connected* ]] # is connected
then
if [[ $XRANDR == *$CURRENT\ connected\ \(* ]] # is disabled
then
EXECUTE+="--output $CURRENT --auto --above $DEFAULT_OUTPUT "
else
EXECUTE+="--output $CURRENT --off "
fi
else # make sure disconnected outputs are off
EXECUTE+="--output $CURRENT --off "
fi
done
xrandr --output $DEFAULT_OUTPUT --auto $EXECUTE
Re: [XRANDR]Basculer d'un ecran a un autre en 1 touche(en co
Déjà peux-tu poster la sortie de la commande "$ xrandr" ?
Edit : Essayes avec ça, il faut modifier EXTERNAL/INTERNAL_OUTPUT en fonction de ce qui ressort de la commande précédente.
Edit : Essayes avec ça, il faut modifier EXTERNAL/INTERNAL_OUTPUT en fonction de ce qui ressort de la commande précédente.
Code : Tout sélectionner
#!/bin/bash
EXTERNAL_OUTPUT="VGA"
INTERNAL_OUTPUT="LVDS"
xrandr | grep $EXTERNAL_OUTPUT | grep " connected "
if [ $? -eq 0 ]; then
xrandr --output $INTERNAL_OUTPUT --off --output $EXTERNAL_OUTPUT --auto
else
xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --off
fi
Combattu souvent, battu parfois, abattu jamais ! (François de Charette)
Re: [XRANDR]Basculer d'un ecran a un autre en 1 touche(en co
Superbe !!! Merci hansi!
Exactement ce que je recherchais...!
[Partisan du moindre effort]Par hasard, tu ne connaîtrais pas un moyen pour appliquer ce script lorsque je branche mon cable VGA ce script s'applique automatiquement, et que losrque je le débranche, il se réapplique a nouveau..?[/Partisan du moindre effort]
Edit: Petite question de culture G. J'ai compris les quelques lignes de code bash que tu as écris, hormis cette partie:
Je comprends bien ce que ça veut dire par la suite du code: en gros, si l'ecran externe est branché, il exécute la commande permettant la bascule vers celui-ci et inversement... dans le cas inverse (pas tres français tout ça)
Je croiS comprendre aussi que la suite de caractères $? fait appel au résultat de la commande précédente, et que le "-eq 0" signifie "égal 0". Mais si c'est cela, la logique voudrait que 0 signifie "pas de résultat à la commande précédente". Hors la suite des événements semble indiquer le contraire.
(Ok c'est con comme question, mais je n'ai aucune base de programmation et je suis curieux)
Exactement ce que je recherchais...!
[Partisan du moindre effort]Par hasard, tu ne connaîtrais pas un moyen pour appliquer ce script lorsque je branche mon cable VGA ce script s'applique automatiquement, et que losrque je le débranche, il se réapplique a nouveau..?[/Partisan du moindre effort]
Edit: Petite question de culture G. J'ai compris les quelques lignes de code bash que tu as écris, hormis cette partie:
Code : Tout sélectionner
if [ $? -eq 0 ]; then
Je croiS comprendre aussi que la suite de caractères $? fait appel au résultat de la commande précédente, et que le "-eq 0" signifie "égal 0". Mais si c'est cela, la logique voudrait que 0 signifie "pas de résultat à la commande précédente". Hors la suite des événements semble indiquer le contraire.
(Ok c'est con comme question, mais je n'ai aucune base de programmation et je suis curieux)
- jaco
- Chu Ko Nu
- Messages : 344
- Inscription : ven. 18 mars 2011, 23:42
- Localisation : Toulouse, France
Re: [XRANDR]Basculer d'un ecran a un autre en 2 touches (Rés
Sous Unix, une commande qui se termine correctement est censée renvoyer 0.
Code : Tout sélectionner
$ ls
(...)
$ echo $?
0
$ ls machin
ls: machin: No such file or directory
$ echo $?
1
Re: [XRANDR]Basculer d'un ecran a un autre en 2 touche(en co
C'est bizarre ton script marche tres bien dans le terminal, mais lorsque je l'affecte a une touche, il ne veut pas fonctionner. Mais ce n'est pas grave, j'ai un peu étudié la chose, et j'ai légerement le script que j'avais récupéré sur le wiki :
Ca me permet en lancant le script une fois de basculer sur l'autre écran, la deuxieme fois, de basculer en mode clone, et lorsqu'il est débranché de revenir sur l'ecran du netbook.
Je me suis rendu compte qu'il n'était pas possible d'inclure des "else" indéfiniment.
Par exemple :
ça, ça ne fonctionne pas
. C'est con, vu que ça aurait été pas mal de passer en "VGA1 seul"/clone/"LVDS1 seul" en une touche, que le VGA soit ou non connecté.
Des idées peut etre?
Code : Tout sélectionner
#!/bin/bash
#
# This script toggles the extended monitor outputs if something is connected
#
# your notebook monitor
DEFAULT_OUTPUT='LVDS1'
# outputs to toggle if connected
OUTPUTS='VGA1'
# get info from xrandr
XRANDR=`xrandr`
EXECUTE=""
for CURRENT in $OUTPUTS
do
if [[ $XRANDR == *$CURRENT\ connected* ]] # is connected
then
if [[ $XRANDR == *$CURRENT\ connected\ \(* ]] # is disabled
then
EXECUTE+="--output $CURRENT --auto --output $DEFAULT_OUTPUT --off "
else
EXECUTE+="--output $CURRENT --above $DEFAULT_OUTPUT"
fi
else # make sure disconnected outputs are off
EXECUTE+="--output $CURRENT --off "
fi
done
xrandr --output $DEFAULT_OUTPUT --auto $EXECUTE
Je me suis rendu compte qu'il n'était pas possible d'inclure des "else" indéfiniment.
Par exemple :
Code : Tout sélectionner
if [[ $XRANDR == *$CURRENT\ connected\ \(* ]] # is disabled
then
EXECUTE+="--output $CURRENT --auto --output $DEFAULT_OUTPUT --off "
else
EXECUTE+="--output $CURRENT --above $DEFAULT_OUTPUT"
else
EXECUTE+="--output $CURRENT --off "
fi

Des idées peut etre?
Re: [XRANDR]Basculer d'un ecran a un autre en 2 touches (Rés
Alors pour un changement automatique au branchement il faut jouer avec l'ACPI et ça dépend vraiment du modèle du portable donc je ne sais vraiment pas comment faire si tu n'as pas un Thinkpad...
Je ne suis pas l'auteur du script j'ai juste adapté celui de Thinkwiki à ton cas... et comme j'y connais rien en bash vaut mieux que tu regarde dans la doc ou que quelqu'un qui s'y connait réponde à ta question
Edit : et si tu remplace le deuxième else par elif ?
Je ne suis pas l'auteur du script j'ai juste adapté celui de Thinkwiki à ton cas... et comme j'y connais rien en bash vaut mieux que tu regarde dans la doc ou que quelqu'un qui s'y connait réponde à ta question

Edit : et si tu remplace le deuxième else par elif ?
Combattu souvent, battu parfois, abattu jamais ! (François de Charette)
Re: [XRANDR]Basculer d'un ecran a un autre en 2 touches (Rés
Merci Jaco! Pas tres logique si je peux me permettre tout ça.jaco a écrit :Sous Unix, une commande qui se termine correctement est censée renvoyer 0.

Bon ça me rassure j'avais compris le script...
Re: [XRANDR]Basculer d'un ecran a un autre en 2 touches (Rés
Non ça ne marche pas..hansi a écrit : Edit : et si tu remplace le deuxième else par elif ?
je pense que le script devrait etre construit en
Code : Tout sélectionner
1--> si le VGA1 est connecté, basculer en VGA1
1'--> si 1 a été effectué, basculer en clone
1''--> si 1' a été effectué, basculer sur l'écran du LVDS1
2--> si le VGA1 est déconnecté, basculer sur LVDS1
Merci pour ton aide hansi!
Si quelqu'un veut bien m'aider... Merci d'avance !
- benjarobin
- Maître du Kyudo
- Messages : 17624
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [XRANDR]Basculer d'un ecran a un autre -Script-(Re en co
Pour faire ta condition tu vas être obligé de passer par un fichier temporaire (placé dans /tmp/) pour te souvenir de l'état précédent.
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [XRANDR]Basculer d'un ecran a un autre -Script-(Re en co
C'est ce que je pense (mais si je ne vois pas comment), mais pourquoi dans ce cas le script que j'utilise plus haut me fait :
1 --> basculer vers VGA1
2 --> basculer en mode clone
Ceci, sans fichier dans tmp...
1 --> basculer vers VGA1
2 --> basculer en mode clone
Ceci, sans fichier dans tmp...