Xmonad открыть терминал в том же каталоге

Возможно ли, чтобы Xmonad открыл новый терминал в том же каталоге, что и активный терминал (если активное окно является терминалом или программой, подобной vim, работающей в одном)? Все мои терминалы открыты в $HOME, Для меня не имеет значения, произойдет ли это, если я открою новый терминал в другом рабочем пространстве. Это было бы огромным приростом производительности, потому что в противном случае мне пришлось бы cd вплоть до каталога, в котором я работаю.

Если это невозможно сделать напрямую с помощью Xmonad, меня интересуют альтернативные решения для этого. Единственное, о чем я могу думать, это перегрузить PROMPT_COMMAND, чтобы записать текущий каталог в файл и получить мой .bashrc посмотрите на этот файл, чтобы определить, куда идти. Но это очень несовершенное решение, которое работало бы во многих случаях, но оставило бы значительное большинство неверным.

5 ответов

Решение

Я не особо испортил значения по умолчанию и ctrl+shift+n делает это для меня.

Это на самом деле не отвечает на ваш вопрос, но у меня есть альтернатива, которая может сэкономить ваше время и решить вашу проблему: autojump

Это программное обеспечение, которое сохраняет ваши привычки при навигации между папками в терминале. Каждый раз, когда вы 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

Конечно, это работает только в том случае, если папка, к которой вы хотите присоединиться, является папкой, в которую вы часто заходите.

Я устанавливаю свой каталог для каждого рабочего пространства. Затем все терминалы, которые я открываю в этом рабочем пространстве, открываются в этом каталоге. Это делается с помощью расширения workspacedir: http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Layout-WorkspaceDir.html

В основном я привязал ключ к changeDir. Когда я нажимаю эту клавишу, появляется подсказка, позволяющая установить каталог (с завершением рабочей вкладки).

Если вы можете получить PID оболочки, запущенной в текущем окне, вы можете сделать что-то вроде выполнения urxvt -cd $(readlink /proc/$PID/cwd) (или что-то похожее для другого терминала). Не знаю, как получить pid текущего окна в XMonad.

Вы можете использовать идентификатор окна X из withWindowSet и запрос xprop для PID, из которого можно извлечь CWD.

Я уже некоторое время использую этот подход (с успехом) на машине с Linux. Он должен работать на большинстве Unix-подобных ОС, если вы настроите логику извлечения CWD из PID.

Другие вопросы по тегам