Questão Execute o Unity no monitor externo com o Bumblebee


Eu percebo que há muitas outras perguntas sobre isso, mas elas são todas sobre a configuração básica. Já passei a maior parte do caminho, mas tenho uma pergunta muito específica: quero executar o Unity completo no monitor externo (HDMI) e não me importo se a tela do laptop estiver inutilizável.

Eu tenho um Dell XPS 15 com a Nvidia GT 540M com Optimus. (DAMN OPTIMUS !!!!) Eu tenho o Bumblebee instalado. Eu sou capaz de executar o sistema na tela do laptop, e posso usar o optirun para executar programas como o glxspheres no modo de alto desempenho. Quando eu conecto o monitor externo, não vejo nada e xrandr não detecta ("HDMI1 disconnected (normal left inverted right x axis y axis)").

Aqui está o que eu fiz até agora (trabalhando a partir de Bumblebee configuração de vários monitores guia). Eu segui o conselho de "tela extra" lá, então eu editei bumblebee.conf e xorg.conf.nvidia conforme instruído. Agora, se eu correr:

export DISPLAY=:8 LD_LIBRARY_PATH=/usr/lib/nvidia-current:$LD_LIBRARY_PATH
optirun glxspheres

Eu vejo o demo glxspheres no monitor externo (sem qualquer revestimento de janela). Woohoo!

Agora, o próximo passo é desligar o Unity na tela do laptop e testar se os glxspheres ainda funcionam. Então eu apertei Ctrl + Alt + F1 para ir para o terminal não-gráfico. Então:

sudo service lightdm stop
export DISPLAY=:8 LD_LIBRARY_PATH=/usr/lib/nvidia-current:$LD_LIBRARY_PATH
optirun glxspheres

Mais uma vez, vejo glxspheres no monitor externo.

Agora o guia Bumblebee diz para você fazer "optirun wmii& (ou outro como startlxde) "mas eu não quero mudar para outro gerenciador de janelas. Como posso executar o Unity no monitor externo?

eu tentei optirun unity e cheguei a maior parte do caminho até lá. Isso inicia o Unity no monitor externo. Eu posso ver a área de trabalho e o mouse funciona. Eu posso executar outros programas dentro do Unity. Existem apenas alguns problemas:

  1. Certas combinações de teclado não são detectadas pelo Unity - parece com qualquer coisa que envolva Ctrl, bem como a tecla Fn. (por exemplo: Ctrl + Alt + T não funcionou para obter um terminal; o Fn + F11 não funcionou para alterar o volume.)
  2. Os traços do teclado aparecem no terminal e também no Unity. Eu não quero isso, pois pode haver senhas sendo digitadas.
  3. Se eu alternar para outra tela (por exemplo, Ctrl + Alt + F8), o áudio deixará de funcionar, portanto, essa não é uma solução viável para o número 2.

Eu sinto que essas três questões estão relacionadas. Eu acho que o principal problema é que eu não deveria estar executando diretamente o Unity, mas sim executando o lightdm. eu tentei optirun lightdm mas não funciona de todo. Esperando que alguém saiba. Se não, esperamos que pelo menos essa pergunta ajude as pessoas a quase rodarem o Unity em um monitor externo.


4
2018-02-09 03:54


origem




Respostas:


Pelo que entendi, o Unity não funciona com o optirun (parece ser um bug).

Foi o que eu encontrei Aqui:

O HDMI não funciona com chipsets gráficos híbridos Optimus no Linux para a maioria dos laptops, mesmo se você usar o Bumblebee, mas existe uma maneira de fazer o HDMI funcionar: usando uma sessão separada.

Usando as instruções abaixo, você receberá uma sessão do LXDE (você pode usar o XFCE ou outros, mas as instruções abaixo são para o LXDE) para aparecer no monitor externo (que é conectado via HDMI), e nesta sessão, todos os os aplicativos que você usa usam a placa gráfica Nvidia do seu laptop e você pode jogar, assistir a filmes, etc. A sessão do LXDE é executada ao mesmo tempo que a sua sessão regular, portanto na tela do seu laptop você obtém sua sessão regular (principal). Além disso, o mouse e o teclado são compartilhados entre as duas sessões / monitores.

Veja como isso se parece:

first pictiure

second picture

