Existe um tópico muito informativo no fórum do i3-faq que tem vários scripts / programas que abordam esse problema.
Eu fui para o programa c xcwd que realmente faz um ótimo trabalho. Também funciona a partir de programas GUI.
Quando em um diretório, às vezes, quero que outro terminal seja aberto no mesmo diretório.
Por exemplo, eu estou em ~/code/someproject/src/
, e eu abro um novo terminal, por padrão, ele abre em ~
, como lanço um novo terminal no diretório atual?
Estou executando o Arch Linux com o urxvt como meu terminal e o i3 como meu gerenciador de janelas.
Existe um tópico muito informativo no fórum do i3-faq que tem vários scripts / programas que abordam esse problema.
Eu fui para o programa c xcwd que realmente faz um ótimo trabalho. Também funciona a partir de programas GUI.
quando você inicia um terminal a partir de um terminal existente, o ambiente do terminal original será preservado, incluindo o diretório de trabalho atual e quaisquer outras variáveis de ambiente que você tenha configurado. É por isso que urxvt &
funciona
Eu tenho um hack realmente feio que escrevi para fazer isso.
Meu nome de host é bulletMaster, e meu diretório pessoal é / root /
Nenhuma das respostas que vi funcionou ao usar urxvtd
, nesse caso todas as janelas de terminal estão associadas ao mesmo processo daemon urxvtd
e parece não haver uma maneira fácil de identificar a instância de shell correta para obter o PWD.
Para resolver isso, usei um hack feio. Eu uso o zsh com um truque de preexec
para exibir no título da janela o diretório atual (junto com o comando atual e último, o tempo, etc.), o que eu acho que é útil de qualquer maneira. Eu faço isso com o seguinte formulário no meu zshrc
(você precisará adaptá-lo, consulte este comando ; veja aqui para a última versão completa):
preexec () {
local WD="$(pwd | sed "s/^\/home\/$USER/~/")"
export LASTDATE="'date +%T'"
if [[ "$TERM" == "rxvt-unicode" || "$TERM" == "rxvt-unicode-256color" ]]; then
export COMMAND="$(echo $1 | tr -d '\n')"
echo -ne "\e]0;$LOCALNAME $HOST:$WD$ $COMMAND ($LASTDATE)\a"
fi
}
Depois, criei um script para executar um novo urxvt
no mesmo diretório da instância urxvt, simplesmente extraindo o título na janela atual (veja aqui para a versão mais recente):
#!/bin/bash
# run ARGV, with -cd FOLDER if FOLDER can be extracted from title of current
# window (see zsh config for how the title gets put in the window)
# http://superuser.com/a/403369/77814
quoted_args="$(printf " %q" "$@")"
# inspired by
# https://faq.i3wm.org/question/150/how-to-launch-a-terminal-from-here/%3C/p%3E.html
ID=$(xdpyinfo | grep focus | cut -d ',' -f1 | rev | cut -d ' ' -f1 | rev)
CLASS=$(xprop -id "$ID" | grep -m1 WM_CLASS | cut -d'"' -f2)
# https://stackoverflow.com/a/19411918
if [ "${CLASS^^}" != "URXVT" ]
then
# no urxvt focused -- just do the default
# optionally we could try to extract the pwd with
# https://github.com/schischi-a/xcwd or something
exec $quoted_args
fi
TITLE=$(xprop -id "$ID" | grep -m1 WM_NAME)
MYPWD=$(echo "$TITLE" | cut -d'$' -f1 | cut -d'"' -f2- | cut -d':' -f2-)
MYPWD2="${MYPWD/#\~/$HOME}"
if [ ! -z "$MYPWD2" -a -d "$MYPWD2" -a -r "$MYPWD2" -a -x "$MYPWD2" ]
then
exec $quoted_args -cd "$MYPWD2"
else
exec $quoted_args
fi
Tags linux terminal arch-linux urxvt