Некоторые файловые менеджеры, такие как pcmanfm
или pcmanfm-qt
, открывают терминалы в текущем каталоге, устанавливая $PWD
перед открытием терминала. Большинство терминалов ведут себя как ожидалось. Это включает в себя xterm
, gnome-terminal
и xfce4-terminal
. Однако konsole
всегда открывается в заранее указанном каталоге (обычно $HOME
).
Как можно konsole
уважать $PWD
, как это делают другие терминалы?
Это давняя проблема, которая существует как минимум с 2010 года.
# 991 «Открыть в терминале» неправильно при использовании 2 панелей
Как изменить каталог по умолчанию для терминальных приложений в RHEL6?
Предыдущая Решения требуют исправления исходного кода. По-видимому, патч был представлен, но так и не был принят.
В течение нескольких лет не было никакой установки для создания konsole
уважение $PWD
. Однако существует параметр командной строки --workdir
это может быть использовано сценарием для создания konsole
функционируйте, как желаемый.
Проверьте путь для определения местоположения доступного для пользователя местоположения, которое имеет приоритет /usr/bin
путем исследования вывода echo $PATH
. Типичные опции включают ~/bin/
и ~/.local/bin/
.
Создайте названный файл ~/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
Дайте новый сценарий, выполняют полномочия.
chmod +x ~/bin/konsole
Теперь, каждый раз, когда этот скрипт запущен, он обработает $PWD
и выполнитесь /usr/bin/konsole --workdir "$PWD"
. Если вставлено правильная папка, это будет иметь приоритет над реальным konsole
и использование будет прозрачно. Подобные сценарии могут быть созданы для других программ, которые не ведут себя, как желаемый.