A primeira imagem acima é da tela do meu laptop (Dell XPS L702X que vem com o Nvidia Optimus), enquanto a segunda imagem é a sessão LXDE separada que também está sendo executada no meu laptop, mas é exibida em uma TV conectada via HDMI. Como você pode ver, o primeiro é usar o chip gráfico da Intel enquanto o segundo usa a Nvidia.

No entanto, há algumas coisas a considerar ao usar isso:

  • o som não vai funcionar (se você sabe uma maneira de fazê-lo funcionar, por favor, deixe nós sabemos nos comentários!) através de HDMI, então você só vai conseguir som através dos alto-falantes do seu laptop
  • você não pode mover uma janela da sua área de trabalho atual para o monitor conectado via HDMI. A única maneira de executar aplicativos no dispositivo conectado via HDMI é executá-lo a partir de seu menu de sessão ou usando "export DISPLAY =: 8.0" (veja o final do post para mais informações sobre esta). O mouse é, no entanto, compartilhado entre os dois desktops.
  • ao carregar a sessão extra, você pode obter indicadores duplos / bandeja ícones na sua sessão atual (principal). Existe uma maneira de contornar isso embora (veja a seção "dicas" no final do post)

Obtenha HDMI para trabalhar com laptops usando a tecnologia Optimus no Ubuntu usando o Bumblebee e o Synergy

  1. Instale o Bumblebee, se ainda não o fez.

  2. Unity não funciona com o Bumblebee (e eu não tenho certeza se você pode rodar duas sessões usando o mesmo gerenciador de janelas sem interferir de qualquer forma), então você precisará usar um ambiente / sessão de desktop diferente, como LXDE, XFCE e assim por diante - use o que você quiser. Eu usei o LXDE, então, usando as instruções abaixo, você terá uma sessão do LXDE no monitor conectado via HDMI.

    Para que o mouse e o teclado funcionem no monitor externo conectado via HDMI, usaremos o Synergy, uma ferramenta que permite compartilhar o mouse e o teclado entre vários computadores.

    Vamos instalar os pacotes requeridos (LXDE e Synergy):

    sudo apt-get install synergy lxde lxde-common

  3. Para poder usar o Synergy, você precisará criar um arquivo de configuração. Você pode baixar o meu de AQUI - copie o arquivo para sua pasta pessoal e renomeie-o para ".synergy.conf" (observe o ponto na frente do nome do arquivo - que faz o arquivo ficar oculto).

    O arquivo que eu forneci acima deve ser suficiente, mas se você quiser alterá-lo, você pode ler sobre o arquivo de configuração do Synergy Aqui.

  4. Para iniciar o LXDE no monitor externo conectado via HDMI, você pode usar um script que pode ser baixado AQUI. Extraia o arquivo, copie o script "hdmi" para sua pasta pessoal e torne-o executável usando o seguinte comando:

    chmod +x ~/hdmi

    Agora, para executar o script, use o seguinte comando:

    ~/hdmi

    O LXDE agora deve iniciar no monitor externo conectado via HDMI. Dê um tempo (cerca de 10 segundos) e mova o mouse para a esquerda da tela para que apareça no dispositivo HDMI.

    Aqui está o que o script faz (isto é apenas uma explicação, você não precisa executar estes comandos, apenas use o script acima):

    exporta o display para o que vamos usar para o monitor HDMI (8):

    export DISPLAY=:8.0

    executa o LXDE com optirun (Bumblebee):

    optirun startlxde &

    executa o servidor Synergy em primeiro plano na tela principal (na sessão principal do seu laptop) com 127.0.0.1 como o endereço:

    synergys -f -a 127.0.0.1 --display :0 -n ubuntu &

    executa o cliente Synergy em primeiro plano no monitor HDMI e o conecta ao endereço do servidor 127.0.0.1:

    synergyc -f -n hdmi --display :8 127.0.0.1 &

    E finalmente, ele exporta o display de volta para a tela do seu laptop (principal):

    export DISPLAY=:0.0

    O script também usa alguns comandos "sleep" que adicionam um atraso para garantir que os comandos tenham tempo suficiente para serem executados antes de executar o próximo comando.


4
2018-03-01 04:26



Super! Obrigado pelo detalhado brain-dump. Ainda não testei, mas marquei sua resposta porque parece muito útil. Quando tiver uma chance, tentarei e deixarei você saber. - mgiuca