vte.sh não mantém meu diretório gnome-terminal em uma nova aba

6

Eu costumava manter meu diretório de trabalho quando abria uma nova aba no gnome-terminal e queria restaurar essa funcionalidade. Minha pesquisa apontou para o sourcing /etc/profile.d/vte.sh no meu ~/.zshrc (eu uso Z shell), entretanto isso não muda o problema, minhas novas abas ainda são abertas em ~ .

Como posso restaurar essa funcionalidade? Pode ser um hack sujo, se necessário.

Minhas versões

~$ uname -a
Linux konradslaptop2 3.17.2-1-ARCH #1 SMP PREEMPT Thu Oct 30 20:49:39 CET 2014 x86_64 GNU/Linux
~$ gnome-terminal --version
GNOME-Terminal 3.14.2
~$ zsh --version
zsh 5.0.7 (x86_64-unknown-linux-gnu)

Meu ~ / .zshrc (exemplo mínimo)

. /etc/profile.d/vte.sh
# auto generated by .zsh installation
if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then       
    function zle-line-init () {
        printf '%s' "${terminfo[smkx]}"
    }
    function zle-line-finish () {
        printf '%s' "${terminfo[rmkx]}"
    }
    zle -N zle-line-init
    zle -N zle-line-finish
fi
    
por Konrad Höffner 14.11.2014 / 13:38

2 respostas

4

Uma solução simples para você seria incluir uma função no seu ~/.zshrc que lembra o diretório de trabalho e muda para ele ao abrir o zsh:

cd $(<>/dev/shm/$USER-pwd)

__cd(){
    \cd "$@"
    pwd >/dev/shm/$USER-pwd
}
alias cd=__cd

Usamos / dev / shm em vez de / tmp para evitar gravações em disco, embora / tmp já possa ser um tmpfs no seu sistema. \cd é usado para evitar uma bomba de garfo .

Se você quiser esse recurso somente para o gnome-terminal, você pode incluir uma instrução if para verificar seu terminal atual ou sua janela ativa. Além disso, se você está preocupado que outros usuários possam descobrir qual foi o seu último diretório, você pode modificar as permissões para $USER-pwd com chmod :

if xprop -id $(xprop -root 32x ' $0' _NET_ACTIVE_WINDOW | awk '{print $NF}') WM_CLASS | grep -q gnome-terminal; then
    cd    $(<>/dev/shm/$USER-pwd)
    chmod 600 /dev/shm/$USER-pwd

    __cd(){
        \cd "$@"
        pwd >/dev/shm/$USER-pwd
    }
    alias cd=__cd
fi
    
por 22.11.2014 / 18:24
1

Não sei exatamente o que você deseja restaurar (veja abaixo);

Se você deseja abrir gnome-terminal iniciando em um diretório diferente, há uma opção para especificar o diretório:

gnome-terminal --working-directory=/tmp

Você poderia certamente usar um script como comando de inicialização personalizado, que executa cd e, em seguida, inicia o shell, mas isso não parece uma boa abordagem.

Se for sobre o diretório padrão do shell em uma nova guia sendo definida para o diretório atual da guia que estava atual quando a nova ação de tabulação foi acionada: Isso só funciona para mim, então só posso dar dicas - Eu corro uma versão mais antiga, GNOME Terminal 3.6.2 .

Tenho certeza de que não é o script /etc/profile.d/vte.sh que define o diretório; Na minha versão - onde funciona bem - o script não contém código relacionado a isso, e eu nunca usei isso.

O próprio programa do terminal pode apenas definir o diretório antes de bifurcar o processo do shell.
Mas na verdade, nem precisa fazer isso - você quer ter o mesmo diretório como antes. Tudo o que é necessário é não tocar no diretório.

Dito isto, há um bug descrevendo este problema: gnome-terminal: Bug 697475 - Nova guia não é aberto no mesmo diretório da guia anterior
A discussão é muito longa, não tenho um resumo; vte.sh é discutido lá e, pulando, parece que pode ser corrigido, mas ainda não totalmente liberado.

    
por 22.11.2014 / 04:16