Patrząc na pakiety contrib XMonada , znajdziesz XMonad.Actions.WindowGo, który eksportuje następującą funkcję :
runOrRaiseMaster :: String -> Query Bool -> X ()
który pobiera argument ciągu programu do uruchomienia , np. „firefox”; oraz zapytanie boolowskie, które służy do sprawdzenia, czy jest już uruchomione , za pośrednictwem właściwości X11, np. (className =? "Firefox")(patrz warianty na górze XMonad.Actions.WindowGostrony ).
Wszystko, czego potrzebujesz, to powiązanie runOrRaiseMaster "firefox" (className =? "Firefox")z kluczem, który chcesz, jak wyjaśniono wXMonad.Doc.Extending , za pośrednictwem
((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))
jako część powiązań klawiszy Data.Mapw konfiguracji (szczegóły różnią się w zależności od sposobu konfiguracji, tj. całość xmonad.hs, patrz Dodawanie skrótów klawiszowych ).
Zauważ, że nie ma sensu maksymalizować okna w XMonad. Po skonfigurowaniu rzeczy zgodnie z objaśnieniem będziesz Mod4+ fdziałał w następujący sposób:
- jeśli jest okno z nazwą klasy pasującą do „Firefox”, zostanie ono skoncentrowane i ustawione jako master , tj., w zależności od twojego ostatniego układu , będzie dużym oknem
- jeśli okno nie pasuje, Firefox zostanie odrodzony i ustawiony na master .
Maksymalizację można emulować, wybierając Fullukład po wywołaniu runOrRaiseMaster, jak opisano tutaj :
("M-<F1>", sendMessage $ JumpToLayout "Full")
(zwróć uwagę, że w tym przykładzie pokazano również XMonad.Util.EZConfigłatwiejsze definicje skrótów klawiszowych)
Możliwe jest także połączenie tych dwóch rzeczy. Oba są typu X (), tj. Są w X Monadzie . Korzystanie >>, który jest typu (sprawdź :t (>>)w ghci)
(>>) :: Monad m => m a -> m b -> m b
mamy (runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full")też kombinację dwóch X ()typów typów X (), dzięki czemu można go przypisać do klucza.
EDYCJA Brakuje )w wierszu kodu za pomocą>>
Edycja2 modm -> modMask.
Edit3 To xmonad.hsmiejmy nadzieję działa.
( Dlaczego nie nauczyć się Haskella dla wielkiego dobra? )