Avviare Synergy (o qualsiasi altra applicazione) PRIMA della registrazione in Ubuntu 16.04.2 LTS


14

Utilizzo di Ubuntu 16.04.2 (Xenial) su Intel x64 : {Installazione sia del processore che di Ubuntu}

Questa domanda ha ricevuto risposta un milione di volte, ma nessuna delle soluzioni funziona. Quindi non voglio duplicare una domanda, ma non ha ricevuto risposta.

Quando accendo un terminale e sudo -i, il seguente comando funziona esattamente come previsto.

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

Sono quindi in grado di utilizzare il programma per il suo scopo. Tuttavia, desidero che ciò avvenga automaticamente prima dell'accesso, in modo da poterne utilizzare lo scopo dalla schermata di accesso. (Synergy ti consente di utilizzare una tastiera e un mouse su più computer, quasi come una KVM virtuale ma invece di premere gli interruttori, fai scorrere il mouse sulla schermata successiva come se fossero tutti collegati a una scheda grafica)

La prima cosa che ho provato è stata 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

Quindi è sicuramente eseguibile, ma al riavvio del 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`

Comunque non sta facendo quello che dovrebbe, anche i dialoghi di unità vengono chiamati dicendo che qualcosa è andato storto, cosa che accade solo quando questo viene eseguito, quindi posso tranquillamente supporre che sia quello.

La mia ipotesi più sicura è che il programma viene eseguito correttamente, il problema è che rc.local viene eseguito prima dell'inizio della sessione x, quindi non vengono mai stabiliti eventuali hook alla tastiera e al mouse, cosa che probabilmente viene eseguita solo all'inizio di esecuzione synergyce non tentata di nuovo oltre quel punto.

La seconda cosa che ho provato è stata "Applicazioni di avvio", funziona, ma non fino a dopo il login, che non è quello che vogliamo che accada qui.

Se la mia ipotesi è corretta:

Qual è un modo per chiamare l'esecuzione di un processo dopo che il server x è attivo, ma prima che qualsiasi utente debba effettuare il login.

Se la mia ipotesi non è corretta:

Aiuto


1
Probabilmente per gdm è necessario /etc/gdm/Init/Defaulte per Unity è necessario aggiungere uno script a /etc/init/lightdm.conf.
Rinzwind,

@Rinzwind lightdm.conf è ancora troppo presto, anche nella sezione post-avvio, gli errori di sinergia si esauriscono usando lo stesso comando che funziona perfettamente dal terminale. Ubuntu genera un errore che dice che la sinergia si è interrotta in modo imprevisto, probabilmente perché non può ancora accedere agli hook necessari per controllare tastiera e mouse, è necessario che accada proprio quando viene visualizzata la schermata di accesso in modo che tutto sia già attivo e funzionante
DeeJayh

Non terribilmente utile ma forse un po 'confortante - ho lottato con questo per circa un anno prima di arrendermi (GDM) ... Mi sono accontentato di quello che pensavo fosse un modo in cui "avrebbe potuto" funzionare: due unità systemd utente, una per un login x-server virtuale (pensa al chiosco ma non mostrato), quindi un trigger per ucciderlo quando un utente reale accede. Alla fine per il mio caso d'uso non ne valeva la pena, ma forse questo ti aiuta. Tutti grandine ACME!
Segna

Se non sbaglio la sinergia ha bisogno di un server X, quindi non può funzionare senza un utente connesso
Ziazis,

Solo una pugnalata selvaggia nel buio, ma hai provato ad aggiungere .xinitrc?
anonymous2,

Risposte:


6

Per 16.04.2 creare il seguente file (non esiste)

/etc/lightdm/lightdm.conf

con i contenuti:

[Seat:*]
autologin-user=

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

Segui questa guida wiki ubuntu per maggiori informazioni.


MODIFICARE:

Da man synergyc:

AVVIO AUTOMATICO ...

le opzioni non devono includere -fo --no-daemon. È importante assicurarsi che non siano in esecuzione vecchie copie di sinergia in modo che non possano interferire con quella nuova.


2
È davvero bello! Buono a sapersi, basta aggiungerlo a /etc/lightdm/lightdm.confper farlo funzionare completamente. Forse aggiungi ciò che deve aggiungere alla risposta invece di collegare solo il collegamento Ubuntu.
Ziazis,

1
Se hai un accesso automatico, aggiungi solo una sinergia alle tue applicazioni di avvio.
Ziazis,

2
Abbastanza sicuro che funzioni su una versione precedente di Ubuntu, ma non sulla mia. Ho creato /etc/lightdm/lightdm.conf perché non esisteva e ho inserito le due righe sopra (ovviamente cambiandole per usare le mie informazioni) Ora ho una connessione sinergica quando lo schermo si carica, tuttavia ora non più ottenere la schermata di accesso. È solo uno schermo vuoto con un cursore X. $ sudo find / -name lightdm.conf/etc/init/lightdm.confe /etc/lightdm/lightdm.confcon quest'ultimo è quello che ho creato manualmente con il doppio rivestimento. La rimozione di lightdm.conf che ho creato lo ripristina allo stato di funzionamento.
DeeJayh,

1
Posso confermare che questo approccio funziona il 16.04.2!
pa4080,

1
@SpasSpasov So di essere così eccitato, ho cambiato la risposta per riflettere i nostri dettagli, in attesa di una revisione tra pari.
DeeJayh,

1

Vai nella tua startup..per i neofiti come me fallo in questo modo:

  • "cerca nel tuo computer" digitare start, fare clic su Startup Applications
  • fai clic su Aggiungi

    • Nome: sinergia
    • Comando: naviga se vuoi ma è / usr / bin / synergy

    questo è tutto, NON AGGIUNGERE NESSUNA "c", niente alla fine della sinergia.

Ora ho anche lo script in esecuzione perché ero troppo pigro per rimuoverlo ... quindi entrambi sono lì.

[Seat:*]
autologin-user=

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

ora per trovare la porta è interessante, non è la porta predefinita quindi fare questo tipo nel terminale

netstat  -atn

ora come l'ho trovato è stato cercare il tuo IP del server ... Conosco il mio IP del server SYNERGY così di fronte è il mio IP client e il numero di porta.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.