ดูแพ็คเกจ contrib ของ XMonadคุณจะพบว่าXMonad.Actions.WindowGoมีการส่งออกฟังก์ชันต่อไปนี้ :
runOrRaiseMaster :: String -> Query Bool -> X ()
ซึ่งรับอาร์กิวเมนต์สตริงของโปรแกรมให้ทำงานเช่น "firefox"; และแบบสอบถามบูลีนที่ใช้ในการค้นหาว่ามีการทำงานอยู่แล้วผ่านคุณสมบัติ X11 เช่น(className =? "Firefox")(ดูด้านบนของXMonad.Actions.WindowGoหน้าสำหรับตัวแปร)
ดังนั้นสิ่งที่คุณต้องมีคือผูกrunOrRaiseMaster "firefox" (className =? "Firefox")กุญแจที่คุณต้องการตามที่อธิบายไว้XMonad.Doc.Extendingผ่านทาง
((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))
เป็นส่วนหนึ่งของการเชื่อมโยงคีย์Data.Mapของการกำหนดค่าของคุณ (รายละเอียดแตกต่างกันไปตามวิธีการตั้งค่าของคุณxmonad.hsเช่นดูทั้งหมดของคุณดูการเพิ่มการผูกคีย์ )
โปรดทราบว่าไม่มีความรู้สึกที่แท้จริงในการเพิ่มหน้าต่างใน XMonad เมื่อคุณตั้งค่าตามที่อธิบายไว้คุณจะมีMod4+ fดำเนินการดังต่อไปนี้:
- หากมีหน้าต่างที่มีชื่อคลาสที่ตรงกับ "Firefox" หน้าต่างนั้นจะเน้นและตั้งค่าเป็นหลักเช่นขึ้นกับเลย์เอาต์ล่าสุดของคุณจะเป็นหน้าต่างใหญ่
- หากไม่ตรงกับหน้าต่าง Firefox จะกลับกลายและตั้งค่าเป็นหลัก
การเพิ่มสามารถเทิดทูนโดยการเลือกFullรูปแบบหลังจากที่โทรrunOrRaiseMaster, ตามที่อธิบายไว้ที่นี่ :
("M-<F1>", sendMessage $ JumpToLayout "Full")
(โปรดทราบว่าตัวอย่างนี้ยังแสดงXMonad.Util.EZConfigให้เห็นถึงการอนุญาตให้ใช้คำจำกัดความที่สำคัญผูกมัดได้ง่ายขึ้น)
การรวมสองสิ่งเข้าด้วยกันเป็นไปได้เช่นกัน ทั้งสองประเภทX ()คือพวกเขามีใน X Monad การใช้>>ซึ่งเป็นประเภท (ตรวจสอบด้วย:t (>>)ในghci)
(>>) :: Monad m => m a -> m b -> m b
เรามี(runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full")การรวมกันของX ()ประเภทสองประเภทX ()ด้วยและมันสามารถถูกผูกไว้กับกุญแจ
แก้ไขขาดหายไป)ในบรรทัดรหัสด้วย>>
Edit2 ->modmmodMask
Edit3 นี้xmonad.hsหวังว่าจะทำงาน
( ทำไมไม่เรียนคุณ Haskell เพื่อสิ่งที่ดี? )