linux启动后自动登录并运行自定义图形界面程序

在《Ubuntu CTRL+ALT+F1~F6 进入命令模式后不支持中文显示的解决办法》一文中提到linux启动在以后运行一个独占显示器的图形程序的两种办法。

1、不启动xserver,使用fb或者directfb图形模式;

2、启动xserver不启动桌面系统。

 

第一种方法性能并不一定高,因为支持fb的显卡驱动可能找不到,就是用上显卡驱动了也需要CPU大量参与。另外如果用这种方式可供选择的图形程序开发技术就受限了。所以这种方法通常用在嵌入式环境下。

第二种方法只要显卡驱动了,CPU就能得到解脱。另外可以使用各种开发技术,甚至java、C#。

 

下面就介绍一下第二种方法。

 

首先需要安装有xserver,还需要配置linux启动后进入文本环境,而不是图形环境。这个就不详细介绍了。

 

设置自动登录

(内容来自http://blog.chinaunix.net/uid-94449-id-2002624.html,写的很简洁明了,直接借用。)

1.写脚本autologin

代码:
#!/bin/bash
/bin/login -f 
#你的用户名

移动到/usr/bin/下,并且用chmod +x autologin设置可执行权限

2.修改/etc/init/tty1.conf

修改前:

# tty1 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -8 38400 tty1

修改后:

# tty1 - getty
#
# This service maintains a getty on tty1 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -n -l /usr/bin/autologin -8 38400 tty1

 

设置自动运行图形界面程序

最初我的想法也是在启动桌面系统的代码中做手脚,修改相关的脚本,将启动桌面系统的代码修改为启动自定义图形界面程序的脚本。搜了一大圈没有找到结果,然后开机自己摸索startx的过程,从入口摸索下去找到一堆脚本大概理清了。

startx的过程这里有一篇文章,比较详细。http://blog.csdn.net/clozxy/article/details/5488699

继续按这个路子搜索文章,终于找到ubuntu设置开机启动图形应用程序,替换默认图形桌面一文。看了其中的做法,太野蛮,直接在中间劫持startx执行的客户程序。这么做有个重要的缺陷——startx命令被废了。切换到别的用户也不能用startx启动桌面系统了。

所以决定换思路。保留startx可用。仅仅在某个用户的启动脚本中加上启动自定义图形程序的代码。

linux用户的根目录下有各种在启动时设置环境变量,执行操作的脚本。这里在.bashrc中增加运行自定义图形界面程序的代码。

由于图形界面程序需要xserver,所以使用xinit命令来启动图形界面程序。

这样启动的图像界面程序没有窗口边框,因为没有启动窗口管理器。

 

补充一句最好不要直接修改.bashrc,.bashrc最后会有几行代码和注释。提示将自定义的初始化过程放到另外一个指定名字的文件中,.bashrc会自动去执行它。

 

(linux图形界面真不是linux的菜,启两个xserver之后简直慢死了。无意搜到这么一篇姨妈贴http://tieba.baidu.com/p/804746720?pid=8612574579&see_lz=1,其中的谈到的内容都没错。)

 

转载于:https://www.cnblogs.com/tgis/p/5515449.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux启动界面程序需要使用桌面环境的支持,而自定义服务通常是在命令行下运行程序,因此需要将命令行程序转化为可以在桌面环境下运行的界面程序。这可以通过以下步骤实现: 1. 安装桌面环境:如果你的Linux系统没有安装桌面环境,则需要安装一个。常见的桌面环境有Gnome、KDE、XFCE等,你可以根据自己的喜好选择一个。 2. 创建一个界面程序:使用你喜欢的编程语言创建一个可以在桌面环境下运行程序。例如,使用Python和GTK+创建一个简单的界面程序: ```python #!/usr/bin/env python import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk class MyWindow(Gtk.Window): def __init__(self): Gtk.Window.__init__(self, title="Hello World") self.button = Gtk.Button(label="Click Here") self.button.connect("clicked", self.on_button_clicked) self.add(self.button) def on_button_clicked(self, widget): print("Hello World") win = MyWindow() win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main() ``` 3. 将界面程序自定义服务关联:在自定义服务的脚本中添加启动界面程序的命令。例如,以下脚本在启动自定义服务之后,启动一个名为mygui的界面程序: ```bash #!/bin/bash # start my custom service ... # start GUI program export DISPLAY=:0.0 /usr/bin/python /path/to/mygui.py ``` 在这个脚本中,我们首先启动自定义服务,然后导出DISPLAY环境变量,这是Linux系统中用于指定图形界面显示的环境变量。接下来,我们启动Python解释器,并运行mygui.py脚本,这将启动一个名为mygui的界面程序。 4. 将自定义服务添加到系统服务:将脚本保存为一个可执行文件,并将它添加到系统服务中,这样它就可以在系统启动自动运行了。在Ubuntu系统中,你可以使用systemd来管理系统服务。例如,以下是一个将自定义服务添加到systemd中的示例: ```ini [Unit] Description=My Custom Service [Service] ExecStart=/path/to/myservice.sh Restart=always User=root [Install] WantedBy=multi-user.target ``` 在这个文件中,我们定义了一个名为My Custom Service的系统服务,它的启动命令为/path/to/myservice.sh,并且在失败时会自动重启。接下来,我们将这个文件保存为/etc/systemd/system/myservice.service,并使用以下命令启动服务: ```bash sudo systemctl daemon-reload sudo systemctl enable myservice sudo systemctl start myservice ``` 现在,当系统启动时,自定义服务和界面程序都将自动启动

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值