Ubuntu – Comment lister les affichages actifs (en ligne de commande)

 xrandr -q me donne une liste des écrans connectés, mais comment puis-je savoir (script friendly) si un écran est actuellement actif?

Le contexte:
Je voudrais écrire un script pour basculer un affichage. S’il est actif, il doit être désactivé, s’il ne l’est pas, il doit être activé.

Remarque: xrandr -q fournit essentiellement ces informations puisque les modes actifs sont marqués d’un * , mais ces informations sont difficiles à extraire dans un script bash.

Meilleure réponse

  • Les affichages actifs ont leur résolution et leur numéro de décalage affichés dans la ligne xrandr production. Voici ce que je veux dire:

     $ xrandr | grep connected                                    
    eDP1 connected primary 1366x768+1280+256 (normal left inverted right x axis y axis) 345mm x 194mm
    DP1 disconnected (normal left inverted right x axis y axis)
    HDMI1 disconnected (normal left inverted right x axis y axis)
    VGA1 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 340mm x 270mm
    VIRTUAL1 disconnected (normal left inverted right x axis y axis)
     

    Dans la sortie, vous pouvez voir que le moniteur intégré de mon ordinateur portable et le VGA1 sont tous deux connectés et ont une résolution (en cas d’affichage intégré eDP1, il est de 1366×768). Ainsi, la tâche devient simplement un traitement de texte de la sortie. À cet effet, j’ai écrit une petite fonction que vous pouvez utiliser dans vos scripts ou ~/.bashrc :

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