আমি কীভাবে theক্য প্রবর্তক থেকে চলমান ইমালক্লিয়েন্ট করতে পারি একটি বিদ্যমান ইম্যাকস উইন্ডোটিকে পুনরায় ব্যবহার করুন


12

আপনি যদি একটি .ডেস্কটপ ফাইল (যেমন ইম্যাকস এক) অনুলিপি করে একটি ইম্যাকস্ক্লিয়েন্ট লঞ্চার তৈরি করেন তবে এটি স্ট্যান্ডার্ড ইউনিটি লঞ্চার পদ্ধতিতে আচরণ করে না। এটি সর্বদা একটি নতুন উইন্ডো চালু করে; এটি স্বীকৃতি দেয় না যে বিদ্যমান এমাকস্ক্লিয়েন্ট উইন্ডোগুলি তাদের কাছে লাফানোর জন্য বিদ্যমান। আমি কীভাবে এটি আচরণ করতে পারি?

ব্যাকগ্রাউন্ড হিসাবে, এটি ইম্যাক্সের জন্য একটি খুব দরকারী ব্যবহারের মোড, যেখানে আপনি এটি ডেমন হিসাবে চালান: emacs --daemonএবং তারপরে আপনি একটি ইমাস উইন্ডোটি ডেকে আনেন emacsclient। অভ্যাসগত ইমাস ব্যবহারকারীদের জন্য এটি করার একটি ভাল উপায় হ'ল emacs --daemonআপনার স্টার্টআপ অ্যাপ্লিকেশনগুলিতে রাখা।

উত্তর:


16

সমাধানটি হ'ল emacsclient.desktopস্টার্টআপডাব্লুএমক্লাস সেটিংস ব্যবহার করে উইন্ডোর শ্রেণীর নির্দেশিকা সহ একটি ফাইল তৈরি করা । এটি ছাড়া, ইউনিটি বলতে পারে না যে উইন্ডোটি ইম্যাকস্ক্লিয়েন্ট থেকে এসেছে। এটি ইমাস একের লিখিত সামগ্রীর উপর ভিত্তি করে একটি তৈরি করবে (/usr/share/applications/emacs23.desktop):

mkdir -p ~/.local/share/applications
cat > !$/emacsclient.desktop <<EOF
[Desktop Entry]
Version=1.0
Name=Emacsclient
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 %F
Icon=/usr/share/icons/hicolor/scalable/apps/emacs23.svg
Type=Application
Terminal=false
Categories=Utility;Development;TextEditor;
StartupWMClass=Emacs
EOF

লঞ্চারে ইম্যাক্লিসিয়েন্টটি রাখুন (উদাহরণস্বরূপ সুপার আলতো চাপুন, "emacsclient" টাইপ করুন, এটিকে টেনে আনুন) এবং লগ আউট / ইন করুন।


আমার .bashrc এ, আমি টিএমপিডিআইআর = $ OME হোম} / টিএমপি সংজ্ঞায়িত করি তাই অস্থায়ী ফাইলগুলি আমার এনক্রিপ্ট করা $ হোমের অধীনে থাকে। লঞ্চার থেকে অনুরোধ করা ইম্যাকস, এই সংজ্ঞাটি দেখতে পাচ্ছে না, তবে শেল থেকে অনুরোধ করা ইম্যাক্যাক্লিয়েন্ট। emacs (সার্ভার-শুরুর পরে) / tmp এ একটি সকেট খোলে, emacsclient একটি ket {HOME} / tmp এ একটি সকেটের মাধ্যমে ইম্যাকের সাথে যোগাযোগের চেষ্টা করে এবং খুব খারাপভাবে করে। টিএমপিডিআইআর-এর সঠিক মানটি পাস করার জন্য আমি কি emacsclient.desktop ব্যবহার করতে পারি?
ওয়ালটিনেটর

আমি আমার প্রশ্নটিকে তার নিজস্ব একটি থ্রেডে সরিয়েছি, এবং উত্তর পেয়েছি। দেখুন askubuntu.com/questions/64005/launcher-doesnt-respect-tmpdir/...
waltinator

Ityক্য emacsclient.desktopকোনও কারণে আমার সম্পূর্ণ উপেক্ষা করেছে। alacarteপরিবর্তে এর পরিবর্তে ("মেনু মেনু" জিইউআই) তে ল্যাঞ্চার তৈরি করে আমি এটির কাছাকাছি চলে এসেছি ।
ব্রায়ান জেড

2

James.ferguson দ্বারা সমাধান ভাল কাজ করে। আমি যা চেয়েছিলাম তা হল "পছন্দের অ্যাপ্লিকেশন" হিসাবে কিছু ফাইল প্রকারের সাথে emacsclient যুক্ত করা। এর জন্য, আমি একটি নতুন "এক্সিকিউট" লাইন সহ জেমসের স্ক্রিপ্টটি পেয়েছি

Exec=/usr/bin/emacsclient --alternate-editor emacs24 --no-wait %F

আমার জন্য আরও ভাল কাজ করে: এটি যদি একটি নতুন চলমান না থাকে তবে এটি একটি নতুন ইম্যাক চালায়, একটি নতুন উইন্ডো খুলবে না এবং ক্লায়েন্টদের এখনও স্টাফ হওয়ার জন্য অপেক্ষা করছে এমন বিষয়ে ইমাসকে অভিযোগ করে না।

এখন আমি ফাইলগুলিতে ক্লিক করতে পারি এবং সেগুলি চলমান ইম্যাকগুলিতে খোলা হয়, যদি এটি উপস্থিত থাকে, অন্যথায় ইমাকগুলি শুরু হয়।


1

অন্য উপায় হ'ল স্ক্রিপ্ট ব্যবহার করা :

if [ "$(pidof emacs)" ] ; then
    emacsclient "$@" &
else
    emacs -mm "$@" &
fi

সুতরাং আপনি সর্বদা একই কমান্ড প্রার্থনা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.