【问题标题】:How to detect if i3-wm is being run or GNOME is being run in bash如何检测是否正在运行 i3-wm 或 GNOME 是否正在 bash 中运行
【发布时间】:2019-12-07 01:12:23
【问题描述】:

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

    i3-msg -q border toggle

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


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


【问题讨论】:

    标签: linux bash window-managers i3


    【解决方案1】:

    当 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,您还可以使用pidofps -C。除了惯用的 if-then-fi 你也可以只使用 && 就像 pidof i3 > /dev/null && echo "i3 is running" || echo "i3 is not running"

    【讨论】:

    • “更简洁”是什么意思?
    • 为什么会有“更少的代码”?我知道您在 bashrc 中使用它?
    • 如果你在 bashrc 中将 ps -C i3 > /dev/null && 放在 i3-msg -q border toggle-line 之前,它只会触发 i3-msg,如果 i3-process 正在运行............所以你只需要输入一次,为什么要“少代码”?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 2021-10-28
    • 2012-09-22
    相关资源
    最近更新 更多