Existe-t-il un moyen de désactiver des écrans individuels?

13

J'utilise xset pour éteindre mes écrans comme ceci:

xset dpms force off

Existe-t-il un moyen de désactiver un seul écran lorsque plusieurs sont associés au même écran X?

Neil
la source
@myrdd: Pouvez-vous expliquer ce que vous aimeriez voir amélioré spécifiquement?
David Foerster
Je voudrais connaître les détails: (a) Est -ce que la fonction désirée techniquement possible -Que est, aux écrans individuels « désactiver » (je ne? Pas moyen xrandr [...] --off) - (b) Y at - il des dépendances est -Que, fait la? Le chipset de la carte graphique et / ou le pilote doivent avoir une fonctionnalité spécifique? - (c) Étant donné que la fonctionnalité souhaitée n'est pas encore disponible (en tant que commande CLI), quelles seraient les prochaines étapes?
myrdd

Réponses:

4

Si vous utilisez Ubuntu Desktop, vous devriez pouvoir utiliser Système> Préférences> Moniteurs. Cela devrait montrer tous vos moniteurs, cliquer sur celui que vous souhaitez désactiver, puis utiliser les boutons radio «on / off» pour désactiver ce moniteur spécifique.

Si vous voulez le faire à partir de la ligne de commande, vous devriez pouvoir utiliser xrandr --output <name> --offpour désactiver la sortie qui devrait déclencher la mise hors tension du moniteur.

Andy
la source
1
Le problème est que lorsque vous utilisez Nvidia TwinView, les deux écrans apparaissent comme un seul pour xrandr et xset, vous ne pouvez donc pas éteindre les moniteurs individuellement. De plus, les préférences de Gnome Monitor sont désactivées et vous devez utiliser le contrôle du pilote Nvidia à la place. Lorsque vous désactivez l'un des moniteurs avec nvidia-settings, cela désactive complètement le moniteur, bloquant toutes vos fenêtres sur l'autre écran. Je veux juste éteindre un moniteur pour regarder un film sur l'autre.
Neil
@Neil Il est probablement utile d'ajouter vos informations matérielles à la question et de les étiqueter avec nvidia également.
Jorge Castro
2
@JorgeCastro ce n'est pas lié au matériel et à TwinView: il semble qu'il n'y ait aucun moyen d'éteindre un écran individuellement lorsqu'il est sur le même $ DISPLAY, sauf en le supprimant / le désactivant de la configuration RandR. Nous voulons par exemple éteindre l'écran de l'ordinateur portable, mais garder toutes les fenêtres à cet endroit.
blueyed
@muru vous êtes un singe d'édition! Je continue de voir tes modifications.
MathCubes
4

Problème avec la réponse existante

Bien qu'il y ait eu une réponse il y a sept ans avec trois votes positifs, elle n'a pas été acceptée car elle provoque la migration de toutes les fenêtres ouvertes sur l'écran d'arrêt vers les écrans actifs restants.

Luminosité basée sur le logiciel

Sur un ordinateur portable, vous pouvez contrôler la luminosité via la carte graphique contrôlant le panneau LCD. Avec les téléviseurs et les moniteurs externes, vous avez besoin d'une solution logicielle pour réduire la luminosité à 0. La ramener à zéro est la plus proche. J'ai eu l'illusion de l'éteindre tout en gardant les fenêtres actives sur cet écran externe.

Version courte

À partir de la ligne de commande (sans scripts), utilisez:

$ xrandr | grep " connected"
HDMI-0 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 1107mm x 623mm
eDP-1-1 connected primary 1920x1080+3840+2160 (normal left inverted right x axis y axis) 382mm x 215mm
DP-1-1 connected 3840x2160+1920+0 (normal left inverted right x axis y axis) 1600mm x 900mm

Cela vous montre la liste des noms de moniteur attribués par xrandr. Maintenant, si vous souhaitez DP-1-1désactiver la luminosité, utilisez:

xrandr --output DP-1-1 --brightness 0

Sony TV bash script

Voici l'un des trois scripts que j'ai écrits:

#!/bin/bash

