Inicie o Synergy (ou qualquer aplicativo) ANTES de efetuar login no Ubuntu 16.04.2 LTS


14

Usando o Ubuntu 16.04.2 (Xenial) no Intel x64 : {o processador e o Ubuntu instalam}

Esta pergunta foi respondida um milhão de vezes, mas nenhuma das soluções funciona. Portanto, não quero duplicar uma pergunta, mas ela não foi respondida.

Quando eu ligo um terminal e sudo -i, o seguinte comando funciona exatamente como o esperado.

`root@user-pc:~# /usr/bin/synergyc -f --no-tray --debug INFO --name 
 user-pc 192.168.xxx.xxx:24800
 [2017-05-23T09:20:44] NOTE: started client
 [2017-05-23T09:21:01] NOTE: connecting to '192.168.5.100': 
 192.168.5.100:24800
 [2017-05-23T09:21:01] NOTE: connected to server`

Sou capaz de utilizar o programa para esse fim. No entanto, eu quero que isso seja feito automaticamente antes de login para que eu possa utilizá-lo de propósito a partir da tela de login. (O Synergy permite que você use um teclado e mouse em vários computadores, quase como um KVM virtual, mas em vez de pressionar interruptores, basta girar o mouse para a próxima tela, como se todos estivessem conectados a uma placa gráfica.

A primeira coisa que tentei foi rc.local :

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

exec /usr/bin/synergyc -f --no-tray --debug INFO --name user-pc 192.168.5.100:24800

exit 0

~~~ ls /etc/rc.local -l:

-rwxr-xr-x 1 root root 390 May 22 20:56 /etc/rc.local

Portanto, é definitivamente executável, mas após a reinicialização do PC:

~~~ ps aux | grep syner:

`root  990  0.0  0.0  63656  5372 ?  Ssl  09:33  0:00 
 /usr/bin/synergyc -f --no-tray --debug INFO --name user-pc 
 192.168.5.100:24800`

No entanto, ele não está fazendo o que deveria, até mesmo diálogos de unidade estão sendo chamados dizendo que algo deu errado, o que só acontece quando isso é executado, então posso assumir com segurança que é isso.

Minha suposição mais segura é que o programa está sendo executado muito bem, o problema é que o rc.local é executado antes do início da sessão x, para que quaisquer ganchos no teclado e no mouse nunca sejam estabelecidos, o que provavelmente também é feito apenas no início de execução synergyce não tentada novamente além desse ponto.

A segunda coisa que tentei foi "Aplicativos de inicialização", funciona, mas não até depois do login, que não é o que queremos que ocorra aqui.

Se minha suposição estiver correta:

O que é uma maneira de chamar a execução de um processo após a inicialização do servidor x, mas antes que qualquer usuário precise fazer o login.

Se minha suposição não estiver correta:

Socorro


1
Provavelmente para o gdm você precisa /etc/gdm/Init/Defaulte para o Unity você precisa adicionar um script /etc/init/lightdm.conf.
Rinzwind

O @Rinzwind lightdm.conf ainda é muito cedo, mesmo na seção pós-inicialização, erros de sinergia são executados usando o mesmo comando que funciona perfeitamente bem no terminal. O Ubuntu lança um erro dizendo que a sinergia foi interrompida inesperadamente, provavelmente porque ainda não pode acessar os ganchos necessários para controlar o teclado e o mouse, e precisa que aconteça exatamente quando a tela de login for exibida, para que tudo esteja em execução
DeeJayh

Não é muito útil, mas talvez um pouco reconfortante - lutei com isso por cerca de um ano antes de desistir (GDM) ... Eu decidi pelo que achava que era uma maneira de "funcionar": duas unidades de sistema de usuário, uma para um login virtual do x-server (pense no quiosque, mas não mostrado) e, em seguida, um gatilho para eliminá-lo quando um usuário real fizer logon. No final, para o meu caso de uso, não valeu a pena, mas talvez isso ajude você. Todos saudam a ACME!
Mark

Se não estou enganado sinergia precisa de um servidor X, porém, isso não pode funcionar sem um usuário logado
Ziazis

Apenas uma facada selvagem no escuro, mas você já tentou adicionar .xinitrc?
anonymous2

Respostas:


6

Para 16.04.2, crie o seguinte arquivo (ele não existe)

/etc/lightdm/lightdm.conf

com o conteúdo:

[Seat:*]
autologin-user=

[SeatDefaults]
greeter-setup-script=/usr/bin/synergyc --name <hostname> 192.168.x.x

Siga este guia wiki do ubuntu para obter mais informações.


EDITAR:

De man synergyc:

INICIANDO AUTOMATICAMENTE ...

as opções não devem incluir -fou --no-daemon. É importante garantir que não haja cópias antigas de sinergia em execução, para que não possam interferir na nova.


2
Isso é realmente muito bom! É bom saber, basta adicioná-lo /etc/lightdm/lightdm.confpara fazê-lo funcionar completamente. Talvez adicione o que ele precisa adicionar à resposta em vez de apenas vincular o link do ubuntu.
Ziazis

1
Spas, se você tiver um login automático, basta adicionar sinergia aos seus aplicativos de inicialização.
Ziazis

2
Certamente isso funciona em uma versão mais antiga do Ubuntu, mas não na minha. Eu criei o /etc/lightdm/lightdm.conf porque ele não existia e coloquei nas duas linhas acima (é claro, alterando-o para usar minhas próprias informações). Agora tenho conexão de sinergia quando a tela é carregada, mas agora não estou mais obtenha a tela de login. É apenas uma tela em branco com um cursor X. $ sudo find / -name lightdm.conf/etc/init/lightdm.confe /etc/lightdm/lightdm.confsendo este último o que eu criei manualmente com o dois liner nele. A remoção do lightdm.conf que criei o restaura de volta à ordem de funcionamento.
DeeJayh

1
Posso confirmar que, essa abordagem funciona em 16.04.2!
pa4080

1
@SpasSpasov Sei que estou tão empolgado que mudei a resposta para refletir nossas especificidades, aguardando a revisão por pares.
precisa

1

Entre na sua inicialização ... para iniciantes como eu, faça o seguinte:

  • "pesquise no seu computador" digite start, clique em Startup Applications
  • clique em Adicionar

    • Nome: Synergy
    • Comando: navegue se desejar, mas seu / usr / bin / synergy

    é isso, não adicione "c", nada até o fim da sinergia.

Agora também tenho o script em execução porque estava com preguiça de removê-lo ... então ambos estão lá.

[Seat:*]
autologin-user=

[SeatDefaults]
greeter-setup-script=/usr/bin/synergyc --MediaServer 192.168.2.253:port

Agora, para achar a porta interessante, não é a porta padrão, então faça esse tipo de terminal

netstat  -atn

agora como eu achei que era procurar o ip do servidor ... Eu conheço o ip do servidor SYNERGY, logo em frente a ele está o ip do cliente e o número da porta.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.