XMonad 如何生成具有指定工作目录的进程?

How can XMonad spawn a process with a specified working directory?

我正在使用(并且喜欢!)XMonad 作为 window 管理器。但是,我不确定如何实现可以 spawn 新 process/window 与当前 window.

工作目录的键盘快捷键

我认为这个问题有两个部分:确定当前活动的工作目录 window,以及使用给定的工作目录生成进程。

对于进程生成,我目前正在使用生成 /bin/sh 的 hack,cd 到所需位置然后启动程序。有没有更优雅的方法来做到这一点?

为了确定当前window的工作目录,我不知道该怎么做。快速搜索 xmonad-contrib 没有显示任何内容,尽管我可能遗漏了什么。这是 X 提供给 window 经理的属性吗?也许我可以用 /proc 树做点什么?

spawn 已经呼唤 /bin/sh,所以你可以将 cd 推入你生成的东西中,如 spawn "cd /very/good/directory && very-good-executable --very --good --arguments".

甚至没有一种可靠的方法来检测哪个进程与给定的 window 相关联——即使可以,它也可能不在这台机器上 运行! -- 更不用说它的工作目录了。但另请参阅偶尔可用的 _NET_WM_PID 原子和 this question on the Unix stackexchange.