Comment réinitialiser les paramètres du moniteur aux paramètres par défaut via le terminal?

32

J'ai un problème épineux concernant plusieurs moniteurs sur KDE (Kubuntu). J'ai un ordinateur portable qui, à la maison, est connecté à deux écrans - VGA et HDMI. Cela ne fonctionne que lorsque l'écran d'ordinateur portable intégré est désactivé (au moins, on m'a dit cela).

Le problème est que maintenant, j'ai pris l'ordinateur portable et l'ai démarré sans aucun moniteur externe connecté. Le système se souvient que l'affichage intégré était désactivé, il le désactive même s'il s'agit du seul moniteur connecté. Évidemment, cela rend l'ordinateur portable pratiquement inutilisable. Passer à un terminal via Ctrl+ Alt+ F#fonctionne, je peux me connecter; même Guest fonctionne normalement.

La question est de savoir comment puis-je (re) configurer les paramètres de surveillance d'un compte via des terminaux, étant donné que je ne peux pas utiliser l'interface graphique?

Merci

Martin Melka
la source
3
Question connexe avec une réponse récente concernant ce xrandrqui pourrait être utile.
2
Cela m'a aidé lorsque je pouvais utiliser la console sur le deuxième moniteur, xrandr était en mesure de définir mes paramètres. Cependant, quand je ne peux utiliser que le terminal non-gui, xrandr dit qu'il ne peut pas ouvrir l'affichage, il est donc plutôt inutile.
Martin Melka
Comment avez-vous désactivé l'affichage de l'ordinateur portable intégré?
Noisette à propos de natty
Je ne sais pas s'il existe une différence significative par rapport à KDE, mais dans Ubuntu standard, cela fonctionne très bien pour moi (avec le moniteur interne désactivé via l'interface graphique, le couvercle de l'ordinateur portable étant fermé et l'ordinateur portable confortablement installé dans sa station d'accueil).
Noisette à propos de natty
1
voulez-vous dire que je dois définir les paramètres chaque fois que j'utilise un ordinateur portable avec ou sans moniteur externe? Si oui, ça craint. Quoi qu'il en soit, j'ai besoin de savoir comment le faire grâce à tty
Martin Melka Le

Réponses:

9

Bonne question. Un peu délicat à répondre, mais voici un essai.

Réponse de base

Il existe en fait une petite possibilité de réinitialisation incluse dans X11 . Vous pouvez le trouver à /etc/X11/Xreset. Vous pouvez utiliser le répertoire Xreset ( Xreset.d) pour coller un script qui s'exécute automatiquement lorsqu'un utilisateur se déconnecte. Le fichier README:

# Scripts in this directory are executed as root when a user log out from
# a display manager using /etc/X11/Xreset.
# The username of the user logging out is provided in the $USER environment
# variable.

Vous pouvez donc a) ajouter un script de réinitialisation /etc/X11/Xreset.det b) créer un script associé à un programme de lancement qui configure vos doubles affichages externes. En tant que tel, vous vous déconnecteriez et tout serait revenu à la normale, vous vous connecteriez à votre ordinateur portable, vous lanceriez dans le lanceur pour les écrans et vous profiteriez de la vie.

Plus d'information

  1. Vous voudrez peut-être envisager sudo dpkg-reconfigure -phigh xserver-xorgde réinitialiser le serveur x ou (probablement mieux de regarder la réponse suggérée par Mik dans les commentaires).

  2. Un gars de SuSE a écrit un bon article sur X.

  3. Dans un rapport de bug résolu, quelqu'un dit:

    Les administrateurs peuvent déposer des scripts dans /etc/X11/Xreset.d/ pour s'exécuter après la déconnexion de l'utilisateur.

  4. Voici le contenu du fichier:

Vous pouvez le trouver sur votre propre système.

#!/bin/sh
#
# /etc/X11/Xreset
#
# global Xreset file -- for use by display managers

# $Id: Xsession 967 2005-12-27 07:20:55Z dnusinow $

set -e

PROGNAME=Xreset
SYSSESSIONDIR=/etc/X11/Xreset.d

if [ ! -d "$SYSSESSIONDIR" ]; then
  # Nothing to do, exiting
  exit 0
fi

