linux - 如何检测 bash 中是否正在运行 i3-wm 或是否正在运行 GNOME

标签 linux bash window-managers i3

我已经使用 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。

您还可以使用 pidofps -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/

相关文章:

c - accept 是否可能返回与 sockfd 相同的值?

bash - 如何根据第一列awk拆分文件

linux - 列出按大小降序排列的所有目录

windows - Windows 的替代 bash/或在 cygwin 上帮助完成特定任务

linux - 保存 V4L2 摄像机输出

linux - Qemu 虚拟机崩溃并显示消息 'Terminating on signal 1'

android - 带动画的窗口管理器

c++ - 如何在 Qt 中正确实现 "minimize to tray"函数?

c - c程序内存错误

windows - Windows 和 QWidget::activateWindow() 中的事件窗口