树莓派 不安装桌面环境 全屏运行图形软件

本文共有3603个字,关键词:树莓派X服务chrome

首先我们使用的是树莓派官方系统的Lite版本,其他linux应该通用

前言

我们这里尝试全屏运行chromium浏览器
首先我们安装sudo apt install chromium-browser
这时直接运行浏览会报如下错误

pi@raspberrypi:~ $ chromium-browser 
[605:605:0523/020045.414169:ERROR:browser_main_loop.cc(584)] Failed to put Xlib into threaded mode.

(chromium-browser-v7:605): Gtk-WARNING **: 02:00:45.470: cannot open display:

这是因为我们系统中没有安装x服务,我们平时用的gnome桌面系统等都是基于x服务
运行图形应用程序的时候,会查找DISPLAY环境变量,然后把图形输出到这个地址上。

正常情况下,运行图形程序是需要x服务gnome等窗口管理系统才能打开图形程序。
作为生产环境,我们不需要窗口管理系统也可以运行我们的图形程序。具体操作如下

操作步骤

首先,我们通过sudo apt-get install xserver-xorg安装xorg(目前主流的x服务)
然后安装使用x服务打开软件的一个工具sudo apt-get install xinit

现在我们就可以使用xinit chromium-browser或者startx chromium-browser
来启动chromium浏览器了。但是,如下图所示,浏览器并没有填充整个屏幕。(看右侧光标,那里还是有黑边的)
81590239353_.pic.jpg

这时候修改~/.config/chromium/Default/Preferences文件
找到window_placement的部分修改如下参数即可。

"window_placement": {
    "bottom": 屏幕高像素,
    "left": 0,
    "maximized": true,
    "right": 屏幕宽像素,
    "top": 0,
    "work_area_bottom":  屏幕高像素,
    "work_area_left": 0,
    "work_area_right": 屏幕宽像素,
    "work_area_top": 0
}

注意,一定要关闭浏览器后再修改保存,然后再重新打开浏览器。
浏览器关闭的时候会重写此文件,造成修改被还原。

或者运行的时候使用参数chromium-browser --window-size=1920,1080 --window-position=0,0
也能达到一样的效果,可见,窗口位置和大小是目标程序自己定义的。
效果如下
71590239352_.pic.jpg

使用窗口管理器

安装软件
sudo apt install matchbox-window-manager

然后运行窗口startx matchbox-window-manager
切换另一个窗口ctrl + alt + F2后,设置DISPLAY后运行浏览器

export DISPLAY=:0
chromium-browser

此时切换回ctrl + alt + F1后发现浏览已经打开,而且标题栏可以切换多个窗口
61590239293_.pic_hd.jpg
同样,在ssh中设置export DISPLAY=:0后运行chromium-browser
窗口也会在设备上打开。

摘抄别人的启动代码

# 禁止显示器休眠
xset dpms 0 0 0
xset s off

# Hide the mouse from the display
unclutter &

# If Chrome crashes (usually due to rebooting), clear the crash flag so we don't have the annoying warning bar
sed -i 's/"exited_cleanly":false/"exited_cleanly":true/' /home/pi/.config/chromium/Default/Preferences
sed -i 's/"exit_type":"Crashed"/"exit_type":"Normal"/' /home/pi/.config/chromium/Default/Preferences

# 删除chrome临时目录
rm -r /home/pi/.config/chromium -f

matchbox-window-manager -use_cursor no -use_titlebar no &
chromium-browser --disable-features=TranslateUI --window-size=1920,1080 --fast --fast-start --disable-popup-blocking --disable-infobars --start-fullscreen --incognito  --disable-session-crashed-bubble  --allow-running-insecure-content https://yoururl/

Chromium-browser的启动参数

  • --disable-features=TranslateUI不显示翻译此页面的窗口提示
  • --window-size=1920,1080 满屏的尺寸,这个参数很重要,因为在Lite在显示屏默认不为全屏,这个参数对应启动设定的屏幕尺寸
  • --fast
  • --fast-start If this flag is present then this command line is being delegated to an already running chrome process via the fast path, ie: before chrome.dll is loaded. It is useful to tell the difference for tracking purposes.
  • --disable-popup-blocking禁用弹出拦截
  • --disable-desktop-notifications 禁用桌面通知,在 Windows 中桌面通知默认是启用的。
  • --disable-infobars让chorme启动后不提示黄色边框。
  • --start-fullscreen全屏模式,可以退出
  • --incognito 让浏览器直接以隐身模式启动。
  • --disable-session-crashed-bubbleDisables using bubbles for session restore request.
  • --allow-running-insecure-content 默认情况下,https 页面不允许从 http 链接引用 javascript/css/plug-ins。添加这一参数会放行这些内容。

备选参数

  • --touch-events=enabled
  • --kiosk 启用kiosk模式。(一种类似于全屏的浏览模式)

「一键投喂 软糖/蛋糕/布丁/牛奶/冰阔乐!」

pch18

(๑>ڡ<)☆谢谢老板~

使用微信扫描二维码完成支付

版权声明:如无特别说明,本文为作者原创,转载请在首行注明来源:https://pch18.cn/archives/376.html
添加新评论
仅有一条评论
  1. bitq:

    这篇文章正是我想要的,树莓派装的系统是NOOBS(不带桌面的),想运行Qt程序就犯愁了,感谢这篇文章,给我了思路