问题描述
哦,我多么喜欢Ubuntu及其所有功能,但是这个”bug”让我生气了这么久,我终于决定在这里寻求帮助。
每当我在nautilus中双击它时,我已经用gedit分配了所有.php
文件。现在,这种行为很奇怪。
-
我没有运行gedit
-
我双击要打开的文件
-
将打开gedit窗口并加载文件
-
我双击另一个要打开的文件
现在,有两种可能的结果:
5A)文件在新选项卡的同一gedit窗口中打开
5B)文件在新的gedit窗口中打开,导致运行2个gedit。
A或B是否发生似乎是完全随机的并且继续无限地进行。这意味着我双击100个文件,我可能最终得到60个gedits,其中一些将有1个选项卡,一些将有2个选项卡,一些将有3个选项卡…
这非常令人讨厌,并且非常感谢对此的修复。有人试图解决这个问题吗?
这发生在Ubuntu 10.04,10.10和11.10中。我测试过的所有Ubuntu版本。
最佳解决思路
为什么…
gedit
有一个非常有趣的算法来确定它是打开一个新实例还是在现有实例的选项卡中打开它。
该函数位于函数static boolean is_in_viewport
的源文件gedit-app.c
中,测试当前的gedit实例是否为
-
在相同的屏幕号和显示名称
-
在同一工作区
-
超过视口的边的25%
如果一切都为真,则gedit会在新选项卡中的同一实例中打开,否则会在新窗口中打开。
总之 – 改变行为的唯一现实方法是改变算法……
怎么样…
以下是获得打开gedit的一致方式的快速方法…它将始终打开一个新实例。
安装基本的开发工具
sudo apt-get install devscripts build-essential fakeroot
得到消息来源
cd ~/Downloads
mkdir build
cd build
apt-get source gedit
cd gedit-3.2*
做出改变
打开gedit-app.c
gedit gedit/gedit-app.c
如图所示添加return FALSE;
并保存。
这样做总是退出例程,说“我没有在视口中运行,因此总是打开一个新实例”
如果您使用return TRUE;
,它将始终在新选项卡中的现有gedit实例中打开…
给它一个独特的包名
好的,我们需要为包提供一个唯一的名称,以防止存储库更新覆盖已更改的包
gedit debian/changelog
现在将+yourname
附加到顶行版本并保存文件,即
注意 – 绝对确定 – 在安装下面的修改后的软件包后,按照下面的链接问题锁定版本。
构建包
sudo apt-get build-dep gedit
debuild -i -us -uc -b
去喝杯咖啡……
cd ..
sudo dpkg -i gedit*.deb
相关问题:
次佳解决思路
我想在一个gedit窗口中打开所有文件。我没有在其他地方找到这些信息,但是通过以下更改,我设法将所有文本文件仅在一个窗口中打开作为新选项卡,不管我打开它们(通过启动器,通过 nautilus ,通过Gnome DO)。
-
获取显示编号:在命令行中键入
echo $DISPLAY
。例如你得到:0
作为你的显示号码。 -
使用文本编辑器以超级用户身份打开
/usr/share/applications/gedit.desktop
。 -
换行说:
Exec=gedit %U
至
Exec=gedit --display=:0 %U
其中
:0
是您的显示号码。
第三种解决思路
这不是随机发生的
默认情况下,Gedit不会打开许多实例,但每个实例都会显示一个。如果你打开显示在哪里还没有Gedit将打开Gedit女巫的文件现在存在于该显示从女巫打开文件。
因此,您可以将第一个gedit实例设置为所有工作区,以便它跟随您的活动显示。或者在每个项目的每个工作区上工作,每个工作区都有自己打开的Gedit。在键盘快捷键中,您可以在所有工作区上切换窗口的新快捷方式。
或者可以使用Open With中的快捷命令在新实例中打开它.gedit --new-window
因此,您可以尝试使用重置打开php属性,并使用Gedit添加新的开头
使用gedit --help-all
ull看到用gedit打开的其他选项。
您还可以尝试使用所有配置文件删除gedit并使用sudo apt-get purge gedit && sudo apt-get clean && sudo apt-get update && sudo apt-get install gedit
清理它
更新:我能够重现 – 当移动窗口稍微偏离屏幕然后打开一些文件在新窗口中打开。它以某种方式认为它在另一个显示器中。
参考资料