在 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 版本中,可以通过将文件拖到打开的窗口(编辑窗格,而不是文件滚动条)来打开文件。