# use run-parts to source every file in the session directory; we source
# instead of executing so that the variables and functions defined above
# are available to the scripts, and so that they can pass variables to each
# other
SESSIONFILES=$(run-parts --list $SYSSESSIONDIR)
if [ -n "$SESSIONFILES" ]; then
  set +e
  for SESSIONFILE in $SESSIONFILES; do
    . $SESSIONFILE
  done
  set -e
fi 

exit 0

# vim:set ai et sts=2 sw=2 tw=80:
don.joey
la source
Intéressant. Le script de réinitialisation ne fait rien cependant. Je l'ai couru par tty, ordinateur redémarré, mais tout était pareil. Pareil pour le mettre dans le dossier: | J'ai essayé de mettre des commandes xrandr à l'intérieur aussi, mais en vain
Martin Melka
Le script de réinitialisation exécute tout ce qui se trouve dans le répertoire Xreset.d.
don.joey
1
Droite. Cela n'a pas fonctionné pour moi au début, car j'ai oublié d'ajouter une autorisation d'exécution au script. Maintenant cela fonctionne comme un charme. Merci. Une petite remarque cependant. Si je mets l'ordinateur portable en veille et débranche les moniteurs pendant cette période, je ne me suis pas déconnecté et l'écran ne sera donc pas réinitialisé. Y at-il un moyen de me déconnecter par tty? J'ai essayé de me connecter en tant que même utilisateur qui utilise X, mais logoffje ne me suis déconnecté que du tty, pas de X.
Martin Melka
Salut Martin. Je suis heureux que tu l'aies fait fonctionner! Avez-vous essayé quelque chose comme gnome-session-quit? Source: askubuntu.com/questions/15795/…
don.joey
17

Chaque fois que je mets mon ordinateur portable Lubuntu en veille lorsqu'il est affiché exclusivement sur mon téléviseur et que je le réveille après l'avoir débranché, je me retrouve avec un écran noir, car une résolution erronée est attribuée. Donc, même problème que vous, je dois régler la résolution du terminal virtuel TTY1 que je peux atteindre avec Ctrl-alt-F1, mais xrandr ne semble pas fonctionner. J'ai parcouru des pages de résultats de recherche Google avant de trouver la solution. J'ai donc pensé partager.

L'essentiel est que xrandr ne fonctionne apparemment que sur l'affichage actuellement ciblé. Vous devez donc enchaîner une commande de veille avant votre commande xrandr pour vous donner le temps de revenir au serveur X avec Ctlr-alt-F7 afin que la commande y soit exécutée. Sinon, vous obtenez une erreur comme xrandr: Configure crtc 0 failed.

  1. Ouvrir un terminal virtuel avec Ctrl-alt-F1 et se connecter

Pour obtenir les noms des écrans connectés (et en supposant que votre serveur X fonctionne sur :0):

  1. $xrandr -d :0

Pour modifier les paramètres d'affichage:

  1. $sleep 5; xrandr --output LVDS1 --auto -d :0

Remplacez LVDS1 par la sortie que vous souhaitez modifier et --auto par les paramètres xrandr que vous souhaitez utiliser.

  1. Basculez sur le serveur X avec Ctrl-alt-F7 avant l'expiration du délai de veille défini dans la commande ci-dessus.

Il doit y avoir un meilleur moyen de le faire. Mais ça marche.

Source originale de la solution: http://www.lgqyc.com/server-14-04-3-lts-display-orientation/

Découvrez ce commentaire pour une possible amélioration de ma solution (non testé moi-même).

Gabriel Morin
la source
C'était la seule réponse qui a fonctionné pour moi. Coïncidence folle, un sujet âgé de 3 ans avait la seule réponse de travail soumise il y a 11 heures :). EDIT: oh snap, il y a exactement 3 ans. Bizarre ...
Adam Plocher
Sensationnel. Cela me rend fou depuis des lustres. Votre réponse semble ridicule (dormir? Vraiment?), Mais ça marche, alors merci!
Tyler
6
Il s'avère, il y a un peu de meilleure façon de le faire: chvt 7; xrandr --output LVDS1 --auto -d :0. chvt 7 bascule vers le VT7 pour vous, vous n’avez donc pas besoin de dormir / Ctrl-Alt-F7. Peut nécessiter un sleep 5entre les appels chvtet xrandr, mais même dans ce cas, cela évite les appuis manuels.
Tyler
Une option serait de créer un .xsessionrcfichier exécutable dans votre répertoire personnel et d'inclure une commande xrandr --autopour forcer la reconfiguration automatique de tous les écrans à chaque fois que vous vous connecterez.
Mikko Rantalainen
16

