आप वॉल्यूम कुंजियों को कैसे बनाते हैं और Xmonad में महत्वपूर्ण कार्य म्यूट करते हैं


21

मैं Xmonad में नया हूँ (बस इसे कल स्थापित किया है), और चूंकि मैंने पहले कभी भी हैस्केल का उपयोग नहीं किया है, इसलिए मैंने कॉन्फ़िगरेशन को मेरे लिए थोड़ा भ्रमित किया। मुझे कुछ हद तक एक्समोबार और ट्रायर का काम मिल गया, लेकिन मुझे पता नहीं है कि वॉल्यूम को समायोजित करने के लिए मैं मल्टीमीडिया कुंजी कैसे बना सकता हूं। किसी को भी उस के साथ मदद कर सकते हैं?

अतिरिक्त प्रश्न: आप अपने वॉल्यूम को 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")
    ]

जवाबों:


23

'Xev' का उपयोग करें और उनके नाम खोजने के लिए मल्टीमीडिया कुंजियों पर टैप करें। एक '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")
    ]

'एमिक्सर' आपका वॉल्यूम सेट करेगा। Mod4Mask की जगह '0' आपको अपने मॉड की को पकड़े बिना मल्टीमीडिया कुंजी को टैप करने की अनुमति देता है।


यदि एमिक्सर सेट मास्टर 2- आपके सिस्टम के लिए काम नहीं करता है, एमिक्सर सेट मास्टर 2% की कोशिश करें -
zhenjie

1
जब मैं अपने एचपी लैपटॉप पर ज़ेव और प्रेस वॉल्यूम कुंजियों का उपयोग करता हूं तो मुझे कोई कीकोड नहीं मिलता है, लेकिन शोकी कमांड उन्हें कीकोड 114 और कीकोड 115 के रूप में दिखाती है। मुझे अपनी कुंजियों के साथ काम करने के लिए इस एक्समोनैड कॉन्फ़िगरेशन फ़ाइल को बदलने की आवश्यकता कैसे है?
वेलेंटाइन

उबंटू 13.04 पर यह कुंजी प्रतीकों को देखे बिना कॉपी / पेस्ट काम करता है।
कोरी क्लेन

2
यदि ऊपर का म्यूट अनम्यूट नहीं हो सकता है, तो amixer -D pulse set Master toggleइसके बजाय प्रयास करें ।
zw324

1
म्यूट कुंजी समस्या: जब मैं म्यूट कुंजी को प्रारंभ xevऔर दबाता हूं , तो टर्मिनल में खोजने के लिए कुछ भी नहीं है। (अन्य चाबियाँ ठीक हैं।) मैंने ऊपर से देखा /usr/include/X11/XF86keysym.h, मैंने यह पाया: #define XF86XK_AudioMute 0x1008FF12 /* Mute sound from the system */क्या आप जानते हैं कि मेरी म्यूट कुंजी के साथ समस्या क्या है? धन्यवाद।
निक

14

अपनी इच्छित कुंजी के लिए इस 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")
...]

मुझे इस कॉन्फ़िगरेशन के साथ एक त्रुटि मिलती है: "xmonad.hs: 29: 1: पार्स त्रुटि (संभवतः गलत इंडेंटेशन) कृपया त्रुटियों के लिए फ़ाइल की जांच करें।" वह रेखा जहाँ "[..." शुरू होती है ... क्या आप जानते हैं कि ऐसा क्यों होता है?
वेलेंटाइन

4
Graphics.X11.ExtraTypes.XF86 का उपयोग पठनीयता के लिए बेहतर समाधान है।
इरिक

@valentt डॉट्स के साथ लाइन सिर्फ एक उदाहरण है। यह उस तरह दिखना चाहिए, इसलिए तीन बिंदुओं के बजाय आपके पास अपनी पहली कुंजी परिभाषित है:[ ((modMask, xK_e ), spawn "dmenu_run")
erik

8

यदि आप 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सिंक आईडी है। pactl list short sinksसिंक सूची दिखाएंगे।

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

वर्तमान डिफ़ॉल्ट सिंक दिखाएगा। आप संख्यात्मक आईडी के बजाय सिंक नाम का उपयोग कर सकते हैं।

डौबल डैश --बताता है कि 'यह विकल्प नहीं है (जैसे -h), बस मान' pactl


1
अच्छा! हालांकि, --मेरे लिए 15.10 पर काम नहीं किया, बस इसे हटाकर यह चाल चली। इसके अलावा, एक विशेष नाम है @DEFAULT_SINK@, इसलिए आपको डिवाइस के विशिष्ट नंबरों / नामों के साथ फ़ाइड करने की आवश्यकता नहीं है।
१२:०४ पर आईजीईएल i

1
यह सही है, उपरोक्त आदेशों के 0साथ बदल रहा है @DEFAULT_SINK@! कम से कम अन्य DE से स्विच करने वालों के लिए - बहुत बहुत धन्यवाद!
जन डी

इस उत्तर में कैपिंग (जैसे एमिक्सर कैप) के बजाय 100% से अधिक जाने का लाभ है। बुरी बात यह है कि जब आप अलग-अलग सिंक से संगीत बजाते हैं तो यह काम करना बंद कर देता है।
स्टायरोफोम

3

अगर amixer set Master 2-काम नहीं करता है। amixer -D pulse set Master 2-इसके बजाय कोशिश करें । इसके अलावा 2%-और 2%+2 प्रतिशत है, जो उपयोग करने के लिए आसान हो सकता है की मात्रा बदल जाएगा। टर्मिनल में इन आदेशों को आप अपनी पसंद के हिसाब से समायोजित करने से पहले उन्हें xmonad config फाइल में डालकर परीक्षण कर सकते हैं।


... -D pulse ...मेरे लिए काम किया! इसके अलावा, एक -qझंडा आउटपुट का उत्पादन करता है
जोश.फैन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.