Changer la résolution au démarrage

Tags: #<Tag:0x00007f63f082af90>

Bonjour,

Sur une installation Debian 9.5, je voudrai lancer un script au démarrage pour modifier la résolution de l’affichage.

Voici le script :
resolution.sh

#!/bin/bash
xrandr --newmode "800x600_60.00"  38.22  800 832 912 1024  600 601 604 622  -HSync +Vsync
xrandr --addmode Virtual-0 "800x600_60.00"
xrandr --output Virtual-0 --mode "800x600_60.00"

J’ai créé un service dans /etc/systemd/system pour lancer le script :
resolution.service

#résolution de l'écran

[Unit]
Description=Résolution de l'écran
ConditionPathExists=/opt/scripts/resolution.sh

[Service]
Type=simple
ExecStart=/bin/bash /opt/scripts/resolution.sh

[Install]
WantedBy=multi-user.target

Voici l’erreur que renvoi le service :

/etc/systemd/system# systemctl status resolution.service 
● resolution.service - Résolution de l'écran
   Loaded: loaded (/etc/systemd/system/resolution.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Thu 2020-04-30 13:40:00 UTC; 1min 7s ago
  Process: 701 ExecStart=/bin/bash /opt/scripts/resolution.sh (code=exited, status=1/FAILURE)
 Main PID: 701 (code=exited, status=1/FAILURE)

avril 30 13:40:00 debian9 systemd[1]: Started Résolution de l'écran.
avril 30 13:40:00 debian9 bash[701]: Can't open display
avril 30 13:40:00 debian9 bash[701]: Can't open display
avril 30 13:40:00 debian9 bash[701]: Can't open display
avril 30 13:40:00 debian9 systemd[1]: resolution.service: Main process exited, code=exited, status=1/FAILURE
avril 30 13:40:00 debian9 systemd[1]: resolution.service: Unit entered failed state.
avril 30 13:40:00 debian9 systemd[1]: resolution.service: Failed with result 'exit-code'.

Le script fonctionne si on le lance manuellement.
Est-ce qu’il y une autre façon pour que le script se lance avant l’affichage de l’écran de login ?

Merci pour votre aide.

Bonjour,

Cela ne peut pas marcher puisque la session graphique n’est pas encore lancée (can’t open display).

Il vaudrait mieux mettre ce script au démarrage de la session utilisateur.

OU encore

voir un fichier xorg.conf pour forcer l’affichage.

Je ne peut pas le mettre dans une session utilisateur, puisque c’est la résolution de l’écran de login que je veux changer car mon écran ne supporte pas la résolution 1024x768 qui semble être par défaut.

tu peut regarder ce topic qui a un soucis different du tiens mais qui peut t’aider.

Modification de la résolution dans le fichier xorg.conf

Dans ce cas essaie de fournir la bonne résolution au niveau du GRUB, dans /etc/default/grub :

GRUB_GFXMODE=800x600
GRUB_GFXPAYLOAD=keep
GRUB_GFXPAYLOAD_LINUX=keep

puis en root : update-grub

Je vous remercie pour les réponses.
La modification du fichier xorg.conf a modifié la résolution de l’écran qu’après être loggé.
Pour la modification du fichier GRUB, la commande update-grub me retourne systeme de fichier en lecture seule, il faut que je trouve d’abord comment retirer la protection.

au pire tu fais un autologin et si tu veut un mdp tu le met dans le bios de ta machine.

Je ne peux pas faire d’autologin, il y a plusieurs utilisateurs qui peuvent se connecter.

La modification au niveau de GRUB n’a rien donné.

J’ai trouvé aussi que l’on pouvait modifier le fichier gnome-shell.css pour la résolution de GDM :
Dans la section #lockDialogGroup, ajouter background-size: [WIDTH]px [HEIGHT]px;
puis compiler le thème.
ref : 4.2.3 de https://doc.ubuntu-fr.org/tutoriel/changer_arriere_plan_gdm
Mais ça ma changé la taille de l’image de fond sans modifier la résolution.

Bonjour

Alors ce n’est pas le Xorg ou autre Wayland qu’il faudra modifier
mais le gestionnaire de session ( DisplayManager) qui est utilisé par ton système debian.

En nous donnant le retour de la ligne de commande suivante,
on pourra savoir lequel est utilisé :

echo $GDMSESSION $XDG_SESSION_DESKTOP $DESKTOP_SESSION

et en fonction du gestionnaire de session utilisé,
on pourra trouver où mettre la ligne de commande
qui lancera ton script /opt/scripts/resolution.sh

( Pour Lightdm, c’est dans la directive display-setup-script
du fichier /etc/lightdm/lightdm.conf )

Bonjour,
toutes ces variables sont à default.
C’est gdm3 qui est utilisé, lightdm ce n’est pas pour Ubuntu avec Unity ?
C’est une Debian 9.5 avec Gnome.

Donne le contenu du fichier /etc/gdm3/daemon.conf

cat /etc/gdm3/daemon.conf

Lightdm est utilisé avec l’environnement de bureau XFCE

Voici le contenu du fichier (je n’arrive pas à afficher les #) :

# GDM configuration storage
#
# See /usr/share/gdm/gdm.schemas for a list of available options.

[daemon]
# Uncoment the line below to force the login screen to use Xorg
#WaylandEnable=false

# Enabling automatic login
#  AutomaticLoginEnable = true
#  AutomaticLogin = user1

# Enabling timed login
#  TimedLoginEnable = true
#  TimedLogin = user1
#  TimedLoginDelay = 10

[security]

[xdmcp]

[chooser]

[debug]
# Uncomment the line below to turn on debugging
# More verbose logs
# Additionally lets the X server dump core if it crashes
#Enable=true

Il me transforme les lignes qui commencent par # en les mettant en gras.

Voilà :

#GDM configuration storage
#
#See /usr/share/gdm/gdm.schemas for a list of available options.

[daemon]
#Uncoment the line below to force the login screen to use Xorg
#WaylandEnable=false

#Enabling automatic login
#AutomaticLoginEnable = true
#AutomaticLogin = user1

#Enabling timed login
#TimedLoginEnable = true
#TimedLogin = user1
#TimedLoginDelay = 10

[security]

[xdmcp]

[chooser]

[debug]
#Uncomment the line below to turn on debugging
#More verbose logs
#Additionally lets the X server dump core if it crashes
#Enable=true

Avant d’aller plus loin, je viens de remarquer que tu avais fait un update-grub
après quelques modifications,
mais que tu as oublié de réinstaller grub après cette modification
ce qui fait que :

Donc, ré-installe le chargeur de boot avec la commande grub-install
et on verra bien si les modifications que tu avais apportées
provoquent un changement au démarrage suivant de la machine.

La modification de grub, suivi de update-grub et grub-install n’a rien donné, c’est toujours la ,même résolution pour l’écran de loggin.

Bonjour,

Je soumets une piste alternative :

https://askubuntu.com/questions/912052/how-do-i-change-gdm3-login-screen-resolution

La réponse est […] de copier le fichier ~/.config/monitor.xml dans /var/lib/gdm3/.config et de le modifier afin de pouvoir changer la résolution pour quelque chose de plus raisonnable dans l’écran de connexion.

Vous n’êtes que dans l’écran de connexion pendant un petit moment, puis lorsque le bureau apparaît, la résolution et la mise à l’échelle redeviennent normales.

/var/lib/gdm3/.config doit être un répertoire à mon avis.

Je trouve sur mon système :

rem@n73sm ~ $ ls -dl /var/lib/gdm/.config/
drwxr-xr-x 3 gdm gdm 4096 27 mai    2019 /var/lib/gdm/.config/
rem@n73sm ~ $ 

Cette méthode est peut-être obsolète (answered May 10 '17 ) et de plus elle laisse à changer ensuite la résolution d’écran de l’environnement de bureau.
Je n’ai pas de quoi la tester.

rem@n73sm ~ $ cat .config/monitors.xml 
<monitors version="1">
  <configuration>
      <clone>no</clone>
      <output name="LVDS1">
          <vendor>CMO</vendor>
          <product>0x1726</product>
          <serial>0x00000000</serial>
          <width>1920</width>
          <height>1080</height>
          <rate>60</rate>
          <x>1920</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>no</primary>
      </output>
      <output name="DP1">
      </output>
      <output name="HDMI1">
          <vendor>PHL</vendor>
          <product>0x0000</product>
          <serial>0x01010101</serial>
          <width>1920</width>
          <height>1080</height>
          <rate>60</rate>
          <x>0</x>
          <y>0</y>
          <rotation>normal</rotation>
          <reflect_x>no</reflect_x>
          <reflect_y>no</reflect_y>
          <primary>yes</primary>
      </output>
      <output name="VGA1">
      </output>
      <output name="VIRTUAL1">
      </output>
  </configuration>
</monitors>
rem@n73sm ~ $