Недавно я попал в XMonad, и, к счастью, я совсем не знаю Haskell. Я пытаюсь настроить файл xmonad.hs таким образом, чтобы я мог управлять томом. Однако прямо сейчас, хотя мой файл xmonad.hs компилируется без ошибок, я не могу управлять томом.Конфигурация громкости XMonad не работает
Я получил код управления громкостью по этой ссылке: http://dmwit.com/volume/
Вот мой конфигурационный файл:
import XMonad
import XMonad.Util.Run(spawnPipe)
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Actions.Volume
import XMonad.Util.Dzen
import Data.Map (fromList)
import Data.Monoid (mappend)
import System.IO
alert = dzenConfig centered . show . round
centered =
onCurr (center 150 66)
>=> font "-*-helvetica-*-r-*-*-64-*-*-*-*-*-*-*"
>=> addArgs ["-fg", "#80c0ff"]
>=> addArgs ["-bg", "#000040"]
main = do
xmproc <- spawnPipe "xmobar /home/david/.xmobarrc"
xmonad $ defaultConfig
{
manageHook = manageDocks <+> manageHook defaultConfig
, layoutHook = avoidStruts $ layoutHook defaultConfig
, logHook = dynamicLogWithPP xmobarPP
{ ppOutput = hPutStrLn xmproc
, ppTitle = xmobarColor "green" "" . shorten 50
}
, modMask = mod4Mask
, keys =
keys defaultConfig `mappend`
\c -> fromList [
((0, xK_F6), lowerVolume 4 >>= alert),
((0, xK_F7), raiseVolume 4 >>= alert)
]
}
Я изменил мой код следующий, однако объем не изменился:
main = do
xmproc <- spawnPipe "xmobar /home/luren/.xmobarrc"
xmonad $ defaultConfig
{
manageHook = manageDocks <+> manageHook defaultConfig
, layoutHook = avoidStruts $ layoutHook defaultConfig
, logHook = dynamicLogWithPP xmobarPP
{ ppOutput = hPutStrLn xmproc
, ppTitle = xmobarColor "green" "" . shorten 50
}
, modMask = mod4Mask
, keys =
keys defaultConfig `mappend`
\c -> fromList [
((0, 0x1008FF11), spawn "amixer -D pulse sset Master 4-"),
((0, 0x1008FF13), spawn "amixer -D pulse sset Master 4+")
]
}
(END)
Эти ключи являются коды для громкоговорителей на моем ноутбуке.
Я просмотрел и увидел другие конфигурации. Я решил сделать небольшой тест и сделать аудио более низкий уровень громкости ключ Привет, ppl! при нажатии. К сожалению, это не работает.
main = do
xmproc <- spawnPipe "xmobar /home/luren/.xmobarrc"
xmonad $ defaultConfig
{
manageHook = manageDocks <+> manageHook defaultConfig
, layoutHook = avoidStruts $ layoutHook defaultConfig
, logHook = dynamicLogWithPP xmobarPP
{ ppOutput = hPutStrLn xmproc
, ppTitle = xmobarColor "green" "" . shorten 50
}
, modMask = mod4Mask
}
`additionalKeys`
[
((0, xF86XK_AudioLowerVolume), spawn "echo 'Hi ppl!'"),
((0, xF86XK_AudioRaiseVolume), spawn "amixer -D pulse sset Master 15%+")
]
Yikes, прошло уже с тех пор, как я написал эту страницу! Я бы не удивился, если с этого момента выход 'amixer' изменился несовместимым образом. (Я перешел из ALSA в импульс.) Но, чтобы проверить: если вы привязываете какой-то ключ к 'getVolume >> = alert', показывает ли он правильный ответ? Изменяет ли ваш объем тома в командной строке с помощью 'amixer'? Какой канал в 'alsamixer' (если есть) действительно правильно контролирует ваш том? –
О, ничего себе! Ты на самом деле написал эту страницу! Я связал ключ, как вы сказали, и, к сожалению, ничего не появляется. Прошу прощения, если для меня это новичок, но я не понимаю, что такое alsa или пульс. Я знаю, что если я использую следующую команду в терминале, amixer -D pulse sset Master 15%, я могу установить том. Что касается канала в alsamixer, я не уверен, что это значит. Я побежал alsamixer, который привел меня к трем s/pdif. Я думаю, что это означает цифровой интерфейс Sony/Philips. – mrQWERTY
А, к сожалению, этот модуль не поддерживает управление определенным устройством (и не имеет возможности вручную манипулировать командной строкой 'amixer'). У вас есть пара вариантов: скопируйте код из модуля и исправьте его (работа 10 секунд, но не пригодная для использования другими); patch 'xmonad-extras', чтобы добавить эту функциональность (немного больше работы, но я с радостью включу ваш патч, а другие смогут извлечь выгоду); используйте 'pacmd' вместо того, чтобы касаться' amixer' вообще (гораздо больше работы, если вы хотите отображать экран на экране после его изменения). О чем вы хотите больше узнать? –