Certains gestionnaires de fichiers, tels que pcmanfm
ou pcmanfm-qt
, ouvrent des terminaux dans le répertoire en cours en définissant $PWD
avant d'ouvrir le terminal. La plupart des terminaux se comportent comme prévu. Ceci inclut xterm
, gnome-terminal
et xfce4-terminal
. Cependant, konsole
s'ouvre toujours dans un répertoire prédéfini (généralement $HOME
).
Comment faire en sorte que konsole
soit respecté $PWD
comme le font les autres terminaux?
C'est un problème de longue date qui existe depuis au moins 2010.
Les solutions précédentes nécessitaient de corriger le code source. Apparemment, un patch a été soumis, mais jamais accepté.
Depuis plusieurs années, aucun paramètre n'a été défini pour que konsole
respecte $PWD
. Cependant, il existe une option de ligne de commande --workdir
qui peut être exploitée par un script pour que konsole
fonctionne comme vous le souhaitez.
Vérifiez le chemin pour localiser un emplacement accessible à l'utilisateur qui prime sur /usr/bin
en examinant le résultat de echo $PATH
. Les options typiques incluent ~/bin/
et ~/.local/bin/
.
Créez un fichier nommé ~/bin/konsole
(ou ~/.local/bin/konsole
) avec le contenu suivant:
#!/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
Donnez au nouveau script les autorisations d'exécution.
chmod +x ~/bin/konsole
Désormais, chaque fois que ce script sera exécuté, il traitera $PWD
et exécutera /usr/bin/konsole --workdir "$PWD"
. S'il est placé dans le bon dossier, il aura la priorité sur le réel konsole
et l'utilisation sera transparente. Des scripts similaires peuvent être créés pour d'autres programmes qui ne se comportent pas comme souhaité.