麒麟OS可启用窗口关闭前二次确认机制防止误操作丢失数据,方法包括:一、dconf编辑器开启全局确认;二、X11专属脚本监听拦截;三、修改.desktop文件注入确认逻辑;四、启用KYSEC应用保护模块熔断退出信号。

如果您在使用麒麟OS时频繁误触窗口右上角关闭按钮,导致正在编辑的文档或未保存的工作丢失,则可能是系统未启用窗口关闭前的二次确认机制。以下是为应用窗口添加关闭确认提示的多种配置方法:
一、通过dconf编辑器启用全局关闭确认
该方法修改GNOME/Mutter窗口管理器的默认行为,在所有符合XDG标准的图形应用关闭前强制弹出确认对话框,适用于UKUI及Kiran桌面环境下的统一防护。
1、按Ctrl+Alt+T打开终端,执行命令安装配置工具:sudo apt install dconf-editor
2、启动编辑器:dconf-editor
3、在左侧路径栏依次展开:org → gnome → desktop → interface
4、找到键名confirm-close,若不存在则右键空白处选择“新建键”,类型设为boolean,值设为true
5、关闭dconf-editor,无需重启,新设置立即对后续打开的应用生效
二、为特定应用单独注入关闭确认逻辑(X11专属)
该方法针对不响应全局策略的老旧X11程序(如Wine运行的Windows软件、部分Qt4应用),通过xprop与xdotool组合监听窗口状态,在检测到关闭动作时拦截并触发自定义确认流程。
1、安装依赖工具:sudo apt install xdotool x11-utils
2、创建守护脚本:nano ~/bin/confirm-close-guard.sh
3、写入以下内容:
# !/bin/bash
while true; do
sleep 0.3
if xwininfo -tree -root 2>/dev/null | grep -q "MyLegacyApp"; then
if xprop -root _NET_ACTIVE_WINDOW | grep -q "0x[0-9a-f]*"; then
WINDOW_ID=$(xprop -root _NET_ACTIVE_WINDOW | grep -o "0x[0-9a-f]*")
if xprop -id $WINDOW_ID WM_NAME | grep -q "MyLegacyApp"; then
if xdotool getwindowfocus getwindowname | grep -q "MyLegacyApp"; then
xdotool key --clearmodifiers Alt+F4
zenity --question --text="确定要关闭「MyLegacyApp」?未保存内容将丢失!" && xdotool key --clearmodifiers Alt+F4 || true
fi
fi
fi
fi
done
4、赋予执行权限:chmod +x ~/bin/confirm-close-guard.sh
5、将脚本加入开机自启:在“控制中心→用户→启动应用程序”中添加该脚本路径
三、修改应用级.desktop文件注入确认参数
该方法直接作用于桌面入口文件,在启动命令中前置调用shell包装器,使每次点击图标启动的应用均默认携带关闭确认逻辑,适用于已知可执行路径的主流应用(如gedit、evince、libreoffice)。
1、定位目标应用的.desktop文件:ls /usr/share/applications/ | grep -i libreoffice
2、备份原始文件:sudo cp /usr/share/applications/libreoffice-writer.desktop /usr/share/applications/libreoffice-writer.desktop.bak
3、编辑文件:sudo pluma /usr/share/applications/libreoffice-writer.desktop
4、找到Exec=行,将其修改为:
Exec=sh -c 'if zenity --question --text="关闭LibreOffice Writer?未保存文档将丢失!"; then /usr/lib/libreoffice/program/swriter %U; else exit 0; fi'
5、保存后刷新桌面数据库:sudo update-desktop-database
四、启用KYSEC应用保护模块拦截强制退出
该方法利用KylinOS内建的KYSEC安全框架,在内核层拦截SIGTERM/SIGKILL信号发送行为,对列入保护名单的应用进程实施退出动作熔断,仅允许通过安全中心授权方式终止,适用于高敏感业务场景。
1、以root身份打开终端:sudo -i
2、启用应用保护策略:kysecctl --set app-protect=on
3、将目标应用加入受保护列表:kysecctl --add-protected-app /usr/bin/evince
4、验证状态:getstatus | grep "app-protect",输出应显示“app-protect: on”且列表包含对应进程路径
5、重启KYSEC服务:systemctl restart kysec

















