web-dev-qa-db-fra.com

Si j'utilise simplement un gestionnaire de fenêtres et non un environnement de bureau, comment puis-je obtenir des mises à jour automatiques de la résolution d'ancrage / désamarrage?

Gnome et KDE changent tous les deux de résolution lorsque j'arrive/déconnecte mon ordinateur portable.

Ils semblent le faire plus ou moins automatiquement, en fonction de l'état de l'ordinateur. J'aimerais avoir ce comportement si je lance simplement quelque chose comme IceWM ou Openbox. Ou même XFCE.

Des recommandations?

3
Ken Kinder

J'ai en /etc/udev/rules.d/80-monitor.rules

ACTION=="change", SUBSYSTEM=="drm", ENV{HOTPLUG}=="1", ENV{DEVNAME}=="dri/card0", RUN+="/etc/udev/monitors.sh"

Puis dans /etc/udev/monitors.sh (exécutable marqué):

#!/bin/sh
set -e

export DISPLAY=:0
export XAUTHORITY=$(getent passwd $(w -h -s|awk '$3==":0"{print $1}'|sed 1q)|cut -d: -f6)/.Xauthority

desktop() {
    xrandr --output LVDS1 --off || true
    xrandr --output HDMI3 --auto --primary --output HDMI2 --auto --right-of HDMI3
}

laptop() {
    xrandr --output HDMI3 --off || true
    xrandr --output HDMI2 --off || true
    xrandr --output LVDS1 --auto
}

if xrandr|grep -q 'HDMI2 connected'; then
    desktop
else
    laptop
fi

Quelques astuces et captures avec cet exemple:

  1. Cela ne fonctionne que pour le premier utilisateur connecté graphiquement.
  2. Vous devrez régler le script pour qu'il corresponde à la configuration de votre moniteur. Consultez la page de manuel de xrandr pour obtenir de l'aide à ce sujet.
  3. Je ne sais pas si la règle udev correspondra à l'événement de changement d'état du moniteur de tout le monde. J'ai utilisé udevadm monitor --property pour savoir quoi utiliser.
  4. Je devais utiliser --off pour désactiver explicitement tous les affichages avant de reconfigurer avant que xrandr ne me permette d'en configurer de nouveaux. Je pense que cela dépend du conducteur et n'est pas bien documenté.
  5. J'utilise la présence de l'écran externe pour décider de la voie à suivre pour reconfigurer. Cela pourrait ne pas fonctionner pour tout le monde.
  6. xrandr définit une résolution par défaut qui était optimale pour moi. Consultez la page de manuel pour plus de détails sur la façon de définir des résolutions personnalisées si vous en avez besoin.
2
Robie Basak