Konsole 未在当前目录 (pwd) 中打开

Konsole 未在当前目录 (pwd) 中打开

某些文件管理器(例如pcmanfm或)通过在打开终端之前pcmanfm-qt设置来在当前目录中打开终端。大多数终端的行为都符合预期。这包括、和。但是,始终在预先指定的目录中打开(通常是)。$PWDxtermgnome-terminalxfce4-terminalkonsole$HOME

如何才能像其他终端一样konsole受到尊重?$PWD


在最初撰写此问题时,已提交了一个补丁,但未被接受。不过,该补丁似乎已被接受,因此 Ubuntu 22.04 中的 Konsole 表现正常。

这是一个长期存在的问题,至少从 2010 年就已存在。

答案1

注意:Konsole 的最新版本现在支持$PWD。但是,此解决方案可能仍然有用,因为它展示了如何自定义 Konsole 行为。例如,可以在选项卡中打开 shell,而不是在新窗口中打开。


多年来,一直没有设置 makekonsole尊重$PWD。但是,有一个命令行选项--workdir可供脚本利用,以使 makekonsole按照需要运行。

  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,并且使用将是透明的。可以为其他行为不符合预期的程序创建类似的脚本。

相关内容