Używam Ubuntu, więc lokalizacja pliku pulpitu może być inna, ale myślę, że zawartość powinna być podobna.
$ 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
Ważną częścią jest:
Exec=/usr/bin/emacsclient -c -a "" %F
Aby to wyjaśnić, prawdopodobnie powinno to być:
Exec=/usr/bin/emacsclient --create-frame --alternate-editor "" %F
Z dokumentacji emacsclient te przełączniki wykonują następujące czynności:
-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
-c
Tworzy więc nową ramkę, a jeśli emacs nie jest jeszcze demonizowany, uruchamia nowego demona emacs -a ""
. Na koniec %F
naprawia to, dzięki czemu można przeciągnąć plik tekstowy na ikonę i otworzy go.
Na marginesie możesz także rozważyć -F "((fullscreen . maximized))"
wymuszenie maksymalizacji ramki przy uruchomieniu. Niestety nie pamiętam, która wersja emacsa jest wymagana, aby to działało.
Naprawdę poprawiam odpowiedź dgtized, aby odpowiedzieć na komentarz od akaihola. To znaczy, czego chcemy
Uważam, że tworzenie
emacs25.desktop
pliku zamiastemacsclient.desktop
magicznie działało (szczerze mówiąc, nie wiem dlaczego).Więc zrobiłem:
cp /usr/share/applications/emacs25.desktop ~/.local/share/applications
(w zależności od systemu może nie być
emacs25
)Następnie
~/.local/share/applications/emacs25.desktop
zmieniłem wiersz Exec na:Exec=/bin/bash --login -c "emacsclient --alternate-editor= --create-frame %F"
Powłoka logowania bash zapewnia, że demon ma moje pełne środowisko logowania.
I usunąłem
TryExec
linię.Na koniec dokonałem edycji,
Name
aby móc rozpoznać ją w programie uruchamiającym, dotknąłem Super i kliknąłem prawym przyciskiem myszy, aby dodać mój nowy element do ulubionych. Zawsze mam dla siebie Emacsa, więc Super + 1 przywołuje go.Name=GNU Emacs client
I wszystko wydaje się dobrze.
źródło