যদি প্রোগ্রামটি চলমান থাকে তবে আমি কীভাবে xmonad এ হটকিগুলির আচরণ পরিবর্তন করতে পারি?


12

আমি আমার xmonad.hsকনফিগারেশন ফাইলে কয়েকটি কী ম্যাপিং ব্যবহার করছি :

...
    , modMask = mod4Mask     -- Rebind Mod to the Windows key
...
 [ ((controlMask, xK_Print), spawn "sleep 0.2; scrot -s")
 , ((0, xK_Print), spawn "scrot")
 , ((controlMask, xK_f), spawn "firefox")
 ]

তৃতীয় ম্যাপিং রান firefoxযখন টিপে ctrl+f। আমি আরও জটিল কিছু করতে চাই:

if (firefox is running):
  focus and maximize firefox window:
else:
  run firefox

আমি পরিবর্তন করতে চান ctrl+fকরতে win+f। আমি এটা কিভাবে করবো?


এই জাতীয় ক্রসপোস্টিং (এখানে এবং স্ট্যাকওভারফ্লোতে) আসলেই একটি সাধারণ ব্যবসা?
5 МАЛИКОВ

না: এটি সক্রিয়ভাবে নিরুৎসাহিত ...
জেসনওয়ারিয়ান

এটি এসও-তে অফ-টপিক, তাই আমি তাদের অনুলিপি থেকে তাদের মুক্তি দিতে
বলেছিলাম

@ dmitry.malikov এই প্রশ্নের ভাল জায়গা বলে মনে হচ্ছে।
xralf

আর ভালো; xralf এসও অনুলিপি মুছে ফেলা হয়েছে। অনেক ধন্যবাদ
মাইকেল মরোজেক

উত্তর:


8

এ খুঁজছি XMonad এর contrib প্যাকেজ , আপনি পাবেন XMonad.Actions.WindowGo, যা রপ্তানি করে নিম্নলিখিত ফাংশন :

runOrRaiseMaster :: String -> Query Bool -> X ()

যা প্রোগ্রামটি চালানোর জন্য একটি স্ট্রিং আর্গুমেন্ট গ্রহণ করে , যেমন "ফায়ারফক্স"; এবং একটি বুলিয়ান ক্যোয়ারী যা এটি X11 বৈশিষ্ট্যের মাধ্যমে ইতিমধ্যে চালু রয়েছে কিনা তা অনুসন্ধান করতে ব্যবহৃত হয় , যেমন (className =? "Firefox")( রূপগুলির XMonad.Actions.WindowGoপৃষ্ঠার শীর্ষে দেখুন )।

সুতরাং, আপনার যা দরকার তা হ'ল runOrRaiseMaster "firefox" (className =? "Firefox")আপনার চাবিটি আবদ্ধ করা, যেমনটি ব্যাখ্যা করেছেনXMonad.Doc.Extending , এর মাধ্যমে

((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))

Data.Mapআপনার কনফিগারেশনের মূল বাইন্ডিংগুলির অংশ হিসাবে (বিশদটি আপনার সেটিংসের পদ্ধতির সাথে পৃথক হয়ে যায়, অর্থাত্ আপনার পুরোটিxmonad.hs , কীবিন্ডিংগুলি যুক্ত করা দেখুন )।

নোট করুন যে এক্সমোনাদে উইন্ডোটি সর্বাধিক করার কোনও সত্যিকার অর্থে নেই । আপনি যখন বর্ণিত হিসাবে জিনিসগুলি সেট আপ করবেন তখন আপনার Mod4+ fনিচের মত কাজ করবেন:

  • যদি "ফায়ারফক্স" এর সাথে ক্লাসের সাথে একটি উইন্ডো মিলছে তবে এটি মনোনিবেশ করা হবে এবং মাস্টার হিসাবে সেট করা হবে, আপনার সাম্প্রতিক লেআউটের উপর নির্ভর করে বড় উইন্ডো হবে
  • যদি কোনও উইন্ডো মেলে না, ফায়ারফক্স তৈরি হবে এবং মাস্টার হিসাবে সেট হবে

পূর্ণবিস্তার চয়ন করে emulated করা যাবে Fullকলিং পর লেআউট runOrRaiseMaster, এখানে বর্ণনা করা হয়েছে :

("M-<F1>", sendMessage $ JumpToLayout "Full")

(নোট করুন যে এই উদাহরণটি আরও XMonad.Util.EZConfigসহজ কী-বাইন্ডিং সংজ্ঞাগুলিকে মঞ্জুরি দেয়)

এই দুটি জিনিসের সংমিশ্রণও সম্ভব। উভয়ই প্রকারের X (), অর্থাৎ তারা এক্স মোনাডে । ব্যবহার >>, যা টাইপ (সাথে চেক :t (>>)ইন ghci)

(>>) :: Monad m => m a -> m b -> m b

আমাদের (runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full")মধ্যে দুই X ()ধরণের টাইপের সংমিশ্রণও রয়েছে X ()এবং এটি একটি কীতে আবদ্ধ হতে পারে।

এর )সাথে কোড লাইনে ইডিআইটি মিসিং>>

সম্পাদনা 2 modm -> modMask

এডিট 3 এটি আশাবাদী কাজ করে।xmonad.hs

( কেন আপনি খুব ভাল জন্য একটি হাস্কেল শিখেন না? )


উত্তর এবং অন্যান্য তথ্য এবং হাস্কেল টিউটোরিয়াল কাজ করার জন্য আপনাকে ধন্যবাদ। আমি হাস্কেল সিনট্যাক্স এবং ফাংশনাল দৃষ্টান্ত পছন্দ করি। একমাত্র জিনিস যা কাজ করে না সেটি >> (sendMessage $ JumptoLayout "Full")হল কনস্ট্রাক্টরের সাথে কিছু ত্রুটি রয়েছে। সম্ভবত এটি সহজ কিছু, যা আমি হাস্কেল শিখার পরে সমাধান করব।
xralf

আমি ভুলে গেছি: তবুও modmকাজ করে না, আমি এখনও ব্যবহার করছি controlMask
xralf

@ xralf, (1) একটি অনুপস্থিত বন্ধনী ছিল - এটি এখন কাজ করে? (২) xmonad.hsএটি ঠিক করার জন্য আমার আপনার সম্পূর্ণ দরকার ; আরও ভালোভাবে এখানে প্রায় একবার দেখুন, কনফিগার সংরক্ষণাগারটি দেখুন এবং দেখুন অন্যরা কীভাবে এটি ব্যবহার করে বা উল্লিখিত ব্যবহার করে EZConfig
sr_

বন্ধনী সাহায্য করেনি। আমি ব্যবহার করছি xmonad.hs ফাইলটি এখানে
xralf

(1) বন্ধনীগুলি এখনও ভুল আছে, X ()কীটি আবদ্ধ করতে টাইপের ক্রিয়াটি হওয়া উচিত (runOrRaiseMaster ...) >> (sendMessage ...), ফলস্বরূপ ,((...,...), (runOrR...) >> (send...) ) ( (পূর্বে run...)
sr_
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.