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
ассоциируется с автопрыжком. Например, в вашем случае использование будет следующим.
- Откройте терминал
- (Только первый раз)
cd
в папку/very/long/path/boring/to/join/Folder
- Поработай немного
- Позже, когда вам понадобится другой терминал, откройте новый
- входящий
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.