Некоторые файловые менеджеры, такие как pcmanfm или pcmanfm-qt, открывают терминалы в текущем каталоге, устанавливая $PWD перед открытием терминала. Большинство терминалов ведут себя так, как ожидалось. Это включает в себя xterm, gnome-terminal и xfce4-terminal. Однако konsole всегда открывается в предварительно заданном каталоге (обычно $HOME).
Как konsole можно сделать, чтобы $PWD относиться к другим терминалам?
] Это давняя проблема, которая возникла по крайней мере с 2010 года.
pcmanfm: открывает терминал в неправильной папке # 991 «Открыть в терминале» ошибочно при использовании 2 панелей. Как мне изменить " default working "каталог терминальных приложений в RHEL6?Предыдущие решения потребовали исправления исходного кода. По-видимому, патч был представлен, но он никогда не принимался.
pcmanfm: открывает терминал в неправильной папкеВ течение нескольких лет не было настройки для 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, и использование будет прозрачным. Подобные скрипты могут быть созданы для других программ, которые не ведут себя по желанию.
В течение нескольких лет не было настройки для 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, и использование будет прозрачным. Подобные скрипты могут быть созданы для других программ, которые не ведут себя по желанию.