【问题标题】:Display GUI on Raspberry Pi without startx在没有 startx 的 Raspberry Pi 上显示 GUI
【发布时间】:2014-06-10 17:09:39
【问题描述】:

我目前正在使用我的全新覆盆子与 adafruit 的 touch-tft 和覆盆子凸轮。

我注意到,如果我运行 raspivid -p,它会在 bash 顶部的框架中显示预览。

如何创建应用程序(java、python、c++(首选))来显示 GUI 而无需 startx

我很想将 adafruit 的 touch-tft 用于项目,但 startx 需要大量资源。当然,如果有触控功能也很酷。

编辑:

也许我表达自己有点困惑:我想创建一个不需要 startx 但有某种 GUI 的应用程序。

以下答案并非 100% 准备就绪,但它们为我指明了正确的方向。由于我看到了许多类似的问题,我将尝试给出一个逐步的解决方案:

  1. 使用 adafruit 的 TFT 设置您的覆盆子:https://learn.adafruit.com/adafruit-pitft-28-inch-resistive-touchscreen-display-raspberry-pi/overview (您不必将 TFT 替换为 HDMI 作为标准显示器)

  2. 确保FRAMEBUFFER=/dev/fb1 startx 在 TFT 屏幕上正常运行,我的电视已插入 HDMI 端口,这样我可以在电视屏幕上使用 bash 并在 TFT 上运行 x

  3. 按照本教程创建您的第一个 pygame:http://www.pygame-doku.laymaxx.de/tut/intro/intro.html (你可以复制粘贴,wget ball.gif

  4. 在开头插入这两行:(github.com/notro/fbtft/wiki/Pygame)

    import os
    os.environ["SDL_FBDEV"] = "/dev/fb1"
    
  5. 如果要测试触摸屏,可以更改第 15 行: 来自:

    if event.type == pygame.QUIT: sys.exit()
    

    收件人:

    if event.type == pygame.MOUSEBUTTONDOWN: sys.exit()
    

    如果您触摸屏幕,这将退出应用程序

  6. 保存文件,例如pygame1.py 并使用$python pygame1.py执行

您现在应该在您的 TFT 上看到一个弹跳球,而 HDMI 输出仍然在您的电视上显示 BASH(但它当然没有激活)如果您完成了第 6 步,触摸屏幕将退出游戏

我为什么要这样做?通过这种方式,您可以显示一个简单的 GUI,例如按钮来执行一些操作,例如在使用 RPI 进行家庭控制时打开/关闭灯。

【问题讨论】:

  • 我相信您需要某种类型的窗口管理器来显示像gedit 这样的应用程序。
  • 这仅适用于 pygame 吗?我正在运行一个 kivy 应用程序。我想在启动时运行程序并且不想通过 startx 进入应用程序,因为我使用的是没有 GUI 的发行版,因为我需要在许多覆盆子上实现这一点。我会试试你的建议,如果可行,我会找到你并给你买杯啤酒,因为我这几天一直在绞尽脑汁将我的应用程序移植到 piTFT。
  • 它不起作用。最奇怪的是应用程序被移植到 HDMI 并且接受来自 piTFT 的触摸事件,所以我可以在 piTFT 上移动鼠标但没有图形显示。太令人沮丧了。

标签: raspberry-pi


【解决方案1】:

下面,您将找到有关如何成为最小窗口管理器来启动您选择的图形程序的详细说明。

-安装所需的软件包:

apt-get update
apt-get install xorg - no-install-recommends gdm3 matchbox-window-manager Iceweasel rsync-y

-有问题的系统,选择添加新用户界面gdm3。终端是默认名称将被使用。

adduser kiosk

-创建-Xsession。该脚本将在用户登录时执行。

xset s off
xset -dpms
matchbox-window-manager &
while true; do
rsync -qr --delete --exclude='.Xauthority’ /opt/kiosk/ $HOME/
firefox http://www.google.com (Replace your application!!!)
done

保存 Ctrl + O;退出:Ctrl + X

chmod a + x. xsession
cp / opt / kiosk / .xsession / home / kiosk

设置自动登录。 Kiosk 用户开机后会自动进入。

nano / etc/gdm3/daemon.conf
[Daemon]
AutomaticLoginEnable = true
AutomaticLogin = kiosk

如果需要,我们选择了配置、编程

-未加载全屏时的屏幕校准:

/ Boot / config.txt file, clear the comment:
disable_overscan = 1

希望能帮到你

【讨论】:

  • 是的,我该怎么做才能不会自动启动?如何从控制台调用 start-matchbox 脚本。 (我也喜欢控制台)
【解决方案2】:

您可以使用例如 pygame 库!检查本教程http://archive.furtherfield.org/rp-resources/RP-workshop-handout.pdf pg。 17

【讨论】:

  • 这绝对是我寻找的解决方案! Aso 一个很好的资源:@​​987654322@
  • 链接失效
  • @DjimOnDev 已修复
【解决方案3】:

简而言之,您不能,像 gedit 这样的应用程序是在桌面环境(例如 Gnome、Kde)之上构建的。

【讨论】:

  • 如何在 Rasbian 中将徽标显示在 bash 的顶部?
  • 因为 raspvid 库完全独立于桌面环境。更多信息请参考raspberrypi.org/documentation/raspbian/applications/camera.md
  • 这很明显,因为它在没有 startx 的情况下运行。问题是:如何使用自己的程序实现这一目标?
  • @kei 不正确。与以文本模式运行终端和命令行的 DOS 不同,Linux 以图形模式运行终端。因此,使用图形绘图库的脚本和程序可以在屏幕上绘制图像和形状。例如 pygame 库正在使用可以绘制到屏幕的图形库。但是,您将无法访问窗口子系统或任务切换。
  • @你们俩:如果你读到它的标题是“在没有 startx 的情况下在 Raspeberry 上显示 GUI”所以我问是否有办法显示任何类型的 GUI,gedit 只是一个例子申请。 PyGame 确实是一个很好的提示,而且 Bash 正在图形模式下运行。你能指点我一个可以在 bash 上绘制的 gfx-lib 吗?
【解决方案4】:

查看Urwid,这是一个基于文本的用户界面,可以在终端中运行,或者,我假设在没有 startx 的情况下启动的 Raspberry Pi 上。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 2021-03-31
    • 1970-01-01
    相关资源
    最近更新 更多