ใช้โหมด daemon ใน Gnome 3


14

ฉันได้รับ Emacs daemon เพื่อทำงานผ่านบรรทัดคำสั่งโดยใช้หน้า EmacsWikiแต่ฉันติดอยู่กับวิธีทำให้ไคลเอ็นต์เรียกใช้ผ่านตัวเรียกใช้งาน Gnome 3 ฉันจะตั้งค่าไฟล์เดสก์ท็อป Gnomeที่เปิดหน้าต่าง GUI ที่เชื่อมต่อกับ Emacs daemon ได้อย่างไร

คำตอบ:


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 ไม่ได้ daemonized แล้วมันเริ่ม emacs -a ""ใหม่ภูตด้วย ในที่สุดการ%Fแก้ไขมันเพื่อให้คุณสามารถลากไฟล์ข้อความลงบนไอคอนและมันจะเปิดมัน

นอกจากนี้คุณยังอาจพิจารณารวมถึง-F "((fullscreen . maximized))"การบังคับให้เฟรมเปิดใช้งานให้ใหญ่ที่สุด น่าเสียดายที่ฉันจำไม่ได้ว่าต้องใช้ emac รุ่นใดเพื่อให้ทำงานได้


1
มันใช้งานได้ดีมาก แต่มันจะเปิดหน้าต่าง Emacs ใหม่เสมอ สำหรับไอคอนตัวเรียกใช้อื่น ๆ จะเน้นหน้าต่างที่มีอยู่ มีวิธีการที่จะได้รับพฤติกรรมเดียวกันหรือไม่?
akaihola

2

ฉันแค่ปรับแต่งคำตอบของ dgtized เพื่อแก้ไขความคิดเห็นจาก akaihola คือสิ่งที่เราต้องการคือ

  • ใช้ประโยชน์จากฟังก์ชัน daemon ของ 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 ทำให้แน่ใจว่า daemon มีสภาพแวดล้อมการล็อกอินแบบเต็ม

และฉันลบTryExecบรรทัด

ในที่สุดฉันก็แก้ไขNameดังนั้นฉันจึงสามารถจดจำได้ในตัวเรียกใช้งานแตะที่ Super และคลิกขวาเพื่อเพิ่มรายการใหม่ของฉันลงในรายการโปรด ฉันมีไอเทมชิ้นแรกสำหรับฉันอยู่เสมอดังนั้น Super + 1 จึงเรียกมันออกมา

Name=GNU Emacs client

และดูเหมือนว่าจะเป็นไปด้วยดี

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.