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.confdá /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.