Uso della modalità demone in Gnome 3


14

Sono riuscito a far funzionare il demone Emacs attraverso la riga di comando usando la pagina EmacsWiki , ma sono bloccato su come far funzionare il client attraverso il launcher di Gnome 3. Come posso impostare un file desktop Gnome che avvia una finestra della GUI che si collega al demone Emacs?

Risposte:


17

Sto usando Ubuntu, quindi la posizione del file desktop potrebbe essere diversa ma penso che il contenuto dovrebbe essere simile.

$ 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 è:

Exec=/usr/bin/emacsclient -c -a "" %F

Per chiarire che probabilmente dovrebbe essere:

Exec=/usr/bin/emacsclient --create-frame --alternate-editor "" %F

Dalla documentazione su emacsclient tali switch effettuano le seguenti operazioni:

-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

Quindi crea un nuovo frame usando -ce quindi se emacs non è già demonizzato, avvia un nuovo demone emacs con -a "". Infine, lo %Frisolve in modo da poter trascinare un file di testo sull'icona e lo aprirà.

Proprio come un lato si potrebbe anche considerare l'inclusione -F "((fullscreen . maximized))"di forzare il frame per massimizzare al lancio. Sfortunatamente, non riesco a ricordare quale versione di Emacs è necessaria affinché funzioni.


1
In caso contrario, funziona alla grande, ma apre sempre una nuova finestra di Emacs. Per le altre icone di avvio, viene focalizzata una finestra esistente. C'è un modo per ottenere lo stesso comportamento?
Akaihola,

2

Sto davvero modificando la risposta di dgtized per rispondere al commento di Akaihola. Cioè quello che vogliamo è

  • utilizzare la funzionalità demone di Emacs
  • evoca un frame esistente o creane uno se necessario.

Trovo che creando un emacs25.desktop file piuttosto che emacsclient.desktopmagicamente ha funzionato (francamente, non so perché).

Così ho fatto:

cp /usr/share/applications/emacs25.desktop ~/.local/share/applications

(a seconda del sistema in uso, potrebbe non esserlo emacs25 )

Poi nella mia ~/.local/share/applications/emacs25.desktopho cambiato la linea Exec di essere:

Exec=/bin/bash --login -c "emacsclient --alternate-editor= --create-frame %F"

La shell di login bash assicura che il demone abbia il mio ambiente di login completo.

E ho rimosso il TryExec linea.

Infine, ho modificato in Namemodo da poterlo riconoscere nel programma di avvio, ho toccato Super e ho fatto clic con il pulsante destro del mouse per aggiungere il mio nuovo elemento ai preferiti. Ho sempre Emacs il primo oggetto per me, quindi Super + 1 lo convoca.

Name=GNU Emacs client

E tutto sembra andare bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.