আপনি কি দেশীয় এলিসপ ব্যবহার করে ইম্যাক সক্রিয় করতে / (সামনে আনতে) পারেন? (যেমন অন্য কোনও প্রোগ্রামে কাজ করার সময়)


16

আমি ইমাক্সকে সক্রিয় করতে বাধ্য করতে চাই, কিছু পরিস্থিতিতে কিনে ফেলা উচিত এবং নির্দিষ্ট পরিস্থিতিতে 'চুরি' করতে চাই। উদাহরণস্বরূপ, যখন আমি একটি org-Pomodoro শেষ করি বা কোনও গুরুত্বপূর্ণ অ্যাপয়েন্টমেন্ট অনুস্মারক চলাকালীন।

এখন, আমি বাহ্যিক নির্ভরতা হ্রাস করার জন্য এটি করার একটি 'দেশীয়' উপায় অনুসন্ধান করছি। (কেবল লিনাক্স আমার পক্ষে ঠিক আছে, ক্রস-প্ল্যাটফর্ম আরও ভাল হবে)।

ইমাকের অভ্যন্তর থেকে এটি কি প্রযুক্তিগতভাবে সম্ভব?

সমাধান [সম্পাদনা]

যদি জিইউআই ব্যবহার করে তবে এটি ভালভাবে কাজ করে:

(x-focus-frame nil)

[Reasonsতিহাসিক কারণে ...] আমি চেষ্টা করেছি:

ফ্রেমের দৃশ্যমানতা (কাজ করে না)

(make-frame-visible)

এবং যদিও:

(make-frame-invisible)
(make-frame-visible)

তবে এগুলি কেবল ইমাক্স ইতিমধ্যে সক্রিয় করা থাকলে কাজ করবে বলে মনে হচ্ছে।

ফ্রেম উত্থাপন (কাজ করে না)

ফ্রেম হ্রাস করার ফলে বাস্তবে ইম্যাকগুলি লুকানো রয়েছে।

(lower-frame)

কিন্তু একটি টাইমার থেকে ফ্রেম উত্থাপন না। অর্থাৎ কিছুই হয় না।

(raise-frame)

দেখে মনে হচ্ছে এটি উত্থাপনের আগে একটি অ্যাক্টিভেট-ইম্যাকস রয়েছে।

[বাহ্যিক সমাধানের জন্য দ্রষ্টব্য]

বর্তমানে, (ওয়ার্কআরাউন্ড / সলিউশন?) হিসাবে আমি কিছুটা এলিস্প ব্যবহার করি:

(call-process "activateEmacs")

এবং সম্পর্কিত বাশ স্ক্রিপ্ট: (আপনাকে প্রথমে আপনার সিস্টেমে এক্সডটুল ইনস্টল করতে হতে পারে)

#!/bin/sh 
sleep 0.5
xdotool search --onlyvisible --class emacs windowactivate

4
ব্যবহার করে দেখুন raise-frame
টম ট্রমে

পরামর্শ দেওয়ার জন্য আপনাকে ধন্যবাদ। ফ্রেম হ্রাস কাজ করে, কিন্তু ফ্রেম বাড়াতে এটি কোনও কারণে পুনরায় উত্থাপন করে না?
লিও উফিমতসেভ

আমি বিশ্বাস করি @ টমট্রমি সঠিক। আপনি নিম্নলিখিত হিসাবে পরীক্ষা করতে পারেন। প্রথমত, একটি কর্মহীন টাইমার তৈরি করুন: (defvar my-timer (run-with-idle-timer 5 t (lambda () (raise-frame))))। সঙ্গে ফ্রেম স্থগিত করুন M-x (suspend-frame)। 5 সেকেন্ডের মধ্যে, সেই ফ্রেমটি আবার উপস্থিত হবে।
ড্যান

ঠিক আছে, এটি কাজ করে যদি আপনি (suspend-frame)এবং অন্য উইন্ডোতে ক্লিক না করে সেখানে অপেক্ষা করেন। তবে যদি আপনি ফ্রেমটি স্থগিত করে এবং অন্য কোনও অ্যাপ্লিকেশনটিতে কাজ করেন, তবে ইমাসগুলি আবার উপস্থিত হবে না। কমপক্ষে আমার সিস্টেমে নেই (ফেডোরা 21 মেট ডেস্কটপ সহ)। একটি সাধারণ উদাহরণ হ'ল এটি : (run-at-time "5 sec" nil '(lambda () (interactive) (message "trying to raise frame") (raise-frame)))এবং অন্য অ্যাপ্লিকেশনটিতে Alt-ট্যাব চালান। বার্তাটি বাফারে উপস্থিত হবে তবে ইমাসগুলি উত্থাপিত হবে না ... চিন্তাভাবনা?
লিও উফিমতসেভ

1
আমি ইমাসের গুই সংস্করণটি ব্যবহার করছি? (টার্মিনাল সংস্করণ নয়), আপনিও গুই ব্যবহার করছেন?
লিও উফিমটসেভ

উত্তর:


16

আপনি যদি উইন্ডো সিস্টেম ব্যবহার করেন তবে আপনি ব্যবহার করতে সক্ষম হতে পারেন x-focus-frame

বিঃদ্রঃ:

  • x-focus-frame উইন্ডোজ পাশাপাশি লিনাক্স জন্য কাজ করে
  • Emacs 23.1 এর পূর্বে, w32-focus-frameউইন্ডোজটিতে ব্যবহার করুন।

হ্যাঁ (x- ফোকাস-ফ্রেম নীল) ইমাস উইন্ডো উত্থাপন করে। ঝরঝরে!
লিও উফিমতসেভ

1

হয় (x-focus-frame nil)বা (other-frame 0)এটি করবে। দুজনের মধ্যে আচরণে কোনও তফাত আছে কিনা তা আমি নিশ্চিত নই।

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