Usando o modo daemon no Gnome 3


Respostas:


17

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 -ccria um novo quadro usando e, se o emacs ainda não estiver daemonizado, ele inicia um novo daemon do emacs -a "". Finalmente, o %Fcorrige 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.


1
Isso funciona muito bem, mas sempre abre uma nova janela do Emacs. Para outros ícones do iniciador, uma janela existente é focada. Existe uma maneira de obter o mesmo comportamento?
akaihola

2

Estou realmente apenas ajustando a resposta de dgtized para abordar o comentário de akaihola. Ou seja, o que queremos é

  • faça uso da funcionalidade de daemon do Emacs
  • convoque um quadro existente ou crie um, se necessário.

Acho que criar um emacs25.desktoparquivo em vez de emacsclient.desktoptrabalhar 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.desktopeu 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 TryExeclinha.

Finalmente, editei Namepara 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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.