Answers:
解决方案是emacsclient.desktop
使用StartupWMClass设置创建一个包含指令的文件,该指令包含该指令的窗口类。没有它,Unity无法说出该窗口来自Emacsclient。这将基于Emacs的内容之一创建一个(/usr/share/applications/emacs23.desktop):
mkdir -p ~/.local/share/applications
cat > !$/emacsclient.desktop <<EOF
[Desktop Entry]
Version=1.0
Name=Emacsclient
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 %F
Icon=/usr/share/icons/hicolor/scalable/apps/emacs23.svg
Type=Application
Terminal=false
Categories=Utility;Development;TextEditor;
StartupWMClass=Emacs
EOF
将emacsclient放置在启动器中(例如,点击Super,键入“ emacsclient”,将其拖动),然后注销/登录。
emacsclient.desktop
出于某种原因,Unity完全忽略了我。我最终通过在alacarte
(“主菜单” GUI)中创建启动器来解决此问题。