Basculer les moniteurs à partir de la ligne de commande

21

Depuis que j'ai trouvé une méthode différente pour atteindre mon objectif et qu'aucune réponse n'a été publiée à ma question précédente, j'ai changé la question pour qu'elle corresponde à la réponse que j'ai trouvée.

Existe-t-il un moyen d'éteindre le moniteur de mon ordinateur portable et d'allumer le moniteur externe (et vice-versa) entièrement à partir de la ligne de commande?

Malabarba
la source
Je cherchais juste exactement la même chose et je suis tombé sur cette question que vous avez posée il y a seulement 7 minutes. C'est génial. J'espère que vous obtiendrez une réponse.
JD Long
Je sais que vous pouvez déposer un élémentaire xorg.confdans le /root/yorg.conf.newrépertoire root ( ), si vous démarrez en mode de récupération et exécutez X --configure(ou similaire).
Bobby
le problème (au moins pour moi) est que je ne veux pas écrire un xorg.conf à la main. Je veux vider mes paramètres actuels au format xorg.conf, puis modifier les paramètres avec l'interface graphique, puis les vider dans un fichier. Ensuite, je peux écrire un script pour changer entre les deux paramètres très facilement. Pour l'instant, je dois aller dans l'interface graphique et cliquer une demi-douzaine de fois pour modifier mes paramètres.
JD Long
@JD Long: C'est exactement ce que j'essaie de faire aussi. Assurez-vous d'écrire ici si vous trouvez un moyen. Les deux seules choses manquantes pour mon script sont les fichiers xorg.conf et une commande pour rafraîchir les affichages actuels (sans avoir à faire redémarrer gdm).
Malabarba
J'ai expérimenté Disper aujourd'hui ( willem.engen.nl/projects/disper ). Le fichier d'aide montre une option -p qui est censée exporter. Seul ce commutateur n'est pas implémenté. trombone triste
JD Long

Réponses:

28

Avec les commandes

xrandr --output VGA-0 --auto
xrandr --output LVDS --off 

L'écran passe automatiquement à l'affichage externe. Il n'a même pas besoin de pouvoirs sudo. Pour connaître le nom des écrans, il suffit de:

xrandr -q

Ce qui devrait donner quelque chose comme:

VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 338mm x 270mm
...
LVDS connected (normal left inverted right x axis y axis)
...

L'extension des affichages peut probablement être réalisée d'une manière similaire.

Malabarba
la source
J'obtiens le message "Impossible d'ouvrir l'affichage" lors de l'exécution de xrandr (avec des drapeaux). Quelle peut être la raison?
brandizzi
4
Si xrandr -qdonne LVDS1& VGA1: externe uniquement: xrandr --output VGA1 --auto --output LVDS1 --off. Extended gauche, primaire interne: xrandr --output VGA1 --auto --left-of LVDS1 --output LVDS1 --auto --primary. Extended gauche, primaire externe: xrandr --output VGA1 --auto --left-of LVDS1 --primary --output LVDS1 --auto. Interne uniquement: xrandr --output VGA1 --off --output LVDS1 --auto.
Bonne réponse! Peut-être vaut-il la peine d'expliquer aux débutants lequel sera généralement l'interne et l'externe entre VGA et LVDS?
Matifou
4

Ce n'est certainement PAS une réponse directe à votre question. Mais je l'ai trouvé utile dans mon cas d'utilisation. Ce n'est pas une exportation du fichier de configuration, mais cela montre comment automatiser disper dans un script shell. Je configure cela pour qu'il s'exécute chaque fois que j'arrive / déconnecte et cela semble résoudre mes problèmes d'affichage lors de l'amarrage et du désamarrage de mon ordinateur portable:

Vous devez avoir disper et Python installés.

#!/bin/sh
#
# Detect displays and move panels to the primary display
#

PYTHON=python2.6
DISPER=/usr/bin/disper

# disper command will detect and configure monitors
$PYTHON $DISPER --displays=auto -e -t left

# parse output from disper tool how many displays we have attached
# disper prints 2 lines per displer
lines=`$PYTHON $DISPER -l|wc -l`

display_count=$((lines / 2))

echo $display_count

echo "Detected display count:" $display_count

# Make sure that we move panels to the correct display based
# on the display count
if [ $display_count = 1 ] ; then
    echo "Moving panels to the internal LCD display"
    gconftool-2 \
    --set "/apps/panel/toplevels/bottom_panel_screen0/monitor" \
    --type integer "0"
    gconftool-2 \
    --set "/apps/panel/toplevels/top_panel_screen0/monitor" \
    --type integer "0"
    sleep 5
    pkill gnome-panel
else
    echo "Moving panels to the external display"
    gconftool-2 \
    --set "/apps/panel/toplevels/top_panel_screen0/monitor" \
    --type integer "1"
    gconftool-2 \
    --set "/apps/panel/toplevels/bottom_panel_screen0/monitor" \
    --type integer "1"
    sleep 5
    pkill gnome-panel
fi
JD Long
la source
Disper semble être un outil utile. Je vais l'examiner et voir si je peux l'adapter à mon cas. La seule différence est que je souhaite désactiver le moniteur de l'ordinateur portable au lieu de l'étendre. C'est un peu plus fluide sur mon ordinateur portable bas de gamme et il gère automatiquement les panneaux.
Malabarba
À la réflexion, ma carte vidéo ati peut ne pas être prise en charge, car ils prétendent uniquement prendre en charge nvidia.
Malabarba
Ok, la page diper m'a conduit à cette page: thinkwiki.org/wiki/Sample_Fn-F7_script Il s'avère qu'il est assez facile de changer de moniteur avec la commande xrandr.
Malabarba
merci d'avoir publié le lien xrandr. Je vais enquêter là-dessus. Je marmonne avec les mêmes trucs. FWIW, mon ordinateur portable a une carte Intel et j'utilise Disper sans problème.
JD Long