Answers:
我正在使用Ubuntu,因此桌面文件的位置可能不同,但我认为内容应该相似。
$ cat ~/.local/share/applications/emacsclient.desktop
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=GNU Emacs 24
GenericName=Text Editor
Comment=View and edit files
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;
Exec=/usr/bin/emacsclient -c -a "" %F
Icon=/usr/share/icons/hicolor/scalable/apps/emacs-snapshot.svg
Type=Application
Terminal=false
Categories=Utility;Development;TextEditor;
StartupWMClass=Emacs
Name[en_US]=GNU Emacs 24
重要的部分是:
Exec=/usr/bin/emacsclient -c -a "" %F
要澄清的可能应该是:
Exec=/usr/bin/emacsclient --create-frame --alternate-editor "" %F
根据emacsclient上的文档,这些开关执行以下操作:
-c, --create-frame Create a new frame instead of trying to
use the current Emacs frame
-a EDITOR, --alternate-editor=EDITOR
Editor to fallback to if the server is not running
If EDITOR is the empty string, start Emacs in daemon
mode and try connecting again
因此,它将使用创建一个新框架-c
,然后如果尚未守护emacs,则使用来启动一个新的emacs守护程序-a ""
。最后,对其进行%F
修复,以便您可以将文本文件拖到图标上,它将打开它。
顺便说一句,您可能还会考虑-F "((fullscreen . maximized))"
在启动时强制框架最大化。不幸的是,我不记得要运行哪个版本的emacs。
我真的只是在调整dgtized的答案,以解决akaihola的评论。即我们想要的是
我发现创建emacs25.desktop
文件而不是emacsclient.desktop
神奇地工作(坦率地说,我不知道为什么)。
所以我做了:
cp /usr/share/applications/emacs25.desktop ~/.local/share/applications
(取决于您的系统,可能不是emacs25
)
然后在我~/.local/share/applications/emacs25.desktop
中将Exec行更改为:
Exec=/bin/bash --login -c "emacsclient --alternate-editor= --create-frame %F"
bash登录外壳程序确保守护程序具有我的完整登录环境。
然后我取消了TryExec
生产线。
最后,我进行了编辑,Name
以便能够在启动器中识别它,点按“超级”,然后右键单击以将新项目添加到收藏夹。我总是将Emacs放在第一位,所以Super + 1召唤了它。
Name=GNU Emacs client
一切似乎都很好。