Konsole не открывается в текущем каталоге (pwd)

Некоторые файловые менеджеры, такие как pcmanfm или pcmanfm-qt, открывают терминалы в текущем каталоге, устанавливая $PWD перед открытием терминала. Большинство терминалов ведут себя как ожидалось. Это включает в себя xterm, gnome-terminal и xfce4-terminal. Однако konsole всегда открывается в заранее указанном каталоге (обычно $HOME).

Как можно konsole уважать $PWD, как это делают другие терминалы?

Это давняя проблема, которая существует как минимум с 2010 года.

Предыдущая Решения требуют исправления исходного кода. По-видимому, патч был представлен, но так и не был принят.

1
задан 11 May 2018 в 14:29

1 ответ

В течение нескольких лет не было никакой установки для создания konsole уважение $PWD. Однако существует параметр командной строки --workdir это может быть использовано сценарием для создания konsole функционируйте, как желаемый.

  1. Проверьте путь для определения местоположения доступного для пользователя местоположения, которое имеет приоритет /usr/bin путем исследования вывода echo $PATH. Типичные опции включают ~/bin/ и ~/.local/bin/.

  2. Создайте названный файл ~/bin/konsole (или ~/.local/bin/konsole) со следующим содержанием:

    #!/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. Дайте новый сценарий, выполняют полномочия.

    chmod +x ~/bin/konsole
    

Теперь, каждый раз, когда этот скрипт запущен, он обработает $PWD и выполнитесь /usr/bin/konsole --workdir "$PWD". Если вставлено правильная папка, это будет иметь приоритет над реальным konsole и использование будет прозрачно. Подобные сценарии могут быть созданы для других программ, которые не ведут себя, как желаемый.

2
ответ дан 7 December 2019 в 13:24

Другие вопросы по тегам:

Похожие вопросы: