LINUX.ORG.RU

[xmonad][haskell][экранирование] Иксмонад ругается на хелпер

 , ,


0

1

Не работает хелпер:

yeganesh: fd:4 commitBuffer: resource vanished (Broken pipe)

dmenuOptions = "-b -fn " ++ myFont
              ++ " -nf " ++ myFgColor
              ++ " -nb " ++ myBgColor
              ++ " -sf " ++ myFocusedFGColor
              ++ " -sb " ++ myFocusedBGColor
myDmenu = "exe=`yeganesh -x -- " ++ dmenuOptions ++ "` && eval \"exec $exe\""
, ((modm,               xK_p     ), spawn myDmenu)

Если меняю опции

dmenuOptions = "-b -fn " ++ myFont
              ++ " -nf " ++ myFgColor
              ++ " -nb " ++ myBgColor
              ++ " -sf " ++ myFocusedFGColor
              ++ " -sb " ++ myFocusedBGColor

на:

dmenuOptions = "-b -fn " ++ myFont

То работает, yeganesh запускает dmenu. Но почему yeganesh ломается с остальными переменными?

Вот они кстати:

myFgColor = "#e8e8e8"
myBgColor = "#393939"

myFocusedFGColor = "#54adeb"
myFocusedBGColor = "#393939"

myFont    = "-*-terminus-medium-*-*-*-18-*-*-*-*-*-iso10646-*"

upd: Я так подозреваю, что дело в решётках. Ибо так работает:

dmenuOptions = "-b -nf '" ++ myFgColor ++ "'"

Но так снова ругается (уже не компилируется):

dmenuOptions = "-b -fn '" ++ myFont
              ++ "' -nf '" ++ myFgColor
              ++ "' -nb '" ++ myBgColor
              ++ "' -sf '" ++ myFocusedFGColor
              ++ "' -sb '" ++ myFocusedBGColor "'"

Как правильно заэкранировать?



Последнее исправление: ksevelyar (всего исправлений: 1)

Дменю скармливается строка вида

"-b -fn -*-terminus-medium-*-*-*-18-*-*-*-*-*-iso10646-* -nf #e8e8e8 -nb #393939 -sf #54adeb -sb #393939"

Соответственно, всё что следует за первой # игнорируется. Таким образом, нужно скармливать

"-b -fn -*-terminus-medium-*-*-*-18-*-*-*-*-*-iso10646-* -nf '#e8e8e8' -nb '#393939' -sf '#54adeb' -sb '#393939"'

Что-то такое должно работать.


dmenuOptions = "-b -fn " ++ quotify myFont
              ++ " -nf " ++ quotify myFgColor
              ++ " -nb " ++ quotify myBgColor
              ++ " -sf " ++ quotify myFocusedFGColor
              ++ " -sb " ++ quotify myFocusedBGColor
    where quotify = (\x -> "'" ++ x ++ "'")
dmitry_malikov ★★
()
Ответ на: комментарий от dmitry_malikov

Ааааа. Теперь понял где облажался:

...
              ++ "' -sb '" ++ myFocusedBGColor "'"

А надо:

...
              ++ "' -sb '" ++ myFocusedBGColor ++ "'"

Спасибо, вопрос закрыт.

ksevelyar
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.