当你打开一个文件时,Geany 中会出现令人讨厌的行为,并且同时打开多个 geany 窗口

当你打开一个文件时,Geany 中会出现令人讨厌的行为,并且同时打开多个 geany 窗口

在 Gedit 中,如果您打开了多个 Gedit 窗口,然后打开一个文件,Gedit 会选择在最近活动的窗口中打开它。我喜欢这种行为,我认为它很直观。

在 Geany 中,我更喜欢它而不是 Gedit,使用哪个实例的规则似乎是“最老的”。更糟糕的是,如果该实例在另一个桌面上打开,它也会将该实例移动到当前桌面。这实际上使得无法使用多个 Geany 窗口,这真的很烦人。

有谁知道有什么方法可以让 Geany 在最近活动的(即“查看过的”)Geany 实例中打开文件吗?我使用的是最新版本 (0.21)。

答案1

使用 Geany 1.22 可能有一个与您想要做的非常接近的解决方法。

根据手册http://www.geany.org/manual/current/#command-line-options您可以使用

--socket-file

指定与 Geany 实例通信的套接字文件。

将以下内容放入脚本中将为每个工作区获取一个实例:

#!/bin/bash
geany --socket-file=/tmp/geany-sock-$(xprop -root _NET_CURRENT_DESKTOP | awk '{print $3}') ${1+"$@"}

(它还将命令行参数传递给 geany)。

答案2

遗憾的是,没有办法配置此行为。几个月前,我向一些 Geany 插件开发人员询问了这个问题,似乎改变这种情况的唯一方法是自己编写代码并向他们发送补丁。

答案3

这也许应该是对 Rikard 的回应的评论,但我将把它作为替代回应。我注意到,如果我们在原始脚本(没有套接字选项)已经运行时使用它,他的解决方案会使计算机(使用 Ubuntu 14.04)无响应。所以,我觉得在这种情况下让脚本退出会很好。如果您命名脚本,请将其放在PATH 中原始 geany脚本之前的目录中或原始脚本所在的任何目录中。/usr/bin

#!/bin/bash
for pid in $(pgrep "geany")
do
 cmd=$(ps -p $pid -o cmd)
 if [[ "$cmd" = *"/usr/bin/geany"* ]] && [[ "$cmd" != *"socket"* ]] ; then
  echo original geany already running
  exit
 fi
done
/usr/bin/geany --socket-file=/tmp/geany-sock-$(xprop -root _NET_CURRENT_DESKTOP | awk '{print $3}') ${1+"$@"}

答案4

在 Geany 1.38 版本中,可以通过将文件拖到打开的窗口(编辑窗格,而不是文件滚动条)来打开文件。

相关内容