উইন্ডো-সিস্টেম সহ ওএস এক্সে ডেমন হিসাবে ইমাক্স


13

আমি ওএস এক্স 10.6 এ জেনু ইম্যাক্স 23.3.1 কোকো বিল্ড চালাচ্ছি।
আমি নিম্নলিখিতগুলি Library / লাইব্রেরি / লঞ্চআজেন্টস / gnu.emacs.daemon.plist এ যুক্ত করেছি যাতে এটি একটি ডেমন শুরু করে এবং যদি আমি অজান্তে এটি হত্যা করি তবে স্বয়ংক্রিয়ভাবে ইম্যাকগুলি পুনরায় চালু করা হবে।

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
 <plist version="1.0">
  <dict> 
    <key>Label</key>
    <string>gnu.emacs.daemon</string>
    <key>ProgramArguments</key>
    <array>
      <string>/Applications/Emacs.app/Contents/MacOS/Emacs</string>
      <string>--daemon</string>
    </array>
   <key>RunAtLoad</key>
   <true/>
   <key>KeepAlive</key>
   <true/>
   <key>ServiceDescription</key>
   <string>Gnu Emacs Daemon</string>
  </dict>
</plist>

এই বাছাইটি কাজ করে তবে আমি লক্ষ্য করেছি যে আমার রঙের থিমটি সঠিকভাবে কাজ করছে না। তারপরে মনে পড়ল আমি আমার ডিআইডি ফাইলটিতে নিম্নলিখিতগুলি যুক্ত করেছিলাম:

