web-dev-qa-db-ja.com

Xmonadでボリュームキーとミュートキーを機能させる方法

私はXmonadを使い始めたばかりで(昨日インストールしたばかりです)、以前にhaskellを使用したことがないため、構成が少しわかりにくいことに気づきました。 xmobarとトレーラーをいくらか作成しましたが、マルチメディアキーを作成して音量を調整する方法を知りません。誰かがそれを手伝ってくれる?

追加の質問:xmonadでボリュームをどのように管理しますか。トレイアイコンなどを使っていますか?

これが私のxmonad設定です:

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.EZConfig(additionalKeys)
import System.IO

main = xmonad =<< statusBar myBar myPP toggleStrutKey myConfig

-- Command to launch the bar
myBar = "xmobar"

-- Custom PP, it determines what is written to the bar
myPP = xmobarPP { ppCurrent = xmobarColor "#429942" "" . wrap "<" ">" }

-- Key bindings to toggle the gap for the bar
toggleStrutKey XConfig {XMonad.modMask = modMask} = (modMask, xK_b)

myConfig = defaultConfig {
    manageHook = manageDocks <+> manageHook defaultConfig,
    layoutHook = avoidStruts $ layoutHook defaultConfig,
    modMask = mod4Mask -- Rebind Mod to windows key
    } `additionalKeys`
    [ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock")
    ]
22
yasar

「xev」を使用してマルチメディアキーをタップし、名前を見つけます。 1つは「XF86XK_AudioMute」かもしれません。次に、「/ usr/include/X11/XF86keysym.h」の内容を見て、名前を探します。私のシステムでは、「XF86XK_AudioMute」は「0x1008FF12」です。

設定ファイルのキーを置く場所にドロップします。次のようになります。

import XMonad
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.ManageDocks
import XMonad.Util.EZConfig(additionalKeys)
import System.IO

-切る-

 } `additionalKeys`
    [ ((mod4Mask .|. shiftMask, xK_z), spawn "xscreensaver-command -lock"),
      ((0                     , 0x1008FF11), spawn "amixer -q sset Master 2%-"),
      ((0                     , 0x1008FF13), spawn "amixer -q sset Master 2%+"),
      ((0                     , 0x1008FF12), spawn "amixer set Master toggle")
    ]

'amixer'はボリュームを設定します。 mod4Maskの代わりに「0」を使用すると、modキーを押さなくてもマルチメディアキーをタップできます。

24
Wallace Gean

必要なキーについては Graphics.X11.ExtraTypes.XF86 を参照し、構成ファイルに追加してください:

import Graphics.X11.ExtraTypes.XF86
myKeys conf@(XConfig {XMonad.modMask = modm}) = M.fromList $
[ ...
, ((0, xF86XK_AudioLowerVolume   ), spawn "amixer set Master 2-")
, ((0, xF86XK_AudioRaiseVolume   ), spawn "amixer set Master 2+")
, ((0, xF86XK_AudioMute          ), spawn "amixer set Master toggle")
...]
14
Richard Huang

Pulseaudioを使用している場合は、pactlも機能するはずです。

, ((0 , xF86XK_AudioRaiseVolume), spawn "pactl set-sink-volume 0 +1.5%")
, ((0 , xF86XK_AudioLowerVolume), spawn "pactl set-sink-volume 0 -- -1.5%")
, ((0 , xF86XK_AudioMute), spawn "pactl set-sink-mute 0 toggle")
]

0はシンクIDです。 pactl list short sinksはシンクリストを表示します。

pactl stat|grep 'Default Sink' | cut -f2 -d':'

現在のデフォルトシンクが表示されます。数値IDの代わりにシンク名を使用できます。

ドルブルダッシュ--は、「-hのようにこれはオプションではなく、単なる値」であることをpactlに伝えます。

9
Mait

amixer set Master 2-が機能しない場合。代わりにamixer -D Pulse set Master 2-をお試しください。また、2%-2%+を使用すると、音量が2%変更され、使いやすくなる場合があります。これらのコマンドをターミナルでテストして、xmonad構成ファイルに配置する前に、好みに合わせて調整できます。

3
Justin Raymond