ubuntu16.04.5自制图形程序替换桌面ui

1.需求

无论是ubuntu desktop或者server版,均需要在开机启动后运行一个图形程序,这里我们使用electron开发的图形界面程序。

2.知识标签

targets xserver xclient  lightdm rc.local 

3.操作-desktop

a.更改系统开机启动到字符界面,

运行级别是以前系统的开机启动选择概念,在16.04.5是“targets”的概念,

查看默认的target,执行:systemctl get-default

开机以命令模式启动,执行:systemctl set-default multi-user.target

开机以图形界面启动,执行:systemctl set-default graphical.target

一般ubuntu的默认target是graphical,通过更改到命令行模式,查看是否更改成功。

其实比如systemctl set-default multi-user.target 这个命令他是会新建一个软连接:Created symlink from /etc/systemd/system/default.target to /lib/systemd/system/multi-user.target.

重启之后你会发现你不会进入桌面了。理论上会默认进入tty1,这个时候你查看运行级别,命令runlevel,也会在级别3

b.编写一个默认的开机启动脚本并运行

在/etc/rc.local 运行该脚本,给它取个名字 mystartx 

且/etc/rc.local 需要添加运行权限 即+x

#!/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 executio
n                                                                   
# bits.                                                             
#                                                                   
# By default this script does nothing.                              

/usr/bin/mystartx

exit 0 
#这一行不要忘记 它涉及到另一个执行脚本的需要,否则上面那个脚本无法执行,或者执行也没有用

这个脚本也可以抄袭/usr/bin/startx,复制一个出来然后改名为mystartx,然后修改该脚本

在这一行 xinit "$client" $clientargs -- "$server" $display $serverargs  前面添加

client=... clientargs=... 

c【备注】.使用xinit命令启动xserver和你自己编写的界面程序

其实在这之前你可以尝试一下在命令行界面运行自己的图形程序,不过你首先需要关闭lightdm,命令是sudo service stop lightdm ,你只有关闭了图形界面之后才能在xserver上运行自己的图形界面程序,方式有其他更多种,这时候可以用xinit运行你的程序,

xinit [[client] options ] [-- [server] [display] options]  在这里所有的程序路径和参数路径都需要输入绝对路径,类似我举例说明:

xinit /usr/local/bin/electron /home/shaw/electron/workspace/myapp/. -- /usr/bin/Xorg :0

/usr/local/bin/electron是electron命令在的位置, /home/shaw/electron/workspace/myapp/. 是我编写的electron在的位置,-- 是分割xserver和xclient参数的分隔符,/usr/bin/Xorg 是Xerver在ubuntu的运行命令, :0代表默认在第一块显示屏展示你的图形界面程序。

4.看一下我的最终运行效果

猜你喜欢

转载自blog.csdn.net/u012853084/article/details/82952544