Xvnc via systemctl: como usar “xhost +”

0

Eu gostaria de rodar o Xvnc no Fedora 16 como um serviço. Não vncserver, dado que carrega o peso de um gerenciador de janelas completo, mas apenas Xvnc para iniciar o X.

Eu também gostaria que o "xhost +" fosse executado na sessão X. Aqui está o que eu tenho no meu script systemctl até agora:

[Service]
Type=simple
User=build
Environment=DISPLAY=:2
ExecStart=/usr/bin/Xvnc :2 -geometry 1280x1024 -SecurityTypes=None -AlwaysShared=1
ExecStartPost=-xhost +
ExecStop=/usr/bin/vncserver -kill :2

O resultado é que a sessão X está funcionando. e não solicitando senhas ("= nenhuma"). Mas não consigo me conectar a esse servidor X de outros hosts (xhost +), que é o que preciso.

Por que o ExecStartPost não está funcionando? O "status systemctl" não mostra nenhuma saída disso, mas eu poderia encontrar essa saída de algum outro lugar?

Aqui está esse status, apenas para referência:

      Loaded: loaded (/lib/systemd/system/vncserver@:2.service; enabled)
      Active: active (running) since Thu, 11 Apr 2013 11:02:26 -0400; 2s ago 
     Process: 13577 ExecStop=/usr/bin/vncserver -kill :2 (code=exited, status=2)
    Main PID: 13584 (Xvnc)
      CGroup: name=systemd:/system/[email protected]/:2
          └ 13584 /usr/bin/Xvnc :2 -geometry 1280x1024 -SecurityTypes=None -AlwaysShared=1
    
por macetw 11.04.2013 / 17:00

1 resposta

0

Minha solução foi fazer um wrapper de script, onde ele executa "Xvnc", dorme um segundo (opcional?) e executa "xhost +" no novo DISPLAY. Funciona agora.

#!/bin/csh
/usr/bin/Xvnc $* -geometry 1280x1024 -SecurityTypes=None -AlwaysShared=1 &
while ($#argv)
  if ($argv[1] =~ ":*") then
    setenv DISPLAY $argv[1]
  endif
  shift
end

sleep 1
xhost +
    
por 17.05.2013 / 15:43