嵌入式Linux与独立应用程序

3
我希望制作一个运行单一应用程序的Linux操作系统,该应用程序将全屏显示,启动时不显示任何登录窗口、标题栏和最小化/最大化/关闭按钮。
有没有办法实现这个需求?这是嵌入式平台,我已经为它构建了Linux操作系统,并且我也有应用程序。

1
我的应用程序基于家庭自动化,使用 .net 编写。 - parmar7725274
我猜你是在Linux上用Mono构建的,它运行良好吗? - qdot
是的,一切都运行良好。 - parmar7725274
还要添加一些关于您构建的Linux操作系统的信息。http://stackoverflow.com/help/how-to-ask - qdot
该系统基于Linux操作系统,我已经构建了mono-runtime并且应用程序运行良好。它可以远程控制电子设备,如灯、空调等,并使用z-wave设备。现在我想制作一个Linux发行版,仅运行此应用程序,不显示任何其他内容。就像homegenie一样,这是一个开源项目。 - parmar7725274
显示剩余4条评论
1个回答

5

简而言之,X系统非常灵活。

当您的系统启动时,它会执行以下步骤:

  1. 加载并运行内核(以及相关的initrd,如果有的话,但这不重要)
  2. 启动init(进程1)
  3. 启动系统服务、网络等。
  4. 启动X服务器
  5. 启动窗口管理器(负责调整窗口大小等应用程序)
  6. 启动您的应用程序。

您需要做的是先禁用GUI登录和会话(最简单的方法是禁用X)- 您可以通过控制台终端登录(您始终可以使用Ctrl-Alt-F1访问它)

然后,启动类似于以下内容的东西:

X &
DISPLAY=:0 ./yourapp.exe

如果你的应用程序可以处理自己的全屏显示,那就没问题了。将这段代码添加到启动脚本中,就可以实现全屏了。
更多解释 窗口管理器的目的是管理窗口,很简单 :)
基本上,一个典型的X会话有三个组件:
- X服务器 - 这个软件提供硬件的抽象层(GPU驱动程序、键盘、鼠标、触摸屏等)。它有窗口的概念——X客户端可以在其中绘制。
- X客户端 - 其他所有东西。你的软件如果绘制了什么,很可能也是其中之一。浏览器也是如此。它们连接到X服务器并绘制。
- 窗口管理器 - 这是一种特殊类型的X客户端,该软件提供控制屏幕上窗口的功能。它经常绘制窗口装饰(最小化、最大化按钮),有时绘制任务栏等。
你可以完全自由地混合和匹配它们。像我喜欢用于许多原型嵌入式系统的 ratpoison 这样简单的、最小的窗口管理器只有全屏窗口的概念,并且可以在全屏应用程序之间切换(类似于Windows 8 Metro)。其他的则绘制窗口装饰,并允许重叠和级联窗口。
由于开发窗口管理器是一个简单而模块化的任务,因此有数百种选择。你也可以选择不使用它,此时,你的窗口必须自我管理(默认情况下,你将无法移动它们)。许多应用程序会遵守 -geometry 1920x1080+0+0 参数,告诉它们在 0,0 角落以 1920x1080 分辨率打开窗口-实际上是全屏显示。

还有一件事。这也会打开网页浏览器进行界面交互。所以,它还能正常工作吗? - parmar7725274
如果你想以任何方式(前台/后台,最大化)管理窗口,你可能需要启动一个极简窗口管理器。或者你可以让你的浏览器来完成这个任务。 - qdot
我不理解,请详细说明。 - parmar7725274
那么,根据你的说法,ratpoison 是最好的窗口管理器,对吧?它能够处理高端图形吗?[我的嵌入式硬件支持高端图形。] - parmar7725274
它不需要支持任何图形。它只是进行窗口管理,而且非常基础。图形部分在客户端(您的应用程序或浏览器)和X服务器之间。所有组件都是独立的。 - qdot
如果您只想要一个窗口控制屏幕,而不允许或管理单独的窗口,该怎么办? - Aaron Franke

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接