我有一个带有 DSI 触摸屏的 RPI4。我已经安装了 lxde,但我不想使用它。相反,我想以全屏模式启动单个应用程序。
我目前通过 SSH 与我的设备进行交互。
我尝试的是停止 lxde 并天真地启动一个应用程序:
# service stop lxde
# xeyes
Error: Can't open display: localhost:10.0
重新开始 lxde 我注意到它在 xorg 上运行
# ps -axu | grep xorg
# root 1397 0.4 0.5 127712 46884 tty7 Ssl+ 16:38
0:01 /usr/lib/xorg/Xorg :0 vt07 -nolisten tcp -novtswitch -auth
/var/run/lxdm/lxdm-:0.auth
我想我需要通过一些包装器来运行我的应用程序,但我真的不明白该怎么做。
如何xeyes
从我的 ssh 遥控器以全屏模式运行?
最后,我想在启动后运行一个作为服务启动的 Qt 应用程序:
import sys
import PyQt5
from PyQt5.QtWidgets import *
import mainwindow_auto
class MainWindow(QMainWindow, mainwindow_auto.Ui_MainWindow):
def pressedOnButton(self):
print ("Pressed On!")
def pressedOffButton(self):
print ("Pressed Off!")
def __init__(self):
super(self.__class__, self).__init__()
self.setupUi(self) # gets defined in the UI file
self.btnOn.clicked.connect(lambda: self.pressedOnButton())
self.btnOff.clicked.connect(lambda: self.pressedOffButton())
def main():
app = QApplication(sys.argv)
form = MainWindow()
form.show()
sys.exit(app.exec_())
这样做的出发点是什么?
我认为您看到的错误实际上与您想要实现的目标无关。
localhost:10.0
表示它正在尝试使用 X11 Forwarding 使自己显示在您的 SSH客户端上,可能是因为您已在服务器上启用它并且正在使用-X
或等效的客户端 conf。所以首先要让它使用一个本地 X 服务器,或者 ssh 没有-X
(或者,使用-x
显式禁用它)或者在运行程序时使用适当的DISPLAY
环境变量(例如DISPLAY=:0 xeyes
)。至于您的“真正”问题,如果您想让程序在 DSI 显示器上显示,您无论如何都需要在 Pi 本身上运行 Xorg 服务器。为此,您可以使用 / 将该程序作为服务器的主要/唯一客户
xinit
端startx
。但是,AFAIK 由于 tty 的东西等原因,远程操作(如果可能的话)有点棘手。话虽如此,您可以查看这些是否适合您的用例:
PS 我不确定 DE/WM-less 方法是否能保证程序全屏运行。(我对 X 的内部结构不够熟悉,无法判断您是否需要在程序中做一些事情来实现这一点。)无论如何,您可以考虑使用轻量级 WM,它允许您在全屏模式下启动程序它的启动。
在以下位置查看 CloudTk
https://wiki.tcl-lang.org/page/CloudTk
这允许您在没有桌面的情况下远程运行单个 X11 应用程序。它需要 Tigervnc 和一个火柴盒窗口管理器。和浏览器中的 noVNC。
在 Raspberry Pi OS (buster) 上,我安装了 x11-apps 应用程序来解决这个问题。