You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何为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 true
    
    之后你再关终端,就会弹出确认框啦。要是哪天觉得烦了,把true改成false就能关掉。

方法二:智能检测sudo进程再警告(更贴合你的需求)

如果你只想在有sudo/apt这类关键命令运行时才弹警告,那可以用这个自定义脚本的方法,稍微麻烦一点但更实用:

  1. 创建检测脚本
    打开终端,输入这条命令创建一个脚本文件:

    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退出编辑器。

  2. 给脚本加执行权限
    输入这条命令让脚本能运行:

    chmod +x ~/terminal-close-warning.sh
    
  3. 安装zenity(弹窗工具)
    如果你的系统还没装zenity,先输入这条命令安装:

    sudo apt install zenity
    
  4. 修改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退出。
  5. 生效设置
    Alt+F2,输入r回车,重启GNOME Shell,或者注销再登录一次,这样修改就生效了。

之后你再用sudo装软件时,不小心点关闭就会弹出确认框,点取消就能保住进程啦!

备注:内容来源于stack exchange,提问作者baalkikhaal

火山引擎 最新活动