(when window-system 
  (require 'alpha)
  (require 'color-theme-ir-black)
  (modify-frame-parameters (selected-frame) '((alpha . 85)))
  (color-theme-ir-black))

যখন ডেমোনের উইন্ডো-সিস্টেমটি শুরু হয় তখন স্পষ্টতই এটি মিথ্যা এবং এটি বোধগম্য হয়, তবে আমি এটি যুক্ত করার কারণটি আমি মাঝে মাঝে ssh ইত্যাদি থেকে একটি টার্মিনালে সাধারণ ইম্যাকস বিল্ডটি শুরু করতে পছন্দ করি এবং এই রঙের স্কিমটি আইটার্মে সম্পূর্ণ অপঠনযোগ্য হয় এভাবে (যখন উইন্ডো-সিস্টেম ...)। --Demon দিয়ে শুরু করার সাথে উইন্ডো মোড শুরু করতে ইমাসকে বাধ্য করার কোনও উপায় আছে কি?

আমি লক্ষ্য করেছি যে অন্য একটি সমস্যা হ'ল আমি যখন ডেমিয়ন মোডে প্রেস ডাব্লু (মুছুন-ফ্রেম) চালনা করি তখন আমি একমাত্র দৃশ্যমান বা আইকনযুক্ত ফ্রেম মুছতে ত্রুটি প্রয়াস পাই না এবং পটভূমিতে ইমাস চলতে থাকে to আমি বেশিরভাগ ক্ষেত্রে এটি পছন্দ করি তবে আমি লক্ষ্য করেছি যে শেষ ফ্রেমটি মারা যাওয়ার পরে আমি আর ডক থেকে ইম্যাকগুলি আর খুলতে পারি না এবং যদিও ইমাস সক্রিয় হবে এবং মেনুগুলি প্রদর্শিত হবে তারা কাজ করে না এবং আমি একটি নতুন ফ্রেম তৈরি করতে পারি না কমান্ডলাইন থেকে emacsclient ব্যবহার ব্যতীত অন্য কারও কাছে এই সমস্যা আছে এবং বা কার্যবিধির বিষয়ে সুপারিশ আছে? সম্ভবত আমি শেষ ফ্রেমটি চিহ্নিত করতে এবং তার পরিবর্তে আইকনফাই-ফ্রেমটি বেঁধে রাখতে পারি, তবে কেন এটি শেষ উইন্ডো না বলে মনে করে এবং আমাকে এটি প্রথম স্থানে মেরে ফেলার অনুমতি দেয় তা নিশ্চিত নয়।

হালনাগাদ:

খুব অনুরূপ সমস্যার সমাধানের জন্য আমি স্টিভ পার্সেলের নীচের ব্লগে একটি মন্তব্য পেয়েছি: http://emacs-fu.blogspot.com/2009/03/color-theming.html

এটি গোপনীয় বলে মনে হচ্ছে সদ্য তৈরি হওয়া ফ্রেম সেটআপ করার জন্য 'মেক-ফ্রেম-ফাংশন হুক ব্যবহার করুন এবং এটিও (setq রঙ-থিম-ই-গ্লোবাল নীল) রয়েছে যাতে প্রতিটি ফ্রেমের নিজস্ব রঙের থিম থাকতে পারে। সুতরাং আমার আর ডিআই এর প্রাসঙ্গিক বিভাগগুলি এখন এর মতো দেখাচ্ছে:

(defvar after-make-console-frame-hooks '()
"Hooks to run after creating a new TTY frame")
(defvar after-make-window-system-frame-hooks '()
"Hooks to run after creating a new window-system frame")

(defun run-after-make-frame-hooks (frame)
"Selectively run either `after-make-console-frame-hooks' or
`after-make-window-system-frame-hooks'"
  (select-frame frame)
  (run-hooks (if window-system
               'after-make-window-system-frame-hooks
               'after-make-console-frame-hooks)))

(add-hook 'after-make-frame-functions 'run-after-make-frame-hooks)
(add-hook 'after-init-hook (lambda ()
  (run-after-make-frame-hooks (selected-frame))))


(setq color-theme-is-global nil)

(add-hook 'after-make-window-system-frame-hooks
          '(lambda ()
             (require 'alpha)
             (require 'color-theme-ir-black)
             (modify-frame-parameters (selected-frame) '((alpha . 85)))
             (color-theme-ir-black)
             (global-set-key (kbd "s-w") 'delete-frame)))

যাইহোক, আমার এখনও ইস্যুটি রয়েছে যেখানে ইম্যাকস ডেমন হিসাবে শুরু হওয়ার সাথে মুছুন-ফ্রেমটি শেষ ফ্রেমটি বন্ধ করে দেয় এবং আমাকে ইম্যাকস্ক্লিয়েন্ট ব্যবহার করে অন্য কোনও নতুন ফ্রেম তৈরি করতে দেয় না।

হালনাগাদ:

আমি যদি দেখি eval (frame-list)2 টি ফ্রেম তালিকাভুক্ত রয়েছে যদিও কেবলমাত্র একটি দৃশ্যমান। আমি লক্ষ্য করেছি যে আমি /Applications/Emacs.appইমাস্যাক্লিয়েন্টের পরিবর্তে খোলার সাথে ইম্যাক্স শুরু করলে এটি ঘটে না । আমি কমান্ডলাইন থেকে সাধারণত একটি উপনাম দিয়ে ইম্যাক্স শুরু করি e='emacsclient -c -n 'যা দ্বিতীয় ফ্রেম তৈরি করে। আমি কেবল ওপেন কমান্ডের সাহায্যে ইমাস শুরু করে অন্য ফ্রেমের সাথে সংযুক্ত হতে পারি। আমি যদি -cকিছু না পেয়ে ইমেলস্ক্লিয়েন্ট-এন কোনওভাবেই চেষ্টা করি তবে এবং আমি যদি চালনা করে emacsclient -n -e '(frame-list)'দেখি তবে একটি ফ্রেম রয়েছে যা আমি -cঅ্যাপ্লিকেশন ফোল্ডার থেকে নতুন ফ্রেম তৈরি করতে বা খোলার জন্য ব্যবহার না করা অবধি এটি দৃশ্যমান নয় ।


এটি কোনও ইমাস প্রশ্নের মতো দেখাচ্ছে না।
সজ্জিত

উত্তর:


1

প্রবর্তন করা ডেমন হিসাবে একটি প্রক্রিয়া বা অ্যাপ্লিকেশন চালনা এটিকে সাধারণভাবে বা কমান্ড লাইনে চালানো থেকে একেবারেই আলাদা পরিবেশ দেয়। আমি ভাবছি এটি লগইন আইটেম হিসাবে শেল স্ক্রিপ্ট ব্যবহার না করে যদি আরও ভাল কাজ না করে।

উদাহরণ স্বরূপ:

#!/bin/bash
while true
do
  open -W /Applications/Emacs.app
done

এই স্ক্রিপ্টটি কোনও .commandএক্সটেনশন এবং 755 অনুমতি ( chmod 0755 myemacsscript.command) সহ একটি ফাইলে সংরক্ষণ করতে হবে এবং তারপরে সিস্টেম পছন্দসমূহ: লগইন: লগইন আইটেম ফলকে যুক্ত করতে হবে।

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

এটি Emacs.app এর সাথে নির্দিষ্ট সমস্যাগুলি সমাধান করবে কিনা আমার কোনও ধারণা নেই তবে এটি কমপক্ষে Emacs.app প্রত্যাশা করে এমন একটি পরিবেশ সরবরাহ করতে পারে।

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