La commande xrandr -s 0devrait réinitialiser vos affichages dans le terminal. Plus peut être trouvé sur le site suivant ou de man xrandrdans le terminal.

https://linuxacademy.com/blog/linux/solution-resetting-your-screen-resolution-with-xrandr/

Miguel
la source
Bienvenue sur Ask Ubuntu! Bien que cela réponde à la question, il serait préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien à titre de référence.
Guntbert
4
Oui ça marche. Les autres réponses sont tout simplement trop lourdes, compliquées ou peu efficaces. Il peut également être utile de noter que si vous rencontrez un écran noir (et ne pouvez rien voir), vous pouvez ouvrir votre terminal avec des touches de raccourci et taper aveuglément "xrandr -s 0". C'est ce que j'ai fait :)
kodeart
Notez que dans les configurations à deux moniteurs, cette commande peut désactiver le deuxième moniteur au lieu de régler les deux moniteurs sur leur résolution par défaut.
Darien
Sur mon système, la commande désactive les deux moniteurs externes, mais réinitialise également leur configuration par défaut, ce qui corrige la détection VGA DCC qui est interrompue de temps à autre. Après quoi, il me suffit de réactiver les écrans et de les repositionner à l'aide de l'outil Moniteurs. Ce n’est pas idéal, mais c’est très pratique et meilleur que ma solution précédente, qui consistait à suspendre et à réactiver l’ordinateur plusieurs fois jusqu’à réinitialisation du port VGA.
Guss
4

as-tu essayé (qc aime)

DISPLAY=:0 xrandr --output LVDS1 --auto

d'un différent tty(par exemple tty1),

auquel vous pouvez accéder Ctrl Alt F1et revenir au tty7 (graphique standard) avec Ctrl Alt F7?

noisette de natty
la source
1
Cela me donne xrandr: Configure crtc 1 failedlors de la tentative --output HDMI1 - off. --auto ne dit rien, jusqu'à ce que je l'éteigne manuellement. Puis --auto lance la même erreur
Martin Melka
aurait besoin d'enquêter de plus près; je suis positif , il serait travail, par la suite ...
sucre natty
2

Une chose que je n'ai pas encore mentionnée, mais ce qui pourrait être crucial: si vous utilisiez un ordinateur portable Thinkpad , la solution serait simple: Fn+ F7. Si vous utilisez un ordinateur portable d'un autre fabricant, il y aura vraisemblablement une autre clé de type Fn qui basculera entre les sorties d'affichage / d'écran (par exemple, beamer, moniteur externe, écran interne; miroir, on / off, etc.) au niveau du BIOS (je supposerais - Edit : voir Comment fonctionnent les touches Fn? pour plus de détails à ce sujet ).

Il n’y aurait donc pas besoin de réinitialiser quoi que ce soit sous Linux, pour ainsi dire.

noisette de natty
la source
1
J'ai un IdeaPad, mais les touches Fn + ne fonctionnent pas (le seul qui le fait est Sleep)
Martin Melka
Mon pressentiment est de continuer avec celui-ci! Je n'ai pas le temps de me enquêter à fond actuellement, mais il y a une bonne chance que je pouvais faire une optimisation dans ce domaine sur mon IBM Thinkpad X41, mais -pour ce qui est worth- la plupart des touches Fn font le travail sur mon système ( à la fois sur mon ordinateur portable, ainsi que sur mon clavier externe "thinkvantage" sk-8855): dans ubuntu software center (ou synaptic) au premier coup d'œil superficiel, au moins cette chose tp-smapi-dkms 0.41-1 est installée. Donc, vous voudrez peut-être essayer de l’installer, d’envisager des solutions de rechange similaires qui donneront enfin vie à vos clés Fn!
noisette à propos de natty
Consultez également tpctl.sourceforge.net
noisette de natty
Difficile à croire, mais ça y était. Commutateur affiche - Fn+ F8sur Dell Latitude. Une fois retiré de la station d’accueil, il n’était parfois pas possible d’allumer l’affichage intégré. (J'utilise uniquement un écran VGA externe avec la station d'accueil.) Essayer de changer d'affichage a semblé un non-sens, mais cela a allumé l'écran intégré.
Ferdinand Prantl