在登录Ubuntu 16.04.2 LTS之前启动Synergy(或任何应用程序)

Intel x64上使用Ubuntu 16.04.2(Xenial) :{Both Processor和Ubuntu install}

这个问题已被回答了一百万次,但没有一个解决方案有效。 所以我不想复制一个问题,但它没有得到回答。

当我启动终端和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

所以它肯定是可执行的,但在重新启动PC时:

~~~ ps aux | grep syner 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而不是再次尝试。

我尝试的第二件事是“启动应用程序”,它可以工作,但直到登录后,这不是我们想要的东西。

如果我的假设是正确的:

什么是在x服务器启动后但在任何用户必须登录之前调用进程执行的方法。

如果我的假设不正确:

救命

对于16.04.2,创建以下文件(它不存在)

 /etc/lightdm/lightdm.conf 

内容如下:

 [Seat:*] autologin-user= [SeatDefaults] greeter-setup-script=/usr/bin/synergyc --name  192.168.xx 

请关注此ubuntu wiki指南以获取更多信息。


编辑:

来自man synergyc

自动启动……

options不得包含-f--no-daemon 。 重要的是确保没有旧的协同作用副本正在运行,因此它们不会干扰新的协同作用。

如果您正在使用GDM :,使用编辑器作为root用户,例如gksudo geditsudo nano – 这些步骤直接从https://help.ubuntu.com/community/SynergyHowto复制

在服务器上

在文件/ etc / gdm3 / Init / Default的末尾,就在显示exit 0的行之前添加以下内容:

 /usr/bin/killall synergys while [ $(pgrep -x synergys) ]; do sleep 0.1; done /usr/bin/synergys 

将以下内容添加到/ etc / gdm3 / PostLogin / Default的末尾(如果该文件尚不存在,则创建该文件):

 /usr/bin/killall synergys while [ $(pgrep -x synergys) ]; do sleep 0.1; done 

如果您创建了该文件,请确保使用以下命令执行该文件:

sudo chmod + x / etc / gdm3 / PostLogin / Default

现在,使用以下内容创建一个会话文件/etc/X11/Xsession.d/85synergys

 /usr/bin/killall synergys while [ $(pgrep -x synergys) ]; do sleep 0.1; done /usr/bin/synergys 

最后,我们必须使用以下命令使文件可执行:

 sudo chmod +x /etc/X11/Xsession.d/85synergys 

在客户端上

在/ etc / gdm3 / Init / Default的末尾,就在显示exit 0的行之前添加以下内容:

 /usr/bin/killall synergyc while [ $(pgrep -x synergyc) ]; do sleep 0.1; done /usr/bin/synergyc  

请务必使用运行协同作用的计算机的主机名或IP地址替换。

注意:如果您的系统已配置为自动登录,则此步骤可能会导致ubuntu在转到桌面之前挂起。 如果是这种情况,请从/ etc / gdm / Init / Default中删除这些行,一切都应该正常。 如果您的系统在此阶段挂起,您可以按CTRL-ALT-F1以通过命令行登录并编辑此文件。(在10.04LTS Lucid Lynx上测试)

将以下内容添加到/ etc / gdm3 / PostLogin / Default的末尾(如果该文件尚不存在,则创建该文件):

 /usr/bin/killall synergyc while [ $(pgrep -x synergyc) ]; do sleep 0.1; done 

如果您创建了该文件,请确保使用以下命令执行该文件:

 sudo chmod +x /etc/gdm3/PostLogin/Default 

现在,使用以下内容创建会话文件/etc/X11/Xsession.d/85synergyc

 /usr/bin/killall synergyc while [ $(pgrep -x synergyc) ]; do sleep 0.1; done /usr/bin/synergyc  

当任何用户登录时,这将运行synergyc。确保替换为运行协同作用的计算机的主机名或IP地址。 最后,我们必须使用以下命令使文件可执行:

 sudo chmod +x /etc/X11/Xsession.d/85synergyc 

进入你的创业……对于像我这样的新手这样做:

  • “搜索您的计算机”键入start,单击“启动应用程序”
  • 单击添加

    • 名称:Synergy
    • 命令:如果你愿意,可以浏览它的/ usr / bin / synergy

    就是这样,不要添加任何“c”,没有任何结束协同作用。

现在我也有脚本运行,因为我太懒了删除它..所以两者都在那里。

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

现在找到端口很有意思,它不是默认端口,所以在终端中这样做

 netstat -atn 

现在我怎么发现它是寻找你的服务器IP …我知道我的SYNERGY服务器IP所以对面就是我的客户端IP和端口号。