O Konsole não abre no diretório atual (pwd)

1

Alguns gerenciadores de arquivos, como pcmanfm ou pcmanfm-qt , abrem os terminais no diretório atual definindo $PWD antes de abrir o terminal. A maioria dos terminais se comporta como esperado. Isso inclui xterm , gnome-terminal e xfce4-terminal . No entanto, konsole sempre é aberto em um diretório pré-especificado (geralmente $HOME ).

Como konsole pode ser feito para respeitar $PWD como outros terminais?

Este é um problema de longa data que existe desde pelo menos 2010.

As soluções anteriores exigiam a correção do código-fonte. Aparentemente, um patch foi enviado, mas nunca foi aceito.

por xiota 11.05.2018 / 12:42

1 resposta

2

Durante vários anos, não houve nenhuma configuração para tornar konsole respect $PWD . No entanto, existe uma opção de linha de comando --workdir que pode ser explorada por um script para tornar a função konsole conforme desejado.

  1. Verifique o caminho para localizar um local acessível pelo usuário que tenha precedência sobre /usr/bin examinando a saída de echo $PATH . Opções típicas incluem ~/bin/ e ~/.local/bin/ .

  2. Crie um arquivo chamado ~/bin/konsole (ou ~/.local/bin/konsole ) com o seguinte conteúdo:

    #!/usr/bin/env bash
    # make konsole respect $PWD, as other terminals do
    # save as ~/bin/konsole or ~/.local/bin/konsole
    
    # catch unset or mis-set PWD
    [[ -z $PWD ]] && PWD="$HOME"
    [[ "$PWD" == '/' ]] && PWD="$HOME"
    
    term_cls='konsole'      # window class needed for xdotool to activate window
    term_bin='type -a -p konsole | tail -n 1'    # location of original 'konsole'
    term_cmd=( "$term_bin" )
    
    [[ $PWD ]] && term_cmd+=( --workdir "$PWD" )
    term_tab=( "${term_cmd[@]}" --new-tab )
    
    case $1 in
      -h|--help|-v|--version|--author|--license|--list-profiles|--list-profile-properties)
        "$term_bin" "$1"
        ;;
      -p)
        echo 'cannot change profile properties at this time'
        ;;
      *)
        find_app=( xdotool search --onlyvisible --class "$term_cls" windowactivate exec "${term_tab[@]}" )
        "${find_app[@]}" || xdotool exec "${term_cmd[@]}"
        ;;
    esac
    
  3. Dê ao novo script permissões de execução.

    chmod +x ~/bin/konsole
    

Agora, sempre que esse script for executado, ele processará $PWD e executará /usr/bin/konsole --workdir "$PWD" . Se colocar na pasta certa, terá prioridade sobre o real konsole e o uso será transparente. Scripts semelhantes podem ser criados para outros programas que não se comportam como desejado.

    
por xiota 13.05.2018 / 23:59