Використання демонового режиму в Gnome 3


14

Я змусив демона Emacs працювати через командний рядок за допомогою сторінки EmacsWiki , але я застряг у тому, як змусити клієнта пробігати через запуск Gnome 3. Як я можу налаштувати файл на робочому столі Gnome, який запускає вікно графічного інтерфейсу, яке підключається до демона Emacs?

Відповіді:


17

Я використовую Ubuntu, тому розташування файлу на робочому столі може бути різним, але я думаю, що вміст повинен бути подібним.

$ 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

Важлива частина:

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

Для уточнення цього, мабуть, слід:

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

З документації на emacsclient ці комутатори роблять наступне:

-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і тоді, якщо emacs ще не демонізований, він запускає новий демон emacs з -a "". Нарешті, %Fвиправляє його, щоб ви могли перетягнути текстовий файл на піктограму, і він відкриє його.

Так само, як і в сторону, ви також можете розглянути, -F "((fullscreen . maximized))"щоб змусити кадр максимізувати при запуску. На жаль, я не можу згадати, яка версія emacs потрібна для роботи.


1
Це працює інакше чудово, але це завжди відкриває нове вікно Emacs. Для інших піктограм запуску зосереджено існуюче вікно. Чи є спосіб отримати таку саму поведінку?
akaihola

2

Я дійсно просто налаштовую відповідь dgtized на адресу коментаря від akaihola. Тобто, чого ми хочемо

  • використовувати функцію демона Emacs
  • викликайте існуючий кадр або створіть його, якщо необхідно.

Я вважаю, що створити emacs25.desktopфайл, а не emacsclient.desktopмагічно спрацювало (чесно кажучи, я не знаю чому).

Так я і зробив:

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

(це залежить від вашої системи emacs25)

Тоді ~/.local/share/applications/emacs25.desktopя змінив рядок Exec на такий:

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

Оболонка входу в bash гарантує, що у демона є моє повне середовище входу.

І я зняв TryExecлінію.

Нарешті, я відредагував Nameтак, що зможу розпізнати його на пусковій установці, натиснув Супер і клацнув правою кнопкою, щоб додати свій новий елемент до обраного. У мене завжди є перший пункт Emacs, тож Super + 1 викликає його.

Name=GNU Emacs client

І все, здається, добре.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.