Запустите Synergy (или любое другое приложение) ДО входа в Ubuntu 16.04.2 LTS

14

Использование Ubuntu 16.04.2 (Xenial) на Intel x64 : {Установка процессора и Ubuntu}

На этот вопрос ответили миллион раз, но ни одно из решений не сработало. Поэтому я не хочу дублировать вопрос, но он не получил ответа.

Когда я запускаю терминал и sudo -i, следующая команда работает так, как ожидалось.

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

Затем я могу использовать программу для своих целей. Тем не менее, я хочу , чтобы это было сделано автоматически до того входа в систему, так что я могу использовать его цели с экрана входа в систему . (Synergy позволяет использовать одну клавиатуру и мышь на нескольких компьютерах, почти как виртуальный KVM, но вместо нажатия переключателей вы просто перемещаете мышь прямо на следующий экран, как если бы они все были подключены к одной видеокарте)

Первое, что я попробовал, был 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

Так что это определенно исполняемый файл, но после перезагрузки ПК:

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

Однако он не делает то, что должен, даже диалоги единства называются, говоря, что что-то пошло не так, что происходит только тогда, когда это выполняется, так что я могу смело предположить, что это так.

Мое самое безопасное предположение состоит в том, что программа запускается просто отлично, проблема в том, что rc.local запускается до начала сеанса x, поэтому никакие подключения к клавиатуре и мыши никогда не устанавливаются, что также, вероятно, выполняется только в начале казнь synergycи не пытался снова после этого момента.

Второе, что я попробовал, было «Startup Applications», оно работает, но только после входа в систему, а это не то, что мы хотим здесь.

Если мое предположение верно:

Какой способ вызвать выполнение процесса после запуска сервера x, но до того, как любой пользователь должен будет войти в систему.

Если мое предположение неверно:

Помогите

DeeJayh
источник
1
Вероятно, для gdm вам нужно, /etc/gdm/Init/Defaultа для Unity вам нужно добавить скрипт /etc/init/lightdm.conf.
Rinzwind
@Rinzwind lightdm.conf все еще слишком рано, даже в пост-стартовом разделе, из-за синергетических ошибок используется та же команда, которая прекрасно работает с терминала. Ubuntu выдает ошибку, говорящую, что синергия неожиданно прервалась, вероятно потому, что она не может получить доступ к ловушкам, необходимым для управления клавиатурой и мышью, но должна происходить правильно, когда отображается экран входа в систему, чтобы все уже
работало
Не очень полезно, но, возможно, немного утешительно - я боролся с этим примерно за год до того, как сдался (GDM) ... Я остановился на том, что, как я думал, он «мог» работать: два пользовательских модуля systemd, один для логин виртуального x-сервера (например, киоск, но не показан), а затем триггер, чтобы убить его при входе в систему реального пользователя. В конце концов, для моего случая использования оно того не стоило, но, возможно, это поможет вам. Всем привет ACME!
Mark
Если я не ошибаюсь, синергии нужен X-сервер, поэтому он не может работать без входа пользователя
Ziazis
Просто дикий удар в темноте, но вы пытались добавить к .xinitrc?
anonymous2

Ответы:

6

Для 16.04.2 создайте следующий файл (он не существует)

/etc/lightdm/lightdm.conf

с содержанием:

[Seat:*]
autologin-user=

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

Следуйте этому руководству Ubuntu Wiki для получения дополнительной информации.


РЕДАКТИРОВАТЬ:

От man synergyc:

НАЧАЛО АВТОМАТИЧЕСКИ ...

параметры не должны включать -fили --no-daemon. Важно убедиться, что не работает ни одна старая копия синергии, чтобы она не мешала новой.

jringoot
источник
2
Это действительно здорово! Полезно знать, достаточно просто добавить его /etc/lightdm/lightdm.conf, чтобы он работал полностью. Может быть, добавить то, что он должен добавить к ответу, вместо того, чтобы просто связать ссылку на Ubuntu.
Зиазис
1
Спас, если у вас есть автоматический вход, просто добавьте синергию в ваши приложения запуска.
Зиазис
2
Я уверен, что это работает на более старой версии Ubuntu, но не на моей. Я создал /etc/lightdm/lightdm.conf, потому что он не существует, и поместил его в две строки выше (конечно, изменив его на использование моей собственной информации). Теперь у меня появляется синергетическое соединение при загрузке экрана, однако теперь я больше не получить экран входа в систему. Это просто пустой экран с X-курсором. $ sudo find / -name lightdm.confдает /etc/init/lightdm.confи /etc/lightdm/lightdm.confс последним, который я создал вручную с двухслойным в нем. Удаление созданного мной файла lightdm.conf восстанавливает его работоспособность.
ДиДжей Джей
1
Я могу подтвердить, что этот подход работает на 16.04.2!
pa4080
1
@SpasSpasov Я знаю, что я так взволнован, я изменил ответ, чтобы отразить нашу специфику, ожидая экспертной оценки.
DeeJayh
1

Зайдите в свой стартап .. для новичков, как я, сделайте это так:

  • "поиск на вашем компьютере" введите в начало, нажмите на автозагрузку приложений
  • нажмите кнопку Добавить

    • Название: Синергия
    • Команда: просмотрите, если вам нравится, но его / usr / bin / synergy

    Вот и все, НЕ ДОБАВЛЯЙТЕ ЛЮБОЙ «С», ничего до конца синергии.

Теперь у меня также запущен скрипт, потому что мне лень его удалять .. так что оба есть.

[Seat:*]
autologin-user=

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

теперь найти порт интересно, это не порт по умолчанию, так что делайте этот тип в терминале

netstat  -atn

теперь, как я обнаружил, это выглядит для вашего сервера IP ... Я знаю, что мой сервер SYNERGY IP, так прямо напротив него мой IP-адрес клиента и номер порта.

leebrendalee
источник