Si j'exécute xrandr à partir d'un terminal dans la session X, je peux voir les noms des différentes sorties disponibles sur le système. Par exemple, je reçois quelque chose comme ceci:
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
VGA disconnected (normal left inverted right x axis y axis)
LVDS connected (normal left inverted right x axis y axis)
1440x900 59.9*+
1280x854 59.9
1280x800 59.8
C'est génial, mais cela ne fonctionne que si je suis sur la session X, soit physiquement devant l'ordinateur ou via Remote Desktop (VNC). Comment puis-je obtenir ces mêmes noms à distance via SSH à la place? Je n'utiliserais probablement pas xrandr pour cela, mais alors que dois-je utiliser?
Avec l'exemple ci-dessus, ce que j'aimerais obtenir de SSH, ce sont les valeurs "VGA" et "LVDS".
Si vous vous connectez via ssh, vous pourriez très bien ne pas avoir de session X en cours d'exécution. Même si vous l'avez, la session ssh n'est connectée à aucun d'entre eux par défaut ... vous pouvez même vous connecter via ssh à un utilisateur différent de celui qui a ouvert la session X.
Ainsi, par exemple, si je passe à ma machine distante, j'ai:
(0)pern:~% xrandr --current
Can't open display
Je dois donc trouver si une session X est en cours d'exécution et qui est connecté:
(0)pern:~% w
01:57:06 up 10 days, 9:56, 4 users, load average: 0.12, 0.17, 0.13
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
romano tty7 :0 08Nov13 10days 1:29m 6.95s gnome-session -
romano pts/2 :0 08Nov13 10days 23.67s 23.67s /home/romano/bi
romano pts/0 xxx.xx.xxx.xxx 01:56 2.00s 0.08s 0.00s w
romano pts/3 :0 08Nov13 6:48m 0.08s 0.08s zsh
Hmmm ... voyons la capacité d'affichage: 0, étant donné que je suis connecté en tant que même utilisateur et que j'ai donc les autorisations:
(1)pern:~% xrandr --current -display :0
Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 8192 x 8192
DIN disconnected (normal left inverted right x axis y axis)
DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 430mm x 270mm
1680x1050 59.9*+
1600x1200 60.0
1280x1024 75.0 60.0
1024x768 75.1 72.0 70.1 60.0
832x624 74.6
800x600 72.2 75.0 60.3 56.2
640x480 72.8 75.0 66.7 60.0
720x400 70.1
Notez que tout cela fonctionnera si l'utilisateur de la session non graphique dispose de droits suffisants sur le serveur. Fondamentalement, il doit s'agir du même utilisateur qui a démarré le serveur X (et parfois, faites pour .Xauthority
, pas même dans ce cas); pour le faire fonctionner à tout moment, vous devez faire xhost +
sur le serveur (mais cela a gros risques de sécurité).
J'ai déjà expliqué comment pour lister les affichages dans une vie antérieure, cela devrait vous permettre d'itérer chaque affichage X et d'afficher les sorties disponibles
w -hs | awk '{print $3}' | sort -u | xargs -I% xrandr -display %
Je ne sais pas si vous avez besoin de boucler les affichages, mais cela devrait néanmoins fonctionner.