我已经使用 i3-wm 大约六个月了,我不得不切换到 GNOME,因为 Discord 在 i3 中经常崩溃。我之前在 bashrc 中使用了 i3-msg 命令来确保终端的边框不可见,从而使用终端的整个屏幕空间。我运行的具体命令是:
i3-msg -q border toggle
问题是,当我使用 GNOME 并打开终端时,i3-msg 命令运行,并导致一条错误消息,显然是由于 i3 未运行而引起的。理想的情况是添加一个 if 语句来检查 i3 是否正在运行,如果是,则运行 i3-msg 命令。
<小时/>我的问题:确定我的系统中当前正在运行哪个窗口管理器/桌面环境的最便捷方法是什么?
<小时/>最佳答案
当 i3 处于事件状态时,应该有一个名为“i3”的进程。您可以使用 pgrep 进行检查。
if pgrep -x "i3" > /dev/null
then
echo "i3 is running"
fi
-x
是 --exact
的缩写 - 没有它,只要非 i3 进程的名称不包含 i3,if 子句仍然有效。
省略 >/dev/null
将打印出 pgrep 找到的 pid。
您还可以使用 pidof
或 ps -C
来代替 pgrep
。除了惯用的 if-then-fi 之外,您还可以使用 &&
,例如 pidof i3 >/dev/null && echo "i3 is running"|| echo "i3 没有运行"
关于linux - 如何检测 bash 中是否正在运行 i3-wm 或是否正在运行 GNOME,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59222173/