linux - 如何检测是否正在运行 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 命令。
我的问题:确定当前在我的系统中运行哪个窗口管理器/桌面环境的最方便的方法是什么?
解决方案
当 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
你也可以使用pidof
or ps -C
。而不是惯用的 if-then-fi 你也可以使用&&
likepidof i3 > /dev/null && echo "i3 is running" || echo "i3 is not running"
推荐阅读
- javascript - 如何在 CSS/Javascript 中制作像素化的非直线边框?
- azure - 将智能合约从 remix 部署到 azure 区块链的问题 - 错误
- google-maps - 向上滚动时映射重叠的 AppBar
- windows - 将裸存储库从 Windows 10 git 服务器克隆到 Windows 7 客户端时出现问题:似乎不是 git 存储库
- javascript - 如何在 JSON 返回 C# 中删除列名
- swift - 在 Swift 中的 for 语句中显示多个值
- python - 如何在 django-allauth 的社交帐户注册流程中显示自定义表单
- kubernetes - 如何从 CLI 打印包含 Kubernetes 机密的 Ansible 保管变量?
- php - 成功登录后丢失 Cookie
- node.js - 跨多个域的单点登录