用 C++ 编写一个简单的 linux 桌面环境 [关闭]

Posted

技术标签:

【中文标题】用 C++ 编写一个简单的 linux 桌面环境 [关闭]【英文标题】:writing a simple linux desktop environment in c++ [closed] 【发布时间】:2013-09-28 07:59:37 【问题描述】:

我想写一个非常简单的Linux桌面环境或者一个不用DE就可以运行的程序,这是我的要求

应用程序或 DE 将是 IPTV 播放器(作为 IPTV 机顶盒) 我希望它在启动后直接运行(没有登录屏幕或类似的东西)

1- DE 将全屏

2- 无需运行任何其他 GUI 程序,只需通过我的应用程序调用命令行程序,因此无需窗口管理器或显示管理器(如果可能)

3-最少的服务,只想连接到局域网并读取 rtp (udp) 流

4-使用Qt和Qt Quick编写这个DE或应用程序,如果不能使用openGL

5-必须使用 libvlc 或任何其他库来读取和播放 rtp 流

6-使用apt-get安装或删除包

7-键盘和鼠标支持

我是一名 c++ 和 Qt 程序员,我有良好的 Linux 管理背景

如果您有任何想法来帮助编写 DE 或者如果有任何直接在 XWindow 上运行的现有 DE,请提供帮助

DE 将像 PC 一样用作普通 DVB 接收器来列出频道并选择一个观看

如何将我的 Qt 应用程序作为 DE 启动并将其放入 /usr/share/xsessions 作为 /usr/share/xsessions/myDE.desktop

如何配置 Qt 在没有窗口管理器或显示管理器的情况下运行

我应该使用 QApplication 还是任何其他类来运行我的应用程序

【问题讨论】:

我想知道如何编写这个 DE,如何将 linux 引导到我的应用程序而不是 gnome 或任何其他 DE 我可以在这个 DE 中使用 Qt 还是 Qt 必须在窗口管理器中运行 【参考方案1】:

首先我想说的是,您应该只考虑 Qt 5,而忘记 Qt 4。带有 QWS 的 Qt 4 设计有点陈旧,因此存在缺陷。 Qt 5 有一个很好的 QPA(Qt Platform Abstraction)接口,可以轻松添加平台插件,使架构变得健壮和灵活。

如何配置 Qt 在没有窗口管理器或显示管理器的情况下运行

如果您想要一些轻量级的解决方案,您可以将 Qt 与适当的平台插件(例如 eglfs、linuxfb、directfb、minimal、minimalegl 等)一起使用,而无需复杂的窗口和显示管理器。

您可以在此处找到 Qt 5 当前尝试支持的平台插件列表:

https://qt.gitorious.org/qt/qtbase/source/475cbed2446d0e3595e7b8ab71dcbc1ae5f59bcf:src/plugins/platforms

我应该使用QApplication 或任何其他类来运行我的应用程序

不,你应该使用QGuiApplication 来处理这类事情。 QApplication 适用于基于小部件的 Qt 5 应用程序,这是您应该使用的主要 Qt 版本。

很遗憾,Qt Quick 2 渲染依赖于 OpenGL api 的可用性,因此您需要准备好它以供参考。这并不一定意味着使用 GPU 进行硬件加速。拥有基于软件的开放标准实现也很好。

【讨论】:

以上是关于用 C++ 编写一个简单的 linux 桌面环境 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C++基础——Ubuntu下编写C++环境配置总结(C++基本简介Ubuntu环境配置编写简单C++例程)

[Linux]编写一个简单的C语言程序,编写Makefile文件。

从用 C++ 编写的桌面应用程序过渡到基于 Web 的应用程序

为X服务器和自定义显示硬件开发Linux驱动程序

Unity与DLL(C++)☀️二新建一个DLL的类库,并编写C++代码

Unity与DLL(C++)☀️二新建一个DLL的类库,并编写C++代码