Nhìn vào các gói đóng góp của XMonad , bạn sẽ thấy XMonad.Actions.WindowGo
, xuất khẩu chức năng sau :
runOrRaiseMaster :: String -> Query Bool -> X ()
trong đó có một đối số chuỗi của chương trình để chạy , ví dụ "firefox"; và một truy vấn boolean được sử dụng để tìm hiểu xem nó có đang chạy hay không , thông qua các thuộc tính X11, ví dụ (className =? "Firefox")
(xem đầu XMonad.Actions.WindowGo
trang để biết các biến thể).
Vì vậy, tất cả những gì bạn cần là liên kết runOrRaiseMaster "firefox" (className =? "Firefox")
với khóa bạn muốn, như được giải thích trongXMonad.Doc.Extending
, thông qua
((modMask, xK_f ), runOrRaiseMaster "firefox" (className =? "Firefox"))
như một phần của các ràng buộc chính Data.Map
trong cấu hình của bạn (chi tiết khác với cách cài đặt của bạn, nghĩa là toàn bộ phần của bạn xmonad.hs
, xem Thêm Keybindings ).
Lưu ý rằng không có ý nghĩa thực sự trong việc tối đa hóa một cửa sổ trong XMonad. Khi bạn thiết lập mọi thứ như được giải thích, bạn sẽ có Mod4+ fhành động như sau:
- nếu có một cửa sổ có tên lớp khớp với "Firefox", nó sẽ được tập trung và được đặt thành chủ , tức là tùy thuộc vào bố cục gần đây của bạn , sẽ là cửa sổ lớn
- nếu không có cửa sổ nào khớp, Firefox sẽ được sinh ra và được đặt thành chủ .
Tối đa hóa có thể được mô phỏng bằng cách chọn Full
bố cục sau khi gọi runOrRaiseMaster
, như được mô tả ở đây :
("M-<F1>", sendMessage $ JumpToLayout "Full")
(lưu ý rằng ví dụ này cũng cho thấy XMonad.Util.EZConfig
việc cho phép định nghĩa khóa phím dễ dàng hơn)
Kết hợp hai điều này là có thể, quá. Cả hai đều thuộc loại X ()
, tức là chúng ở trong X Monad . Sử dụng >>
, đó là các loại (kiểm tra với :t (>>)
trong ghci
)
(>>) :: Monad m => m a -> m b -> m b
chúng ta cũng có (runOrRaiseMaster "firefox" (className =? "Firefox")) >> (sendMessage $ JumpToLayout "Full")
sự kết hợp của hai X ()
loại loại X ()
và do đó nó có thể được liên kết với một khóa.
EDIT Thiếu )
trong dòng mã với>>
Chỉnh sửa2 modm
-> modMask
.
Edit3 Điều này xmonad.hs
hy vọng hoạt động.
( Tại sao không học cho bạn một Haskell cho những điều tốt đẹp? )