ग्नोम 3 में डेमन मोड का उपयोग करना


14

मैंने EmacsWiki पेज का उपयोग करके कमांड लाइन के माध्यम से काम करने के लिए Emacs डेमॉन प्राप्त किया है , लेकिन मैं इस बात पर अड़ा हुआ हूं कि क्लाइंट को Gnome 3 लॉन्चर के माध्यम से चलाने के लिए कैसे प्राप्त किया जाए। मैं एक Gnome डेस्कटॉप फ़ाइल कैसे सेट कर सकता हूं जो GUI विंडो लॉन्च करती है जो Emacs डेमन से कनेक्ट होती है?

जवाबों:


17

मैं उबंटू का उपयोग कर रहा हूं, इसलिए डेस्कटॉप फ़ाइल का स्थान भिन्न हो सकता है लेकिन मुझे लगता है कि सामग्री समान होनी चाहिए।

$ 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

खाली करने वाले दस्तावेज़ों पर निम्नलिखित स्विच करते हैं:

-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))"लॉन्च में अधिकतम करने के लिए फ्रेम को मजबूर करने के लिए शामिल कर सकते हैं । दुर्भाग्य से, मुझे याद नहीं है कि काम करने के लिए ईमेक का कौन सा संस्करण आवश्यक है।


1
यह अन्यथा महान काम करता है, लेकिन यह हमेशा एक नई Emacs विंडो खोलता है। अन्य लॉन्चर आइकन के लिए, एक मौजूदा विंडो केंद्रित है। क्या समान व्यवहार प्राप्त करने का एक तरीका है?
एकैहौला

2

मैं सच में सिर्फ akaihola से टिप्पणी को संबोधित करने के लिए dgtized के जवाब tweaking हूँ। यानी हम जो चाहते हैं, वह है

  • Emacs की डेमन कार्यक्षमता का उपयोग करें
  • एक मौजूदा फ्रेम को बुलाने या यदि आवश्यक हो तो एक बनाएं।

मुझे लगता है कि जादुई रूप emacs25.desktopसे emacsclient.desktopकाम करने के बजाय एक फ़ाइल बनाना (स्पष्ट रूप से, मुझे नहीं पता क्यों)।

तो मैंने किया:

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

(आपके सिस्टम के आधार पर, यह नहीं हो सकता है emacs25)

तब ~/.local/share/applications/emacs25.desktopमैंने अपनी एक्सिक लाइन को बदल दिया:

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

बैश लॉगिन शेल यह सुनिश्चित करता है कि डेमॉन में मेरा पूरा लॉगिन वातावरण हो।

और मैंने TryExecलाइन हटा दी ।

अंत में, मैंने संपादित किया Nameताकि मैं इसे लांचर में पहचान पाऊं, सुपर पर टैप किया और पसंदीदा में अपना नया आइटम जोड़ने के लिए राइट क्लिक किया। मेरे पास हमेशा मेरे लिए पहला आइटम Emacs है तो Super + 1 इसे समन करता है।

Name=GNU Emacs client

और सब ठीक होने लगता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.