ดูแพ็คเกจ 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 ->modm
modMask
Edit3 นี้xmonad.hs
หวังว่าจะทำงาน
( ทำไมไม่เรียนคุณ Haskell เพื่อสิ่งที่ดี? )