如何为gnome-terminal添加关闭窗口确认警告功能
如何为gnome-terminal添加关闭窗口确认警告功能
嗨,我完全懂你这种糟心的情况——正用sudo装关键软件呢,手滑点了终端的关闭按钮,那进度直接泡汤!别担心,我给你两种实用的方法,一步步来,新手也能搞定:
方法一:全局开启关闭警告(简单直接)
这个方法会让所有GNOME终端窗口在关闭前都弹出确认提示,不管有没有运行命令,优点是设置起来超简单:
- 打开一个新终端,输入这条命令查看当前设置:
gsettings get org.gnome.Terminal.Legacy.Settings warn-on-close - 如果返回的是
false,说明没开启警告,输入下面这条命令开启:
之后你再关终端,就会弹出确认框啦。要是哪天觉得烦了,把gsettings set org.gnome.Terminal.Legacy.Settings warn-on-close truetrue改成false就能关掉。
方法二:智能检测sudo进程再警告(更贴合你的需求)
如果你只想在有sudo/apt这类关键命令运行时才弹警告,那可以用这个自定义脚本的方法,稍微麻烦一点但更实用:
创建检测脚本
打开终端,输入这条命令创建一个脚本文件:nano ~/terminal-close-warning.sh然后把下面的内容粘贴进去:
#!/bin/bash # 检测当前终端是否有sudo或apt进程在运行 current_tty=$(tty | cut -d/ -f3-) has_critical_process=$(ps -t "$current_tty" | grep -E 'sudo|apt') if [ -n "$has_critical_process" ]; then # 弹出确认对话框,需要先装zenity(下面会说) if ! zenity --question --text="当前有sudo/apt命令在运行,确定要关闭终端吗?" --width=300; then exit 1 # 用户点了取消,阻止关闭 fi fi exit 0 # 用户确认关闭,正常退出按
Ctrl+O保存,回车确认文件名,再按Ctrl+X退出编辑器。给脚本加执行权限
输入这条命令让脚本能运行:chmod +x ~/terminal-close-warning.sh安装zenity(弹窗工具)
如果你的系统还没装zenity,先输入这条命令安装:sudo apt install zenity修改GNOME终端的启动配置
我们需要让终端在启动时绑定这个关闭检测脚本:- 先把系统的终端桌面文件复制到用户目录(避免修改系统文件):
cp /usr/share/applications/org.gnome.Terminal.desktop ~/.local/share/applications/ - 编辑这个复制过来的文件:
nano ~/.local/share/applications/org.gnome.Terminal.desktop - 找到
Exec=gnome-terminal这一行,把它改成:Exec=gnome-terminal --command "bash -c 'trap \"$HOME/terminal-close-warning.sh\" EXIT; exec bash'" - 同样按
Ctrl+O保存,回车,Ctrl+X退出。
- 先把系统的终端桌面文件复制到用户目录(避免修改系统文件):
生效设置
按Alt+F2,输入r回车,重启GNOME Shell,或者注销再登录一次,这样修改就生效了。
之后你再用sudo装软件时,不小心点关闭就会弹出确认框,点取消就能保住进程啦!
备注:内容来源于stack exchange,提问作者baalkikhaal




