首页 > 解决方案 > 如何检测是否正在运行 i3-wm 或 GNOME 是否正在 bash 中运行

问题描述

我已经使用 i3-wm 大约六个月了,我不得不切换到 GNOME,因为 Discord 在 i3 中崩溃了很多。我之前在 bashrc 中使用了 i3-msg 命令来确保终端的边框不可见,以便为终端使用整个屏幕空间。我运行的具体命令是:

    i3-msg -q border toggle

问题是,当我使用 GNOME 并打开终端时,i3-msg 命令运行,并导致错误消息显然是由于 i3 未运行而引起的。理想的情况是添加一个 if 语句来检查 i3 是否正在运行,如果是,则运行 i3-msg 命令。


我的问题:确定当前在我的系统中运行哪个窗口管理器/桌面环境的最方便的方法是什么?


标签: linuxbashwindow-managersi3

解决方案


当 i3 处于活动状态时,应该有一个名为“i3”的进程。您可以使用 pgrep 进行检查。

if pgrep -x "i3" > /dev/null
then
  echo "i3 is running"
fi

-x是缩写--exact——没有它,if 子句仍然可以工作,只要没有非 i3 进程的名称包含 i3。

省略> /dev/null将打印出 pgrep 找到的 pid。

代替pgrep你也可以使用pidofor ps -C。而不是惯用的 if-then-fi 你也可以使用&&likepidof i3 > /dev/null && echo "i3 is running" || echo "i3 is not running"


推荐阅读