You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取通过Rofi启动的应用PID并用于脚本?

获取Rofi启动应用的PID方法

当然可行,以下是两种可靠的实现方式:

方法一:自定义启动脚本(推荐)

通过修改Rofi的drun启动器为自定义脚本,让脚本在启动应用时直接输出PID,方便后续捕获。

  1. 创建自定义启动脚本 rofi-launcher.sh,内容如下:
#!/bin/bash
# 启动目标应用并后台运行,同时输出其PID
"$@" &
echo $!
  1. 给脚本添加执行权限:
chmod +x rofi-launcher.sh
  1. 修改Rofi配置文件(通常路径为 ~/.config/rofi/config.rasi),指定drun使用这个脚本启动应用:
configuration {
    drun-launcher: "/绝对路径/rofi-launcher.sh";
}

注意替换成你实际存放脚本的绝对路径

  1. 现在运行Rofi并捕获PID:
# 启动Rofi,选中应用后会返回对应的PID
APP_PID=$(rofi -show drun)
# 后续即可使用$APP_PID变量,比如输出PID
echo "启动的应用PID: $APP_PID"

方法二:对比启动前后的进程列表(简易但有局限)

如果不想修改Rofi配置,可以通过对比Rofi启动前后的用户进程列表,找出新启动的应用PID。但这种方法在同时启动多个程序时会出错,仅适合单次启动场景:

# 记录当前用户的所有PID
current_pids=$(pgrep -u $USER)
# 启动Rofi
rofi -show drun
# 记录Rofi退出后的用户PID列表
new_pids=$(pgrep -u $USER)
# 对比两个列表,找出新增的PID(即刚启动的应用PID)
APP_PID=$(comm -13 <(echo "$current_pids" | sort) <(echo "$new_pids" | sort))
echo "启动的应用PID: $APP_PID"

内容的提问来源于stack exchange,提问作者Liam McCartney

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 12:02:47