Démarrez Synergy (ou toute application) AVANT de vous connecter à Ubuntu 16.04.2 LTS

14

Utilisation d' Ubuntu 16.04.2 (Xenial) sur Intel x64 : {Installation du processeur et d'Ubuntu}

Cette question a reçu une réponse un million de fois, mais aucune des solutions ne fonctionne. Je ne veux donc pas dupliquer une question, mais elle n'a pas reçu de réponse.

Lorsque j'allume un terminal et sudo -i, la commande suivante fonctionne exactement comme prévu.

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

Je peux alors utiliser le programme à cette fin. Cependant, je veux que cela se fasse automatiquement avant la connexion afin que je puisse utiliser son objectif partir de l'écran de connexion. (Synergy vous permet d'utiliser un clavier et une souris sur plusieurs ordinateurs, presque comme un KVM virtuel, mais au lieu d'appuyer sur des commutateurs, vous faites simplement rouler votre souris directement sur l'écran suivant comme s'ils étaient tous connectés à une carte graphique)

La première chose que j'ai essayée a été 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

Il est donc définitivement exécutable, mais lors du redémarrage du 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`

Cependant, il ne fait pas ce qu'il est censé faire, même des dialogues d'unité sont appelés pour dire que quelque chose s'est mal passé, ce qui ne se produit que lorsque cela s'exécute, donc je peux supposer que c'est ça.

Mon hypothèse la plus sûre est que le programme s'exécute très bien, le problème est que rc.local est exécuté avant le début de la session x, de sorte que les crochets au clavier et à la souris ne sont jamais établis, ce qui n'est probablement fait qu'au début de exécution de synergyc et ne pas tenté à nouveau au-delà de ce point.

La deuxième chose que j'ai essayée était "Applications de démarrage", cela fonctionne, mais pas avant la connexion, ce qui n'est pas ce que nous voulons faire ici.

Si mon hypothèse est correcte:

Quel est le moyen d'appeler l'exécution d'un processus une fois que le serveur x est en place, mais avant qu'un utilisateur ne se connecte?

Si mon hypothèse n'est pas correcte:

Aidez-moi

DeeJayh
la source
1
Probablement pour gdm dont vous avez besoin /etc/gdm/Init/Defaultet pour Unity, vous devez ajouter un script à /etc/init/lightdm.conf.
Rinzwind
@Rinzwind lightdm.conf est encore trop tôt, même dans la section post-démarrage de celui-ci, des erreurs de synergie se produisent en utilisant la même commande qui fonctionne parfaitement bien depuis le terminal. Ubuntu génère une erreur indiquant que la synergie s'est arrêtée de manière inattendue, probablement parce qu'il ne peut pas encore accéder aux crochets dont il a besoin pour contrôler le clavier et la souris, que cela se produise juste lorsque l'écran de connexion est affiché pour que tout soit déjà opérationnel
DeeJayh
Pas terriblement utile mais peut-être un peu réconfortant - j'ai eu du mal avec cela pendant environ un an avant d'abandonner (GDM) ... une connexion virtuelle au serveur x (pensez au kiosque mais non illustré), puis un déclencheur pour le tuer lorsqu'un utilisateur réel se connecte. En fin de compte pour mon cas d'utilisation, cela n'en valait pas la peine, mais peut-être que cela vous aide. Salut à tous ACME!
Mark
Si je ne me trompe pas, la synergie a besoin d'un serveur X, donc cela ne peut pas fonctionner sans un utilisateur connecté
Ziazis
Juste un coup de poignard sauvage dans le noir, mais avez-vous essayé d'en ajouter .xinitrc?
anonyme2

Réponses:

6

Pour 16.04.2 créez le fichier suivant (il n'existe pas)

/etc/lightdm/lightdm.conf

avec le contenu:

[Seat:*]
autologin-user=

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

Suivez ce guide wiki ubuntu pour plus d'informations.


ÉDITER:

De man synergyc:

DÉMARRAGE AUTOMATIQUE ...

les options ne doivent pas inclure -fou --no-daemon. Il est important de s'assurer qu'aucune ancienne copie de synergie n'est en cours d'exécution afin qu'elles ne puissent pas interférer avec la nouvelle.

jringoot
la source
2
C'est vraiment super sympa! Bon à savoir, il suffit de l'ajouter à /etc/lightdm/lightdm.confpour le faire fonctionner correctement. Ajoutez peut-être ce qu'il a à ajouter à la réponse au lieu de ne lier que le lien ubuntu.
Ziazis
1
Spas si vous avez une connexion automatique, ajoutez simplement une synergie à vos applications de démarrage.
Ziazis
2
Je suis sûr que cela fonctionne sur une ancienne version d'Ubuntu, mais pas sur la mienne. J'ai créé /etc/lightdm/lightdm.conf parce qu'il n'existait pas et j'ai mis les deux lignes ci-dessus (bien sûr en le changeant pour utiliser mes propres informations) J'ai maintenant une connexion synergique lorsque l'écran se charge, mais je n'ai plus obtenez l'écran de connexion. C'est juste un écran vide avec un curseur X. $ sudo find / -name lightdm.confdonne /etc/init/lightdm.confet /etc/lightdm/lightdm.confavec ce dernier étant celui que j'ai créé manuellement avec le doublure en elle. La suppression du fichier lightdm.conf que j'ai créé le remet en état de fonctionnement.
DeeJayh
1
Je peux confirmer que cette approche fonctionne le 16.04.2!
pa4080
1
@SpasSpasov Je sais que je suis tellement excité, j'ai changé la réponse pour refléter nos spécificités, en attendant l'examen par les pairs.
DeeJayh
1

Allez dans votre startup .. pour les débutants comme moi, procédez comme suit:

  • "rechercher votre ordinateur" tapez dans le démarrage, cliquez sur Démarrer les applications
  • cliquez sur Ajouter

    • Nom: Synergy
    • Commande: parcourez si vous le souhaitez mais sa / usr / bin / synergy

    c'est tout, N'AJOUTEZ AUCUN "c", rien à la fin de la synergie.

Maintenant, j'ai également le script en cours d'exécution parce que j'étais trop paresseux pour le supprimer ... donc les deux sont là.

[Seat:*]
autologin-user=

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

maintenant pour trouver le port est intéressant, ce n'est pas le port par défaut alors faites ce type dans le terminal

netstat  -atn

Maintenant, comment je l'ai trouvé, recherchez l'IP de votre serveur ... Je connais l'IP de mon serveur SYNERGY, donc juste en face de lui, mon IP client et mon numéro de port.

leebrendalee
la source