É 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 rodando em um)? Como é, todos os meus terminais abrem $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 ganho enorme de produtividade, porque senão eu teria que cd
todo o caminho 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 escrever o diretório atual para um arquivo e ter meu .bashrc
olhe este arquivo para determinar aonde ir. Mas esta é uma solução muito imperfeita que funcionaria para muitos casos, mas deixaria uma boa maioria incorreta.
Respostas:
Eu não mexi muito com os padrões e
ctrl+shift+n
faz isso por mim.fonte
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:Então, 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. Geralmente o comando
j
está associado ao autojump. Por exemplo, no seu caso, o uso será o seguinte.cd
para a pasta/very/long/path/boring/to/join/Folder
j fol<ENTER>
vai trazer o seu diretamente para/home/fb/very/long/path/boring/to/join/Folder
É claro que isso só funcionará se a pasta que você deseja unir for uma pasta onde você costuma ir.
fonte
pwd > ~/poo
- & gt;cd `cat ~/poo`
pushd
epopd
;-)cd -
. Um fluxo de trabalho comum écd my/directory/one
, em seguida, trabalhe até que outra pasta seja necessária:cd /etc/httpd/
. Então, para voltar ao anterior:cd -
, o que marca o diretório atual como anterior, fazendo outracd -
para voltar a ele.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: http://xmonad.org/xmonad-docs/xmonad-contrib/XMonad-Layout-WorkspaceDir.html
Basicamente eu liguei uma chave para changeDir. Quando pressiono essa tecla, aparece um aviso que permite definir o diretório (com a conclusão da guia de trabalho).
fonte
Se você pode obter PID de shell em execução na janela atual, você pode 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.fonte
Você poderia usar o id da janela X de
withWindowSet
e consultaxprop
para PID, do qual extrair CWD.Eu tenho usado essa 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.
fonte