Xmonad abre o terminal no mesmo diretório

6

É 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.

    
por Thomas Eding 04.05.2013 / 02:13

5 respostas

2

Eu não mexi muito nos padrões e ctrl+shift+n faz isso para mim.

    
por 03.10.2014 / 18:02
2

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.

  1. Abra um terminal
  2. (somente na primeira vez) Vá com cd para a pasta /very/long/path/boring/to/join/Folder
  3. Faça algum trabalho
  4. Mais tarde, quando precisar de outro terminal, abra um novo
  5. Digitar 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.

    
por 07.05.2013 / 08:07
1

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).

    
por 08.07.2013 / 13:05
0

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.

    
por 01.01.2014 / 22:15
-1

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.

    
por 03.12.2017 / 21:42

Tags