Uruchom Synergy (lub dowolną aplikację) PRZED zalogowaniem się do Ubuntu 16.04.2 LTS

14

Korzystanie z Ubuntu 16.04.2 (Xenial) na Intel x64 : {Instalacja zarówno procesora, jak i Ubuntu}

Odpowiedzi na to pytanie milion razy, ale żadne z rozwiązań nie działa. Nie chcę więc powielać pytania, ale nie ma na nie odpowiedzi.

Po uruchomieniu terminala i sudo -inastępujące polecenie działa zgodnie z oczekiwaniami.

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

Jestem wtedy w stanie wykorzystać program do jego celu. Chcę jednak, aby zrobiło się to automatycznie przed zalogowaniem, aby móc wykorzystać jego cel z ekranu logowania. (Synergy pozwala używać jednej klawiatury i myszy na wielu komputerach, prawie jak wirtualna KVM, ale zamiast naciskać przełączniki, wystarczy przesunąć mysz na następny ekran, jakby wszystkie były podłączone do jednej karty graficznej)

Pierwszą rzeczą, której spróbowałem, było 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

Jest to więc zdecydowanie plik wykonywalny, ale po ponownym uruchomieniu komputera:

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

Jednak nie robi tego, co powinien, nawet dialogi jedności są nazywane mówiącami, że coś poszło nie tak, co dzieje się tylko wtedy, gdy się to wykonuje, więc mogę spokojnie założyć, że tak jest.

Moim najbezpieczniejszym założeniem jest to, że program działa poprawnie, problem polega na tym, że rc.local jest uruchamiany przed rozpoczęciem sesji x, więc żadne zaczepienia do klawiatury i myszy nigdy nie są ustanawiane, co jest prawdopodobnie wykonywane tylko na początku wykonanie synergyci nie podjęto ponownej próby poza tym punktem.

Drugą rzeczą, którą próbowałem, było „Aplikacje startowe”, działa, ale dopiero po zalogowaniu, co nie jest tym, co chcemy tutaj robić.

Jeśli moje założenie jest prawidłowe:

Jaki jest sposób na wywołanie wykonania procesu po uruchomieniu serwera x, ale zanim jakikolwiek użytkownik będzie musiał się zalogować.

Jeśli moje założenie jest nieprawidłowe:

Wsparcie

DeeJayh
źródło
1
Prawdopodobnie dla gdm potrzebujesz, /etc/gdm/Init/Defaulta dla Unity musisz dodać skrypt /etc/init/lightdm.conf.
Rinzwind
@Rinzwind lightdm.conf jest wciąż za wcześnie, nawet w jego sekcji po uruchomieniu synergia nie działa poprawnie przy użyciu tego samego polecenia, które działa idealnie z poziomu terminala. Ubuntu zgłasza błąd informujący, że synergia została zatrzymana nieoczekiwanie, prawdopodobnie dlatego, że nie ma jeszcze dostępu do zaczepów potrzebnych do sterowania klawiaturą i myszą, ale musi to nastąpić dokładnie po wyświetleniu ekranu logowania, aby wszystko już
działało
Niezbyt pomocny, ale może trochę pocieszający - walczyłem z tym przez około rok, zanim się poddałem (GDM) ... Rozmyślałem o tym, co uważam za sposób, w jaki może to „działać”: dwie jednostki systemowe, jedna dla wirtualny login x-server (pomyśl kiosk, ale nie pokazano), a następnie wyzwalacz, aby go zabić, gdy zaloguje się rzeczywisty użytkownik. W końcu dla mojego przypadku użycia nie było warto, ale może to ci pomoże. Cały grad ACME!
Mark
Jeśli się nie mylę, synergia potrzebuje jednak serwera X, więc nie może on działać bez zalogowanego użytkownika
Ziazis
Po prostu dzikie dźgnięcie w ciemności, ale czy próbowałeś coś dodać .xinitrc?
anonimowy2

Odpowiedzi:

6

Dla 16.04.2 utwórz następujący plik (nie istnieje)

/etc/lightdm/lightdm.conf

z zawartością:

[Seat:*]
autologin-user=

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

Postępuj zgodnie z tym przewodnikiem wiki Ubuntu, aby uzyskać więcej informacji.


EDYTOWAĆ:

Od man synergyc:

URUCHAMIANIE AUTOMATYCZNIE ...

opcje nie mogą obejmować -flub --no-daemon. Ważne jest, aby upewnić się, że nie działają żadne stare kopie synergii, aby nie mogły zakłócać działania nowej.

jringoot
źródło
2
To naprawdę miłe! Dobrze wiedzieć, wystarczy dodać go /etc/lightdm/lightdm.conf, aby działał całkowicie. Może dodaj to, co musi dodać do odpowiedzi, zamiast tylko linkować link do Ubuntu.
Ziazis
1
Spa, jeśli masz automatyczne logowanie, po prostu dodaj synergię do aplikacji startowych.
Ziazis
2
Całkiem pewne, że działa to na starszej wersji Ubuntu, ale nie na mojej. Utworzyłem /etc/lightdm/lightdm.conf, ponieważ nie istniał i wstawiłem dwie powyższe linie (oczywiście zmieniając go, aby używał własnych informacji) Mam teraz połączenie synergiczne, gdy ekran się ładuje, ale teraz już nie dostać ekran logowania. To tylko pusty ekran z kursorem X. $ sudo find / -name lightdm.confdaje, /etc/init/lightdm.confa /etc/lightdm/lightdm.conften ostatni jest tym, który stworzyłem ręcznie z dwuwarstwową zawartością. Usunięcie utworzonego przeze mnie pliku lightdm.conf przywraca go do stanu gotowości do pracy.
DeeJayh
1
Mogę potwierdzić, że to podejście działa 16.04.2!
pa4080
1
@SpasSpasov Wiem, że jestem tak podekscytowany, że zmieniłem odpowiedź, aby odzwierciedlić naszą specyfikę, czekając na recenzję.
DeeJayh
1

Przejdź do swojego startupu ... dla początkujących jak ja, zrób to w ten sposób:

  • „Wyszukaj na komputerze” wpisz na początku, kliknij Aplikacje startowe
  • kliknij Dodaj

    • Nazwa: Synergia
    • Polecenie: przeglądaj, jeśli chcesz, ale jego / usr / bin / synergy

    to jest to, NIE DODAWAJ ŻADNEGO „c”, nic do końca synergii.

Teraz mam również uruchomiony skrypt, ponieważ byłem zbyt leniwy, aby go usunąć. Więc oba są dostępne.

[Seat:*]
autologin-user=

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

teraz znalezienie portu jest interesujące, nie jest to domyślny port, więc zrób ten typ w terminalu

netstat  -atn

teraz jak znalazłem, że szukałem twojego ip serwera ... Znam mój ip serwera SYNERGY, więc naprzeciwko niego jest mój klient ip i numer portu.

leebrendalee
źródło