Se você se conectar através do ssh, você pode muito bem não ter uma sessão X em execução. Mesmo se você tiver, a sessão ssh não está conectada a nenhuma delas por padrão ... você pode até mesmo fazer o login via ssh para um usuário diferente daquele que tem a sessão X aberta.
Então, por exemplo, se eu ssh para minha máquina remota eu tenho:
(0)pern:~% xrandr --current
Can't open display
Portanto, tenho que descobrir se uma sessão X está sendo executada e quem está conectado:
(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 ... vamos ver a capacidade de exibição: 0, dado que estou logado como o mesmo usuário e por isso tenho as permissões:
(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
Observe que tudo isso funcionará se o usuário na sessão não gráfica tiver direitos suficientes para o servidor. Basicamente, ele precisa ser o mesmo usuário que iniciou o servidor X (e, às vezes, faz com .Xauthority
, nem mesmo nesse caso); Para que ele funcione a qualquer momento, você deve fazer xhost +
no servidor (mas isso tem grandes riscos de segurança).