为什么 gedit 从 nautilus 打开文件时会不断随机打开新实例?

为什么 gedit 从 nautilus 打开文件时会不断随机打开新实例?

哦,我多么喜欢 Ubuntu 和它的所有功能,但是这个“错误”让我生气了很久,我最终决定在这里寻求帮助。

我已指定.php在 nautilus 中双击所有文件时,都使用 gedit 打开它们。现在,行为很奇怪。

  1. 我没有运行 gedit
  2. 我双击要打开的文件
  3. gedit 窗口打开,文件加载
  4. 我双击另一个要打开的文件

现在有两种可能的结果:

5A) 文件在同一个 gedit 窗口的新标签页中打开

5B) 文件在新的 gedit 窗口中打开,从而运行 2 个 gedit。

A 或 B 是否发生似乎完全是随机的,并且会无限地持续下去。这意味着我双击 100 个文件,最终可能会得到 60 个 gedit,其中一些有 1 个选项卡,一些有 2 个选项卡,一些有 3 个选项卡……

这非常烦人,如果能修复这个问题就太好了。有人尝试修复过这个问题吗?

这在 Ubuntu 10.04、10.10 和 11.10 中都发生过。我测试过的所有 Ubuntu 版本。

答案1

为什么...

gedit有一个非常有趣的算法来确定它是打开一个新实例还是在现有实例的选项卡中打开。

该算法位于gedit-app.c函​​数的源文件中static boolean is_in_viewport,用于测试当前 gedit 实例是否

  1. 在同一屏幕编号和显示名称中
  2. 在同一个工作区中
  3. 大于视口边缘的 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

相关问题:

  1. 如何阻止特定包的更新?

答案2

我希望所有文件都只在一个 gedit 窗口中打开。我没有在其他地方找到此信息,但通过以下更改,我设法让所有文本文件都只在一个窗口中作为新选项卡打开,无论我如何打开它们(通过启动器、通过 nautilus、通过 Gnome DO)。

  1. 获取显示号码:echo $DISPLAY在命令行中输入。例如,您获得的:0是显示号码。

  2. /usr/share/applications/gedit.desktop使用文本编辑器以超级用户身份打开。

  3. 修改以下行:

    Exec=gedit %U
    

    Exec=gedit --display=:0 %U
    

    :0您的显示号码在哪里?

答案3

这不是随机发生的

默认情况下,Gedit 不会打开多个实例,而是每个显示打开一个实例。如果您在尚未打开的显示中打开,Gedit 将在当前显示中打开文件所在的 Gedit 中的文件。

因此,您可以将 gedit 的第一个实例放在所有工作区上,这样它就会跟随您的活动显示。或者在每个工作区上处理每个项目,每个项目都有自己打开的 Gedit。在键盘快捷键中,您可以创建新的快捷方式来切换所有工作区上的窗口。

或者可以使用“打开方式”中的快捷命令使其始终在新实例中打开。gedit --new-window

因此,您可以尝试在 php 属性中打开并重置,然后使用 Gedit 打开新文件

使用gedit --help-allull 可以看到使用 gedit 打开的其他选项。

你也可以尝试删除 gedit 及其所有配置文件,然后使用以下命令进行全新安装sudo apt-get purge gedit && sudo apt-get clean && sudo apt-get update && sudo apt-get install gedit

更新:我能够重现这个问题——当将窗口移出屏幕一点,然后打开某个文件时,会在新窗口中打开。不知何故,它认为它在另一个显示器上。

答案4

只需最大化您的 gedit 窗口,所有内容就会在不同的选项卡中打开。在 Ubuntu 18 中对我有用。

相关内容