可通过修改.desktop文件或编写包装脚本,在启动特定应用时自动隐藏任务栏且不改变系统全局设置:1. 在Exec=行中嵌入gsettings命令实现启隐恢;2. 使用xdotool+dbus精准控制显隐时机;3. 需验证hide-mode值、DBus通信及单例运行。

你需要让某个特定应用(比如全屏播放器、Kiosk模式程序或自研业务系统)启动时自动隐藏任务栏,避免遮挡界面或干扰用户操作,同时又不改变系统全局设置。
通过桌面文件修改实现启动时隐藏任务栏
该方法仅影响目标应用的单次启动行为,不改动系统级配置,适合部署定制化终端或信息亭场景。
1、打开文件管理器,进入 ~/Desktop/ 或 ~/.local/share/applications/ 目录,找到对应应用的 .desktop 文件(如 mykiosk.desktop)。
2、右键该文件 → 选择“属性” → 切换到“权限”选项卡 → 勾选“允许作为程序执行文件”。
3、再次右键该文件 → 选择“编辑”,在打开的文本编辑器中定位到 Exec= 行。
4、将原命令如 Exec=/opt/myapp/bin/start.sh 改为:
Exec=sh -c 'gsettings set org.deepin.dde.dock hide-mode 1 && /opt/myapp/bin/start.sh && gsettings set org.deepin.dde.dock hide-mode 0'
这行命令会在应用启动前强制启用任务栏自动隐藏,应用退出后再恢复原状态。注意:若应用是守护进程或长期驻留,第二条 gsettings 不会触发,需改用信号监听或包装脚本补全逻辑。
5、保存文件,双击该 .desktop 图标启动应用,任务栏将立即缩入底部边缘。
使用包装脚本+dbus控制任务栏显隐
当需要更精确控制隐藏时机(例如只在窗口真正全屏后才隐藏),或原生 .desktop 不支持复杂命令链时,此方法更可靠。
方法一:创建独立启动脚本
1、按 Ctrl + Alt + T 打开终端,执行:
mkdir -p ~/bin && cd ~/bin && touch myapp-launcher.sh && chmod +x myapp-launcher.sh
2、用文本编辑器打开该文件,写入以下内容:
#!/bin/bashgsettings set org.deepin.dde.dock hide-mode 1/opt/myapp/bin/start.sh &PID=$!sleep 1.5xdotool search --onlyvisible --class "myapp" windowfocus key Escape 2>/dev/null || truewait $PIDgsettings set org.deepin.dde.dock hide-mode 0
其中 xdotool 用于确认窗口已就绪(需先安装:sudo apt install xdotool),sleep 1.5 是为窗口映射预留缓冲,过短会导致 hide-mode 生效早于窗口绘制,造成闪烁。
3、将 .desktop 文件中的 Exec= 行改为 Exec=~/bin/myapp-launcher.sh。
方法二:直接绑定到应用主进程生命周期(高级)
若应用支持传参或有日志钩子,可在其启动参数中注入 dbus 调用:
dbus-send --session --dest=com.deepin.dde.Dock /com/deepin/dde/Dock com.deepin.dde.Dock.SetHideMode uint32:1
该指令等效于图形界面开启“自动隐藏”,但绕过 gsettings 缓存层,响应更快。需确保应用启动环境能正确继承 dbus session bus 地址,否则会报错 Failed to open connection to session bus。
验证与故障排查
第一步:检查 hide-mode 当前值
在终端中运行 gsettings get org.deepin.dde.dock hide-mode,返回值应为 0(常显)、1(自动隐藏)或 2(一直隐藏)。
第二步:确认 Dock 进程是否响应 dbus
执行 dbus-send --session --dest=com.deepin.dde.Dock --type=method_call /com/deepin/dde/Dock com.deepin.dde.Dock.GetVersion,若返回版本号说明通信正常;若超时,需检查 export $(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$(pgrep -u $USER dde-dock)/environ 2>/dev/null) 是否已加载。
第三步:避免多实例冲突
若同一应用被多次启动,后一次会覆盖前一次的 hide-mode 恢复逻辑。在包装脚本开头加入 pgrep -f "myapp-launcher.sh" | grep -v $$ | xargs kill 2>/dev/null 可确保单例运行。
第四步:重启 Dock 进程强制刷新(应急)
执行 killall dde-dock && nohup dde-dock &,该操作会重建任务栏上下文,使新 hide-mode 立即生效,但会导致所有固定图标临时重排。

















