J'ai passé un certain temps à configurer correctement mes paramètres pour plusieurs moniteurs, et cela fonctionne correctement lorsque je suis connecté, mais ne se trouve pas à l'écran de connexion ni aux autres utilisateurs.
Comment définir les paramètres d'affichage globalement pour tous les utilisateurs et l'écran de connexion?
Selon la manière dont vous avez configuré votre système, il peut être aussi simple que de copier le fichier monitors.xml
de l'utilisateur correctement configuré à tous les utilisateurs. :
Pour tester cela pour un utilisateur:
cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /home/TestUser/.config/
puis déconnectez-vous de TestUser , si vous êtes déjà connecté , reconnectez-vous et vérifiez si tout est correct.
La commande pour tous les utilisateurs:
cp /home/CorrectUser/.config/monitors.xml /tmp/
for szUser in /home/* ; do Sudo cp --preserve=timestamps /tmp/monitors.xml $szUser/.config/ ; done
La commande pour l'écran de connexion:
Sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /var/lib/lightdm/.config/
La commande pour tous les futurs utilisateurs ¹:
Sudo mdkdir -p /etc/skel/.config
Sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/
Note¹: Tous les utilisateurs que vous créerez à l'avenir
Pour définir la configuration de votre écran pour chaque utilisateur connecté (cela ne modifiera pas la configuration de l'écran de connexion), vous pouvez créer un fichier .desktop
dans /etc/xdg/autostart
trouvez le nom de l'écran que vous souhaitez faire pivoter en exécutant xrandr
name__. Il produira un certain nombre de lignes, parmi lesquelles quelques lignes ressemblant à:
VGA-0 connected
Cela vous donne des informations sur les noms des écrans connectés.
VGA-0
Créez un lanceur avec (par exemple) gedit
name__:
Sudo -i gedit /etc/xdg/autostart/set_screens.desktop
Collez le texte ci-dessous dans le fichier:
[Desktop Entry]
Name=set_screens
Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
Type=Application
remplacer dans la ligne:
Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
La chaîne: VGA-0
en fonction du nom de votre écran (pivoté).
Dans la ligne
Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
J'ai inclus un sleep 10
. En effet, parfois, les commandes xrandr
sont interrompues si elles s'exécutent trop tôt, avant le chargement "terminé" du bureau. Peut-être devez-vous augmenter le temps de pause ou essayer de le laisser de côté. Dans la commande, l’écran pivote au bout de 10 secondes après la connexion de n’importe quel utilisateur .
La commande:
xrandr --output VGA-0 --rotate left
tourne l'écran à gauche, inutile de préciser que si vous souhaitez un autre type de rotation, vous pouvez choisir left
name__, right
name__, normal
name__, inverted
(voir aussi ici) .
Vous pouvez exécuter des commandes au démarrage (en réalité vous connecter) en plaçant un fichier .desktop
(lanceur) dans ~/.config/autostart
. Cela lancera le lanceur uniquement pour un utilisateur unique. Si vous faites la même chose, mais placez le programme de lancement dans /etc/xdg/autostart
, la commande est exécutée chaque fois que un utilisateur se connecte, sauf si un utilisateur spécifique désactive le programme de lancement pour lui ou elle dans Dash> Applications de démarrage
En outre , vous pouvez simplement copier votre fichier ~/.config/monitors.xml
dans /var/lib/lightdm/monitors.xml
pour que les paramètres fonctionnent également à l'écran de connexion.
En combinant cela, et la solution ci-dessus (un lanceur dans /etc/xdg
) est la solution la plus simple pour obtenir exactement ce que vous voulez pour l'écran de connexion et pour l'utilisateur (quel qu'il soit). De plus, la solution d'un lanceur dans /etc/xdg
est (très) facilement annulée ou modifiable au cas où vous auriez besoin d'effectuer une autre configuration, sans éditer beaucoup de fichiers au niveau de (chaque) utilisateur, puisque les paramètres de l'utilisateur et l'écran de connexion sont gérés. pour tous les utilisateurs à la fois dans deux fichiers simples.
Je voulais juste ajouter un commentaire à quiconque se trouverait aux prises avec un problème similaire. J'étais bloqué par la résolution de mon ancien moniteur (1280x1024) à chaque fois que je me connectais, mais l'écran de connexion et la connexion de l'utilisateur invité utilisent la valeur par défaut correcte de 1680x1050.
J'ai lu beaucoup d'articles au cours des quatre derniers mois à la recherche d'une réponse. J'ai lu xorg.conf, moniteurs.xml, lightdm et xrandr et d'autres suggestions - mais certaines modifications de configuration sont compliquées et risquent de briser complètement l'affichage. J'ai donc fini par utiliser l'interface graphique pour modifier manuellement les paramètres du moniteur à chaque connexion.
Aujourd'hui, j'ai fait un grep pour l'ancienne résolution dans mon dossier .config.
grep -HrnIF '1280' .config | less
Le premier résultat était ~/.config/autostart/xrandr.desktop contenant ce fichier,
Exec=xrandr -s 1280x1024 -r 75
donc je viens de déplacer le fichier de là. Et bingo, je me connecte et je reçois la résolution par défaut de 1680x1050.
Il m'a fallu quelques heures de recherche et je ne pouvais pas trouver une réponse suffisamment proche, donc poster ici au cas où cela serait utile à quelqu'un.
Vous voudrez peut-être ajouter quelque chose à /etc/lightdm/lightdm.conf
. Nous créons ici un script qui utilise une commande xrandr
pour configurer votre ou vos affichages. Vous pouvez utiliser certains outils RandR graphiques pour créer une commande pour vous, telle que arandr
name__. Dans mon cas, le script ressemblerait à ceci:
#!/bin/sh
xrandr --output DVI-I-1 --mode 1600x1200 --pos 0x0 --rotate left --output DVI-I-0 --off --output DP-3 --off --output DP-2 --off --output DP-1 --mode 1600x900 --pos 1200x700 --rotate normal --output DP-0 --off
Vous pouvez mettre ce script dans /usr/share
ou où vous voulez. Votre script peut paraître beaucoup moins complexe, car il s’agit d’une configuration complexe à double moniteur. Puis ajoutez quelque chose comme:
session-setup-script=/usr/share/mycustomxrandr.sh
et:
display-setup-script=/usr/share/mycustomxrandr.sh
Assurez-vous que le fichier est exécutable, donc:
chmod a+x mycustomxrandr.sh
Le session-setup-script
définit l'affichage pour après vous vous connectez via LightDM, et display-setup-script
modifie l'affichage de l'écran de connexion.
Sur mon système (Ubuntu 16.04) pour l’écran de connexion, cp
name __ 'en tant que root (avec Sudo
name__) ne fonctionnait pas. Vous devrez peut-être également vous assurer que le propriétaire/groupe de moniteurs.xml est lightdm:lightdm
.
Sudo chown lightdm:lightdm /var/lib/lightdm/.config/monitors.xml