2013-07-03 28 views
5

Im chỉ mới bắt đầu haskell và xmonad. Tôi đã tự hỏi làm thế nào người ta sẽ cấu hình nó để nếu không có cửa sổ được mở, bất kỳ đầu vào quan trọng sẽ khởi động dmenu. Vì vậy, nếu tôi đã có một màn hình trống và bắt đầu gõ "firefox", dmenu sẽ khởi động với "firefox" của tôi ví dụ bên trong nó.Khởi chạy tự động Haskell dmenu trên phím bấm

Rất quan trọng nhưng sẽ rất tuyệt nếu tôi có thể nhận được một số gợi ý đúng hướng :)

+0

@closevoter xmonad là (bằng văn bản và) cấu hình trong Haskell chính hãng. Bạn theo nghĩa đen chương trình hệ thống cửa sổ. Bạn không thể cấu hình xmonad mà không cần viết haskell. Đó là lập trình. – AndrewC

Trả lời

2

Đó là một ý tưởng thú vị! Cho thời điểm này, hãy giả sử rằng bạn muốn ánh xạ chỉ là khóa 'f'. Cách tiếp cận đến với tâm trí của tôi là ánh xạ khóa tới một hàm kiểm tra xem có bất kỳ cửa sổ nào đang mở hay không. Nếu không có cửa sổ nào mở, nó sẽ khởi chạy dmenu, điền sẵn nó với ký tự bạn vừa nhập (tức là 'f'). Nếu có các cửa sổ khác mở, nó làm bất cứ điều gì bạn thường muốn phím đó để làm.

main = xmonad $ blah blah blah 
      `additionalKeys` 
       [ 
        ((0, xK_f), multiMapKey f someAction) 
        -- other mappings 
       ] 


multiMapKey :: Char -> X() -> X() 
multiMapKey c someAction = 
    if ?a window is open? 
    then launch dmenu with c already entered 
    else someAction 

Ghi chú:

  1. Tôi không biết làm thế nào để tìm hiểu xem một cửa sổ đã được mở, nhưng tôi nghi ngờ bạn sẽ tìm thấy một chức năng cho điều này trong các xmonad hoặc xmonad-contrib gói .
  2. Tôi không biết cách khởi chạy dmenu bằng ký tự đã được nhập. Có lẽ có gì đó trong XMonad.Util.Dmenu sẽ giúp bạn.
  3. Tôi nghĩ bạn sẽ phải có một mục nhập riêng biệt trong additionalKeys cho mỗi khóa bạn muốn ánh xạ. Có lẽ chỉ cần ánh xạ 26 phím chữ cái sẽ là đủ.

Đối tìm hiểu thêm về các bộ phận bên Xmonad, tôi khuyên bạn nên video jekor của: part 1part 2

Các vấn đề liên quan