Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 12/02/2020, à 13:15

LukePerp

[Résolu] Comment identifier l'écran actif ?

Bonjour,
Comment identifier sur quel écran est affiché l'affichage? C'est à dire comment détecter quel écran est actif ? Je souhaite faire un script et l'associer à un raccourci clavier pour permuter l'affichage ainsi :

Moniteur seul
TV seul
Clone moniteur et tv

J'ai presque terminé mon projet, via mon script je sais permuter l'affichage sur les écrans, mais il me reste à trouver comment détecter quel écran est actif. C'est à dire comment déterminer sur quel écran est affiché l'affichage ? Oui parce que la permutation dépend de l'état actuel de l'affichage. Je ne parle pas de lister les écrans connectés mais des écrans dont l'image est affiché. Pourriez vous m'aider svp ?

Dernière modification par LukePerp (Le 14/02/2020, à 10:33)


Desktop & Laptop - Ubuntu Mate dernière LTS - Intel i5 - 16 Go - Dual boot Windows offline

Hors ligne

#2 Le 14/02/2020, à 10:32

LukePerp

Re : [Résolu] Comment identifier l'écran actif ?

Trouvé sur stack overflow :

get_active_monitors()
{
    xrandr | awk '/\ connected/ && /[[:digit:]]x[[:digit:]].*+/{print $1}'
}

EcranActif=$(get_active_monitors)

echo "Ecran actif : $EcranActif"

Dernière modification par LukePerp (Le 15/02/2020, à 13:58)


Desktop & Laptop - Ubuntu Mate dernière LTS - Intel i5 - 16 Go - Dual boot Windows offline

Hors ligne

#3 Le 15/02/2020, à 03:57

kamaris

Re : [Résolu] Comment identifier l'écran actif ?

Il y a deux petites erreurs dans le programme awk, même s'il doit s'en sortir au final :

awk '/ connected/ && /[[:digit:]]x[[:digit:]].*\+/{print $1}'

Hors ligne

#4 Le 15/02/2020, à 13:57

LukePerp

Re : [Résolu] Comment identifier l'écran actif ?

kamaris a écrit :

Il y a deux petites erreurs dans le programme awk, même s'il doit s'en sortir au final :

awk '/ connected/ && /[[:digit:]]x[[:digit:]].*\+/{print $1}'

Je prends ton code, merci. Pourrais tu expliquer les différences car je ne comprends pas encore le langage awk.
Edit : oops, j'ai remplacé la solution par ton code et on ne peux plus comparer

Résultat de mon script pour permuter l'affichage :
https://forum.kubuntu-fr.org/viewtopic.php?pid=22221629

Dernière modification par LukePerp (Le 15/02/2020, à 14:10)


Desktop & Laptop - Ubuntu Mate dernière LTS - Intel i5 - 16 Go - Dual boot Windows offline

Hors ligne

#5 Le 15/02/2020, à 14:26

kamaris

Re : [Résolu] Comment identifier l'écran actif ?

Eh bien en fait, ça n'est pas spécifique à awk, mais aux expressions régulières étendues que awk utilise (comme grep -E, ou sed -E).
D'une part, il n'y a pas de raison d'échapper un espace, comme c'est fait dans

\ connected

Ce n'est pas vraiment une erreur, l'antislash sera simplement ignoré, mais awk te signalera un warning à ce propos si tu l'utilises avec l'option --lint.

D'autre part, le motif « .*+ », s'il était voulu, n'aurait pas de sens, ou en tout cas pas d'intérêt : n'importe quel caractère (« . ») répété zéro ou plusieurs fois (« * ») répété une ou plusieurs fois (« + »).
Mais il n'est très certainement pas voulu : « + » doit être considéré au sens littéral, comme un motif à rechercher dans la sortie de xrandr, et pour ça il doit être protégé : « \+ ».
Si on travaillait avec des expressions régulières basiques, comme dans grep ou sed (sans l'option -E), ça ne serait pas le cas.

Hors ligne