我在 Linux Mint 13 中使用 Mate 1.2.0。我使用的两个文本编辑器是 Gedit 和 Geany (v0.25):我使用 Geany 进行所有编码,因为我更喜欢语法突出显示和其他一些界面功能。
但让我烦恼的一件事是这种行为:
- 在 Geany 的工作区 1 中打开文件
- 转到工作区 2
- 双击文件将其打开(在 Geany 中)
- 桌面再次切换到工作区 1 并在 Geany 中打开文件。
当我在 Gedit 中执行此操作时,它会在该工作区中打开一个新的 Gedit 实例,这非常适合我的工作风格,我在每个工作区中打开了不同的项目。
我能从程序菜单启动 Geany 的另一个实例,并将其移至另一个工作区,但它不会改变行为:然后我看到以下内容:
- 在 Geany 的工作区 1 中打开文件
- 转到工作区 2
- 从程序菜单启动一个新的 Geany 实例(所以我现在每个工作区都有一个实例)
- 双击文件将其打开(在 Geany 中)
- 桌面再次切换到工作区 1 并在第一个 Geany 实例中打开该文件。
所以它就像总是在“主”Geany 中打开一个文件,然后切换到恰好位于其中的任何工作区。
有什么办法可以改变这种行为吗?我希望它是这样的:
- 打开文件时:此工作区中是否有 Geany 正在运行?
- yes: 在 Geany 中打开文件
- 否:在此工作区中打开一个新的 Geany 并在其中打开文件。
我在设置中看不到与此相关的选项。任何建议表示赞赏!谢谢
答案1
使用此批处理打开 Geany。这将打开一个特定于每个工作区的单独套接字。
例如,在 Thunar 中,使用“使用其他应用程序打开”并指向此批处理文件。
#!/bin/sh
socket=`xprop -root _NET_CURRENT_DESKTOP`
socket=${socket##* }
if [ "$socket" ]
then
if [ "$DISPLAY" ]
then
socket="${DISPLAY%.*}-$socket"
socket=${socket#*:}
else
socket="NODISPLAY-$socket"
fi
exec geany --socket-file "/tmp/geany_socket_$socket" "$@"
else
exec geany "$@"
fi
答案2
转到终端并键入geany -h
它会显示所有可用的选项。其中-i, --new-instance Don't open files in a running instance, force opening a new instance
正是您所需要的。
如何
找到您正在点击的那个东西。
在任何文本编辑器中打开它,或者找到一种更改它正在执行的命令的方法。 (例如,如果它是托盘中的启动器,则可能会很棘手)。
将命令从类似更改
geany -some_options
为geany -some_options -i
--
完毕。
答案3
这对于评论来说太长了,所以我将其作为答案发布。我很难让奥利维尔的答案发挥作用,所以我想我应该在他的答案中包含更详细的说明,以防其他人也遇到麻烦(所有功劳都归于他,支持他而不是/以及我的)。
创建一个批处理文件,其中包含
#!/bin/sh
socket=`xprop -root _NET_CURRENT_DESKTOP`
socket=${socket##* }
if [ "$socket" ]
then
if [ "$DISPLAY" ]
then
socket="${DISPLAY%.*}-$socket"
socket=${socket#*:}
else
socket="NODISPLAY-$socket"
fi
exec geany --socket-file "/tmp/geany_socket_$socket" "$@"
else
exec geany "$@"
fi
将批处理文件放入 PATH 中包含的目录中(请参阅https://stackoverflow.com/questions/14650070/how-to-execute-bash-script-from-any-location)。我假设您将批处理文件命名为 wgeany,否则将以下说明中的名称替换为您命名的任何名称。
现在我们希望将其设置为打开文本文件的默认程序。不幸的是,它不在列表中,至少在我的版本中,不幸的是您无法进行自定义选择。
我们可以通过转到~/.local/share/applications
或/usr/share/applications
(如果一个不存在/不起作用/您没有权限尝试另一个)并创建一个名为 wgeany.desktop 的文本文件来解决此问题,其中包含:
[Desktop Entry]
Name=wgeany
Comment=wgeany
Exec=wgeany %f
Type=Application
StartupNotify=false
Terminal=false
Categories=TextTools;
Name[en_US]=wgeany
另外,您可能想要包含一条指向正确的 geany 图标 ( Icon=path/icon.png
) 的行,但我没有费心去找到它。保存文件,现在您的批处理文件应该出现在打开方式对话框中。 (您可以将其设置为文件类型(例如 .txt)的默认应用程序,方法是转到(该类型)文件的属性,然后转到“打开方式”选项卡并将 wgeany 设置为默认应用程序。
还要感谢 MaxWilliams 帮助我解决了这个问题。
答案4
如果您使用“文件”和“打开”,Geany 将在当前“主”实例(即您当前使用的 Geany 实例而不是第一个实例)中打开文件。