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

时间:2019-05-31 01:50:23

标签: haskell xmonad

我正在使用XMonad(并且很喜欢!)作为窗口管理器。但是,我不确定如何实现键盘快捷键,该快捷键可以使用当前窗口的工作目录spawn新建一个进程/窗口。

我认为这个问题有两个部分:确定当前活动窗口的工作目录,并生成具有给定工作目录的进程。

对于进程生成,我当前正在使用一种黑客程序,在其中生成/bin/sh,将cd移至所需位置,然后启动程序。有没有更优雅的方法可以做到这一点?

要确定当前窗口的工作目录,我不知道如何执行此操作。快速搜索xmonad-contrib并没有显示任何内容,尽管我可能错过了一些内容。这是X提供给窗口管理器的属性吗?也许我可以用/proc树做些什么?

1 个答案:

答案 0 :(得分:3)

spawn已经呼唤到/bin/sh,因此您可以像在cd中那样将spawn "cd /very/good/directory && very-good-executable --very --good --arguments"推入生成的东西中。

甚至没有可靠的方法来检测哪个进程与给定窗口相关联-即使您可以,它甚至可能不在本机上运行! -更不用说它的工作目录了。但另请参见偶尔出现的_NET_WM_PID原子和this question on the Unix stackexchange