Inicie Synergy (o cualquier aplicación) ANTES de iniciar sesión en Ubuntu 16.04.2 LTS

14

Uso de Ubuntu 16.04.2 (Xenial) en Intel x64 : { Instalación del procesador y Ubuntu}

Esta pregunta ha sido respondida un millón de veces, pero ninguna de las soluciones funciona. Así que no quiero duplicar una pregunta, pero no ha sido respondida.

Cuando enciendo una terminal sudo -i, el siguiente comando funciona exactamente como se esperaba.

`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`

Entonces puedo utilizar el programa para su propósito. Sin embargo, quiero que esto se haga automáticamente antes de iniciar sesión para poder utilizar su propósito desde la pantalla de inicio de sesión. (Synergy le permite usar un teclado y un mouse en varias computadoras, casi como un KVM virtual, pero en lugar de presionar los interruptores, simplemente mueve el mouse hacia la siguiente pantalla como si estuvieran todos conectados a una tarjeta gráfica)

Lo primero que probé fue 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

Así que definitivamente es ejecutable, pero al reiniciar la 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`

Sin embargo, no está haciendo lo que se supone que debe hacer, incluso los diálogos de unidad se llaman diciendo que algo salió mal, lo que solo sucede cuando esto se ejecuta, por lo que puedo asumir con seguridad que es eso.

Mi suposición más segura es que el programa se está ejecutando bien, el problema es que rc.local se ejecuta antes de que comience la sesión x, por lo que nunca se establecen los enganches al teclado y al mouse, lo que probablemente también se haga al comienzo de ejecución synergycy no intento nuevamente más allá de ese punto.

Lo segundo que probé fue "Aplicaciones de inicio", funciona, pero no hasta después del inicio de sesión, que no es lo que queremos hacer aquí.

Si mi suposición es correcta:

¿Cuál es una manera de llamar a la ejecución de un proceso después de que el servidor x esté activo, pero antes de que cualquier usuario tenga que iniciar sesión?

Si mi suposición no es correcta:

Ayuda

DeeJayh
fuente
1
Probablemente para gdm necesita /etc/gdm/Init/Defaulty para Unity necesita agregar un script /etc/init/lightdm.conf.
Rinzwind
@Rinzwind lightdm.conf todavía es demasiado temprano, incluso en la sección posterior al inicio, se producen errores de sinergia con el mismo comando que funciona perfectamente desde el terminal. Ubuntu arroja un error que dice que la sinergia se detuvo inesperadamente, probablemente porque no puede acceder a los ganchos que necesita para controlar el teclado y el mouse todavía, necesita que suceda justo cuando se muestra la pantalla de inicio de sesión para que todo esté en funcionamiento
DeeJayh
No es terriblemente útil, pero quizás un poco reconfortante: luché con esto durante aproximadamente un año antes de que me diera por vencido (GDM) ... Me decidí por lo que pensé que era una forma en que "podría" funcionar: dos unidades de sistema de usuario, una para un inicio de sesión virtual del servidor x (piense en el quiosco pero no se muestra), luego un disparador para matarlo cuando un usuario real inicia sesión. Al final para mi caso de uso no valió la pena, pero tal vez eso te ayude. Todos saluden ACME!
Marque
Sin embargo, si no me equivoco, la sinergia necesita un servidor X, por lo que no puede funcionar sin un usuario conectado
Ziazis
Solo una puñalada salvaje en la oscuridad, pero ¿has intentado agregar .xinitrc?
anonymous2

Respuestas:

6

Para 16.04.2 cree el siguiente archivo (no existe)

/etc/lightdm/lightdm.conf

con los contenidos:

[Seat:*]
autologin-user=

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

Siga esta guía wiki de ubuntu para obtener más información.


EDITAR:

De man synergyc:

ARRANQUE AUTOMÁTICAMENTE ...

las opciones no deben incluir -fo --no-daemon. Es importante asegurarse de que no se estén ejecutando copias antiguas de sinergia para que no puedan interferir con la nueva.

jringoot
fuente
2
¡Eso es muy agradable! Es bueno saberlo, solo agregarlo /etc/lightdm/lightdm.confes suficiente para que funcione por completo. Tal vez agregue lo que tiene que agregar a la respuesta en lugar de solo vincular el enlace de ubuntu.
Ziazis
1
Spas si tiene un inicio de sesión automático, simplemente agregue sinergia a sus aplicaciones de inicio.
Ziazis
2
Estoy bastante seguro de que esto funciona en una versión anterior de Ubuntu, pero no en la mía. Creé /etc/lightdm/lightdm.conf porque no existía y puse las dos líneas de arriba (por supuesto cambiándolas para usar mi propia información) Ahora tengo una conexión de sinergia cuando la pantalla se carga, sin embargo, ya no obtener la pantalla de inicio de sesión. Es solo una pantalla en blanco con un cursor X. $ sudo find / -name lightdm.confda /etc/init/lightdm.confy /etc/lightdm/lightdm.confsiendo este último el que creé manualmente con el doble revestimiento. Al eliminar el lightdm.conf que creé, se restablece su funcionamiento.
DeeJayh
1
¡Puedo confirmar que este enfoque funciona en 16.04.2!
pa4080
1
@SpasSpasov Sé que estoy muy emocionado, cambié la respuesta para reflejar nuestros detalles, esperando la revisión por pares.
DeeJayh
1

Entra en tu startup ... para los novatos como yo, hazlo de esta manera:

  • escriba "buscar su computadora" en Inicio, haga clic en Aplicaciones de inicio
  • haga clic en Agregar

    • Nombre: sinergia
    • Comando: navegue si lo desea, pero es / usr / bin / synergy

    eso es todo, NO AGREGUE NINGUNA "c", nada hasta el final de la sinergia.

Ahora también tengo el script ejecutándose porque era demasiado vago para eliminarlo ... así que ambos están ahí.

[Seat:*]
autologin-user=

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

ahora para encontrar el puerto es interesante, no es el puerto predeterminado, así que haga este tipo en la terminal

netstat  -atn

ahora, cómo descubrí que era para buscar la dirección IP de su servidor ... Sé que la dirección IP de mi servidor SYNERGY está justo enfrente de mi dirección IP y número de puerto.

leebrendalee
fuente