# NAME: sony
# PATH: /mnt/e/bin
# DESC: Set brightness of Sony TV
# DATE: Dec 9, 2017.

if [[ $# -ne 1 ]]; then
    xrandr --verbose | grep -A5 "^HDMI-0" > /tmp/sony
    head -n1 /tmp/sony
    echo "$(tput setaf 1)" ; tail -n1 /tmp/sony ; echo "$(tput sgr0)"
    rm /tmp/sony
    echo 'One argument required for brightness level, e.g. "sony .63"'
    echo 'will set brightness level of Sony TV to level .63 using xrandr'
    exit 1
fi

xrandr --output HDMI-0  --brightness "$1"

Pour désactiver l'affichage, vous utiliseriez sony 0

Script d'appel sans paramètres

Lorsque vous appelez le script sans paramètres, il affiche le xrandrnom de l' écran ainsi que la luminosité actuelle en rouge. Vous pouvez changer la couleur rouge en une autre en modifiant cette ligne:

echo "$(tput setaf 1)" ; tail -n1 /tmp/sony ; echo "$(tput sgr0)"

Après avoir setafchangé le 1en:

  • 2 pour le vert
  • 3 pour l'orange
  • 4 pour le bleu, etc.

Modification et installation du script

Modifiez les deux occurrences de HDMI-0pour correspondre à votre nom d'écran. Vous pouvez obtenir une liste de tous vos écrans en tapant xrandrdans le terminal.

Placez le script dans un répertoire de votre chemin tel que:

/usr/local/bin/sony

Marquez le script comme exécutable en utilisant:

sudo chmod a+x /usr/local/bin/sony

Choisir quel répertoire: /usr/local/binvs~/bin

Lorsque vous créez des scripts, /usr/local/binvous devez utiliser des sudopouvoirs. Une meilleure alternative consiste à utiliser le répertoire ~/binqui est un raccourci pour /home/YourUserID/bin:

  • créer le répertoire ~/bin
  • fermez votre terminal et rouvrez-le.
  • le répertoire nouvellement créé est maintenant dans votre chemin.
  • tous les scripts que vous créez ~/binpeuvent être créés avec vos autorisations habituelles.
  • pour activer l'exécution de vos scripts, il vous suffit d'utiliser chmod +xplutôt que chmod a+x(ce qui asignifie tous les utilisateurs)
WinEunuuchs2Unix
la source
2
Merci pour votre réponse. Je ne connaissais pas l' xrandr [...] --brightnessoption. Notez que vous avez parlé des écrans Sony en particulier, mais que cela --brightnessdevrait également fonctionner pour tout autre écran. J'ai testé --brightnesssur mon ordinateur portable et cela a fonctionné. Cependant, je --brightness 0n'ai pas éteint le rétro-éclairage… - J'ai également testé --brightnesssur mon ordinateur de bureau: malheureusement, les écrans ne sont restés noirs que pendant 1 ou 2 secondes . Après ces 1 à 2 secondes, la luminosité est réinitialisée automatiquement. Je suppose que cela fonctionne dépend fortement de la combinaison gpu + driver + screen.
2017
1
@myrdd J'ai en fait trois scripts sony , toshiba et alien pour deux écrans externes et un écran d'ordinateur portable intégré. Oui, le rétro-éclairage ne s'éteint pas, vous n'obtenez donc pas de "noir pur", mais c'est une solution de rechange étroite. La réinitialisation automatique de 1 à 2 secondes n'affecte aucun de mes écrans, mais j'exécutais des pilotes nVidia pour le port HDMI nVidia câblé et le pilote nVidia prenant le contrôle d'Intel HD530 iGPU deux écrans - Thunderbolt3 et intégré.
WinEunuuchs2Unix
aucun script n'est nécessaire, exécutez simplement xrandr pour trouver l'ID de sortie, puis xrandr --output HDMI-1 --brightness 0simplifiez la réponse
brauliobo
2
@brauliobo Plutôt que de supprimer la majeure partie de la réponse, j'ai mis une version courte tout en haut qui, je pense, est un compromis.
WinEunuuchs2Unix