6

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

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

5 ответов5

2

Это на самом деле не отвечает на ваш вопрос, но у меня есть альтернатива, которая может сэкономить ваше время и решить вашу проблему: 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 связана с autojump. Например, в вашем случае использование будет следующим.

  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

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

2

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

1

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

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

0

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

-1

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .