Estou usando o Ubuntu, então o local do arquivo da área de trabalho pode ser diferente, mas acho que o conteúdo deve ser semelhante.
$ 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
A parte importante é:
Exec=/usr/bin/emacsclient -c -a "" %F
Para esclarecer que provavelmente deveria ser:
Exec=/usr/bin/emacsclient --create-frame --alternate-editor "" %F
Na documentação do emacsclient, esses comutadores fazem o seguinte:
-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
Portanto, ele -c
cria um novo quadro usando e, se o emacs ainda não estiver daemonizado, ele inicia um novo daemon do emacs -a ""
. Finalmente, o %F
corrige para que você possa arrastar um arquivo de texto para o ícone e ele será aberto.
Apenas como um aparte, você também pode considerar incluir -F "((fullscreen . maximized))"
para forçar o quadro a maximizar no lançamento. Infelizmente, não me lembro qual versão do emacs é necessária para que isso funcione.