Eu não mexi muito nos padrões e ctrl+shift+n
faz isso para mim.
É possível que o Xmonad abra um novo terminal no mesmo diretório que o terminal ativo (se a janela ativa for um terminal ou um programa como o vim sendo executado em um)? Como está, todos os meus terminais abrem em $HOME
. Não importa para mim se isso acontecer se eu abrir um novo terminal em um espaço de trabalho diferente. Isso seria um enorme ganho de produtividade, porque senão eu teria que cd
até o diretório em que estou trabalhando.
Se isso não for possível fazer diretamente usando o Xmonad, estou interessado em soluções alternativas para isso. A única coisa que posso pensar é sobrecarregar PROMPT_COMMAND para gravar o diretório atual em um arquivo e fazer com que meu .bashrc
examine esse arquivo para determinar para onde ir. Mas esta é uma solução muito imperfeita que funcionaria para muitos casos, mas deixaria uma boa maioria incorreta.
Isso realmente não responde à sua pergunta, mas eu tenho uma alternativa que pode economizar seu tempo e resolver seu problema: autojump
Este é um software que salva seus hábitos quando navega entre pastas no terminal. Toda vez que você cd
em uma pasta, aumenta a probabilidade associada. Por exemplo, no meu sistema tem agora algo como:
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
...
Depois, quando você quiser ir em uma pasta, você pode dar apenas uma parte do nome e ele irá para a pasta mais provável que corresponde. Normalmente, o comando j
está associado ao autojump. Por exemplo, no seu caso, o uso será como segue.
cd
para a pasta /very/long/path/boring/to/join/Folder
j fol<ENTER>
trará o seu diretamente para /home/fb/very/long/path/boring/to/join/Folder
É claro que isso só funcionará se a pasta que você deseja ingressar for uma pasta onde você costuma ir.
Eu defino o meu diretório em uma base por espaço de trabalho. Então todos os terminais que eu abro naquele espaço de trabalho abrem naquele diretório. Isso é feito usando a extensão workspacedir: link
Basicamente eu limitei uma chave para changeDir. Quando eu pressiono essa tecla aparece um prompt que permite que você defina o diretório (com a conclusão da guia de trabalho).
Se você puder obter o PID de shell em execução na janela atual, poderá fazer algo como executar urxvt -cd $(readlink /proc/$PID/cwd)
(ou algo semelhante para terminal diferente). Não sei como obter o pid da janela atual no XMonad.
Você pode usar o ID da janela X de withWindowSet
e consultar xprop
para o PID, a partir do qual extrair o CWD.
Estou usando esta abordagem há algum tempo (com sucesso), em uma máquina Linux. Ele deve funcionar na maioria dos sistemas operacionais baseados em Unix, desde que você ajuste sua lógica para extrair o CWD do PID.
Tags xmonad