Estoy usando Ubuntu, por lo que la ubicación del archivo de escritorio puede ser diferente, pero creo que el contenido debería ser similar.
$ 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
La parte importante es:
Exec=/usr/bin/emacsclient -c -a "" %F
Para aclarar que probablemente debería ser:
Exec=/usr/bin/emacsclient --create-frame --alternate-editor "" %F
De la documentación en emacsclient, esos conmutadores hacen lo siguiente:
-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
Por lo tanto, -c
crea un nuevo marco utilizando y luego, si emacs aún no está demonizado, comienza un nuevo demonio con emacs -a ""
. Finalmente, lo %F
corrige para que pueda arrastrar un archivo de texto al icono y lo abrirá.
Solo como un lado, también puede considerar incluir -F "((fullscreen . maximized))"
para forzar que el marco se maximice en el lanzamiento. Desafortunadamente, no puedo recordar qué versión de emacs se requiere para que eso funcione.
Realmente solo estoy ajustando la respuesta de dgtized para abordar el comentario de akaihola. Es decir, lo que queremos es
Me parece que crear un
emacs25.desktop
archivo en lugar deemacsclient.desktop
trabajar mágicamente (francamente, no sé por qué).Así que lo hice:
cp /usr/share/applications/emacs25.desktop ~/.local/share/applications
(dependiendo de su sistema, puede no serlo
emacs25
)Luego en mi
~/.local/share/applications/emacs25.desktop
cambié la línea Exec para ser:Exec=/bin/bash --login -c "emacsclient --alternate-editor= --create-frame %F"
El shell de inicio de sesión bash se asegura de que el demonio tenga mi entorno de inicio de sesión completo.
Y quité la
TryExec
línea.Finalmente, edité
Name
para poder reconocerlo en el iniciador, hice clic en Super e hice clic derecho para agregar mi nuevo elemento a favoritos. Siempre tengo Emacs como primer elemento para mí, entonces Super + 1 lo invoca.Name=GNU Emacs client
Y todo parece estar bien.
fuente