Ubuntu 20.04下如何让Docker中运行的Kiosk模式Chromium始终置顶或隐藏桌面?
嗨,看你在Ubuntu 20.04下用Docker跑Kiosk模式Chromium时,碰到了重启后桌面左侧图标栏盖过浏览器的问题,刚好有两个实用的解决方案,你可以根据自己的需求选:
一、强制Chromium窗口始终置顶
如果不想动桌面设置,只想让浏览器永远压在最上面,可以用窗口管理工具wmctrl来实现:
步骤1:在容器内安装wmctrl
如果你的Docker镜像基于Debian/Ubuntu,先在Dockerfile里加上安装命令,或者启动容器时临时安装:
apt-get update && apt-get install -y wmctrl
步骤2:写个启动脚本自动置顶
创建一个简单的启动脚本,先启动Chromium,等窗口加载完成后再设置置顶:
#!/bin/bash # 后台启动Kiosk模式的Chromium,替换成你的目标URL chromium-browser --kiosk --no-first-run --disable-infobars https://your-target-url & # 等3秒让窗口完全加载(时间可以根据实际调整) sleep 3 # 找到Chromium窗口并设置始终在最上层 wmctrl -r "Chromium" -b add,above
如果窗口标题不是“Chromium”,可以先运行wmctrl -l查看所有窗口的列表,找到对应Chromium的窗口名称或ID,替换掉命令里的"Chromium"就行。
要是你想在宿主端管理窗口,也可以在宿主上安装wmctrl,然后在容器启动后执行同样的wmctrl命令,前提是容器的浏览器窗口能在宿主的X11界面里正常显示。
二、彻底隐藏桌面元素(从根源解决干扰)
既然你的场景只需要显示浏览器,完全可以把桌面的图标、左侧Dock这些元素都去掉,甚至让系统启动后直接进入浏览器,彻底看不到桌面:
1. 隐藏左侧的Ubuntu Dock
Ubuntu 20.04用的是GNOME的Dash to Dock扩展,执行下面的命令就能彻底隐藏它:
# 设置自动隐藏+智能隐藏,平时不会显示 gsettings set org.gnome.shell.extensions.dash-to-dock autohide true gsettings set org.gnome.shell.extensions.dash-to-dock intellihide true gsettings set org.gnome.shell.extensions.dash-to-dock dock-fixed false
要是想直接禁用Dock(以后需要的话还能恢复),可以用:
gsettings set org.gnome.shell.extensions.dash-to-dock show-dock false
2. 关闭桌面图标显示
执行这条命令就能把桌面上的所有图标都隐藏:
gsettings set org.gnome.desktop.background show-desktop-icons false
3. 设置空白桌面背景
把背景改成纯黑或纯白,这样就算浏览器重启的间隙也只会显示空白:
# 设置纯黑色背景,换成你想要的颜色码就行 gsettings set org.gnome.desktop.background picture-options 'none' gsettings set org.gnome.desktop.background primary-color '#000000'
4. 让系统直接启动到浏览器(跳过桌面)
如果这台机器专门用来跑Kiosk应用,可以设置自动登录后直接启动Chromium,完全跳过GNOME桌面:
- 先创建/编辑
~/.xinitrc文件,添加:
exec chromium-browser --kiosk --no-first-run --disable-infobars https://your-target-url
- 然后编辑
~/.bash_profile,添加:
if [ -z "$DISPLAY" ] && [ "$(tty)" = "/dev/tty1" ]; then startx fi
这样系统启动后会直接进入全屏的Chromium,连桌面加载的过程都看不到。
备注:内容来源于stack exchange,提问作者riz94107

