web-dev-qa-db-ja.com

Konsoleが現在のディレクトリ(pwd)で開かない

pcmanfmpcmanfm-qtなどの一部のファイルマネージャーは、ターミナルを開く前に$PWDを設定して現在のディレクトリでターミナルを開きます。ほとんどの端末は期待どおりに動作します。これには、xtermgnome-terminal、およびxfce4-terminalが含まれます。ただし、konsoleは常に事前に指定されたディレクトリ(通常は$HOME)で開きます。

konsoleを他の端末と同様に$PWDを尊重するようにするにはどうすればよいですか?

これは、少なくとも2010年から続いている長年の問題です。

以前のソリューションでは、ソースコードにパッチを適用する必要がありました。パッチが提出されたようですが、受け入れられませんでした。

1
xiota

数年間、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
glenn jackman