Xmonad 在同一目录中打开终端

Xmonad 在同一目录中打开终端

是否可以让 Xmonad 在与活动终端相同的目录中打开一个新终端(如果活动窗口是终端或在其中运行的 vim 等程序)?事实上,我的所有终端都在 中打开$HOME。如果我在不同的工作区中打开新终端,这种情况对我来说并不重要。这将极大地提高工作效率,因为否则我必须一直cd到我正在工作的目录。

如果无法直接使用 Xmonad 实现这一点,我对替代解决方案很感兴趣。我能想到的唯一办法是重载 PROMPT_COMMAND,将当前目录写入文件,并查看.bashrc此文件以确定要去哪里。但这是一个非常不完善的解决方案,在许多情况下都有效,但大多数情况下都不正确。

答案1

我没有对默认设置进行过多的改动,ctrl+shift+n它对我来说已经完成了。

答案2

这并没有真正回答你的问题,但我有一个可以节省你的时间并解决你的问题的替代方法:自动跳转

这是一个可以保存您在终端中浏览文件夹时的习惯的软件。每次您cd进入一个文件夹时,它都会增加相关的可能性。例如,在我的系统上,它现在有类似的东西:

343368.3820292514   /home/fb
66.1004508305352    /home/fb/documents
65.2439790325514    /home/fb/workspace/MyProject
55.78935025659235   /very/long/path/boring/to/join/Folder
51.78935025659235   /home/fb/master-thesis
49.150383518340945  /usr/share/opencv
43.1282216187962    /home/fb/.dotvim
...

然后,当您想要进入某个文件夹时,您只需提供名称的一部分,它就会转到最有可能对应的文件夹。通常该命令j与自动跳转相关联。例如,在您的例子中,用法如下。

  1. 打开终端
  2. (仅限第一次)前往cd文件夹/very/long/path/boring/to/join/Folder
  3. 做一些工作
  4. 稍后当你需要另一个终端时,打开一个新终端
  5. 进入后j fol<ENTER>您将直接进入/home/fb/very/long/path/boring/to/join/Folder

当然,这只有当您要加入的文件夹是您经常去的文件夹时才有效。

答案3

我根据每个工作区设置我的目录。然后我在该工作区中打开的所有终端都会在该目录中打开。这是使用workspacedir扩展完成的: http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Layout-WorkspaceDir.html

基本上,我将一个键绑定到 changeDir。当我按下该键时,会弹出一个提示,让您设置目录(使用有效的 Tab 补全功能)。

答案4

您可以使用 X window idwithWindowSet并查询xpropPID,从中提取 CWD。

我一直在使用这种方法在 Linux 机器上已经运行了一段时间(成功了)。只要你调整从 PID 中提取 CWD 的逻辑,它应该可以在大多数类 Unix 操作系统上运行。

相关内容