Não tenho certeza de como o Raspbian OS manipula múltiplas saídas, mas estou assumindo que ele usa a prática comum atual, que é usar o Xinerama - ou seja, várias telas são usadas pelo mesmo "display" (em termos X11). Nesse caso, você basicamente não pode "selecionar uma porta de saída" - todas as saídas estão na mesma tela (você pode imaginá-la como uma tela virtual que cobre todas as suas telas e possivelmente mais).
Para segmentar uma "tela" específica (o termo X11, que significa uma parte de uma exibição), é necessário perguntar ao servidor X qual parte da exibição está mapeada para a tela desejada e, em seguida, forçar o VLC a processar para essa área. A maneira padrão de fazer isso é usar um sinalizador --geometry
que o aplicativo deve reconhecer e aceitar um formato muito específico semelhante a este: <width>X<height>+<X>+<Y>
- que é (não) incidentalmente o formato exato que a ferramenta de consulta do servidor X exibe essa informação - execute xrandr
e veja.
Infelizmente, o VLC não aceita esse parâmetro - tem que ser diferente. Em vez disso, ele usa quatro parâmetros diferentes: --width
, --height
, --video-x
e --video-y
.
Então aqui está um pequeno script que usa xrandr
para obter a geometria da primeira porta HDMI conectada (eu tenho vários, então é útil assim) e depois quebra a especificação de geometria de xrandr
para iniciar o VLC com os parâmetros corretos:
geom=( $(xrandr | grep ' connected' | grep HDMI | head -n1 | cut -d' ' -f3 | tr 'x+' ' ') ); \
[ -n "${geom[*]}" ] && vlc \
--width=${geom[0]} --height=${geom[1]} \
--video-x=${geom[2]} --video-y=${geom[3]} \
my-video.mp4
(formatado para várias linhas com barras invertidas para facilitar a leitura, isso deve estar em uma linha, mas será executado como está - com as barras invertidas).
[Atualizar]: Agora que li sua pergunta, parece-me que você pode querer executar seu script de fora da sessão do servidor X; nesse caso, você também precisa para configurar a variável de ambiente DISPLAY
corretamente. Portanto, tente definir o DISPLAY
antes de executar o VLC executando export DISPLAY=:0
.