Terminal aberto Xmonad 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 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.

Thomas Eding
fonte
Depende de qual terminal você está usando?
Robert Massaioli
O Urxvt é um pouco complicado, mas esse recurso é construído diretamente no terminal do gnome.
Robert Massaioli

Respostas:

2

Eu não mexi muito com os padrões e ctrl+shift+n faz isso por mim.

chevett
fonte
Eu nunca pensei em usar os controles do meu terminal para fazer isso (ao contrário dos controles do X-Monad). Isso funciona para mim.
Thomas Eding
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
...

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.

  1. Abra um terminal
  2. (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. Entrando 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.

StreakyCobra
fonte
Isso soa como um utilitário legal. Eu gostaria de ver se existe um utilitário que empurra um diretório que você pode pop mais tarde ... ou se não, crie um eu mesmo: pwd > ~/poo - & gt; cd `cat ~/poo`
Thomas Eding
2
É só perguntar: pushd e popd ;-)
StreakyCobra
Também para alternar rapidamente entre duas pastas: 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 outra cd - para voltar a ele.
StreakyCobra
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: 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).

user236456
fonte
0

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.

Vladimir Still
fonte
-1

Você poderia usar o id da janela X de withWindowSet e consulta xprop 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.

mewa
fonte