2013-07-03 8 views
5

Im tylko tylko początek haskell i Xmonad. Zastanawiam się, jak można to skonfigurować tak, że jeśli żadne okna nie były otwarte, każde wejście klucza uruchomi dmenu. Powiedzmy, że gdybym miał pusty ekran i zaczął pisać "firefox", uruchomiłbym dmenu z moim "firefox", na przykład wewnątrz niego.Automatyczne uruchomienie Haskell dmenu na klawiaturze

Mało ważne, ale byłoby miło, gdybym mógł dostać jakieś wskazówki w dobrym kierunku :)

+0

@closevoter xmonad jest (pisemne i) skonfigurowany w prawdziwej Haskell. Dosłownie programujesz system okien. Nie można skonfigurować xmonad bez pisania haskell. To programowanie. – AndrewC

Odpowiedz

2

To ciekawy pomysł! Na razie załóżmy, że chcesz zamapować tylko klawisz "f". Podejście, które przychodzi mi do głowy, polega na odwzorowaniu klucza na funkcję, która sprawdza, czy są otwarte jakieś okna. Jeśli nie ma otwartych okien, uruchamia dmenu, wstępnie wypełniając je wpisanym znakiem (np. "F"). Jeśli są otwarte inne okna, robi to, co normalnie chcesz zrobić.

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 

Uwagi:

  1. nie wiem w jaki sposób dowiedzieć się, czy okno jest już otwarty, ale podejrzewam, znajdziesz funkcję tę w pakiecie xmonad lub xmonad-contrib .
  2. Nie wiem, jak uruchomić dmenu z już wpisaną postacią. Może jest coś w XMonad.Util.Dmenu, które pomoże.
  3. Myślę, że musisz mieć oddzielny wpis w additionalKeys dla każdego klawisza, który chcesz zmapować. Być może wystarczy mapowanie 26 kluczy alfabetycznych.

Aby dowiedzieć się więcej o wnętrzności xmonad, polecam filmy jekor za: part 1part 2

Powiązane problemy