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.
Estou realmente apenas ajustando a resposta de dgtized para abordar o comentário de akaihola. Ou seja, o que queremos é
Acho que criar um
emacs25.desktop
arquivo em vez deemacsclient.desktop
trabalhar magicamente (francamente, não sei por quê).Então eu fiz:
cp /usr/share/applications/emacs25.desktop ~/.local/share/applications
(dependendo do seu sistema, pode não ser
emacs25
)Então no meu
~/.local/share/applications/emacs25.desktop
eu mudei a linha Exec para ser:Exec=/bin/bash --login -c "emacsclient --alternate-editor= --create-frame %F"
O shell de login do bash garante que o daemon tenha meu ambiente de login completo.
E eu removi a
TryExec
linha.Finalmente, editei
Name
para poder reconhecê-lo no iniciador, toquei em Super e cliquei com o botão direito para adicionar meu novo item aos favoritos. Eu sempre tenho o primeiro item do Emacs para mim, então o Super + 1 o convoca.Name=GNU Emacs client
E tudo parece estar bem.
fonte