Làm cách nào để bạn tạo phím âm lượng và phím tắt tiếng hoạt động trong Xmonad


22

Tôi mới sử dụng Xmonad (mới cài đặt nó ngày hôm qua) và vì tôi chưa bao giờ sử dụng haskell trước đây, tôi thấy cấu hình hơi khó hiểu đối với tôi. Tôi đã phần nào làm cho xmobar và trayer hoạt động, nhưng tôi không biết làm thế nào tôi có thể tạo các phím đa phương tiện để điều chỉnh âm lượng. có ai giúp được không?

Câu hỏi bổ sung: Làm thế nào để bạn quản lý âm lượng của mình trong xmonad. Bạn có sử dụng biểu tượng khay, hoặc những thứ khác như thế không?

Đây là cấu hình xmonad của tôi:

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")
    ]

Câu trả lời:


24

Sử dụng 'xev' và nhấn các phím đa phương tiện để khám phá tên của họ. Một người có thể là 'XF86XK_AudioMute'. Sau đó nhìn vào nội dung của '/usr/include/X11/XF86keysym.h' và tìm tên. Trên hệ thống của tôi, 'XF86XK_AudioMute' là '0x1008FF12'.

Thả nơi mà bạn sẽ đặt một khóa trong tập tin cấu hình của bạn. Nó có thể trông như thế này:

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

-CẮT TỈA-

 } `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' sẽ đặt âm lượng của bạn. Mod4Mask thay thế '0' cho phép bạn nhấn phím đa phương tiện mà không cần giữ phím mod.


nếu bộ trộn được đặt Master 2- không hoạt động cho hệ thống của bạn, hãy thử bộ trộn để đặt Master 2% -
zhenjie

1
Khi tôi sử dụng xev và nhấn phím âm lượng trên máy tính xách tay HP của tôi, tôi không nhận được mã phím, nhưng lệnh showkey hiển thị chúng dưới dạng mã khóa 114 và mã khóa 115. Làm cách nào để thay đổi tệp cấu hình XMonad này để hoạt động với các phím của tôi?
valentt

Trên Ubuntu 13.04, bản sao / dán này hoạt động mà không cần tra các ký hiệu phím.
Cory Klein

2
Nếu tắt tiếng ở trên không thể bật tiếng, amixer -D pulse set Master togglethay vào đó hãy thử .
zw324

1
Vấn đề về phím xevtắt tiếng : Khi tôi khởi động và nhấn phím tắt tiếng, không có gì để tìm trong thiết bị đầu cuối. (Các phím khác đều ổn.) Tôi nhìn lên /usr/include/X11/XF86keysym.h, tôi thấy điều này: #define XF86XK_AudioMute 0x1008FF12 /* Mute sound from the system */Bạn có biết vấn đề gì với phím tắt tiếng của tôi không? Cảm ơn bạn.
Nick

14

Xem Graphics.X11.ExtraTypes.XF86 này để biết các khóa bạn muốn và thêm vào tệp cấu hình của bạn:

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")
...]

Tôi gặp lỗi với cấu hình này: "xmonad.hs: 29: 1: lỗi phân tích cú pháp (có thể thụt lề không chính xác) Vui lòng kiểm tra tệp để tìm lỗi." Dòng đó là nơi "[..." bắt đầu ... Bạn có biết tại sao điều này xảy ra không?
valentt

4
Để sử dụng Graphics.X11.ExtraTypes.XF86 là giải pháp tốt hơn cho khả năng đọc.
erik

@valentt Dòng có dấu chấm chỉ là một ví dụ. Nó sẽ trông giống như vậy, vì vậy thay vì ba dấu chấm, bạn có khóa đầu tiên được xác định:[ ((modMask, xK_e ), spawn "dmenu_run")
erik

9

Nếu bạn đang sử dụng pulseaudio, pactlcũng nên hoạt động.

, ((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")
]

0là id chìm. pactl list short sinkssẽ hiển thị danh sách chìm.

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

sẽ hiển thị chìm mặc định hiện tại. Bạn có thể sử dụng tên chìm thay vì id số.

Dấu gạch ngang --cho biết 'đây không phải là tùy chọn (như -h), chỉ là giá trị' thành pactl.


1
Tốt đẹp! Tuy nhiên, việc --này không hiệu quả với tôi vào ngày 15.10, chỉ cần gỡ bỏ nó đã làm được điều đó. Ngoài ra, có một tên đặc biệt @DEFAULT_SINK@, vì vậy bạn không cần phải loay hoay với số / tên cụ thể của thiết bị.
iGEL

1
Điều này là hoàn hảo, thay thế 0bằng @DEFAULT_SINK@trong các lệnh trên! Ít nhất là đối với những người chuyển đổi từ các DE khác - cảm ơn bạn rất nhiều!
tháng 1

Câu trả lời này có lợi ích là vượt quá 100% thay vì giới hạn (như mũ amixer). Điều tệ hại là nó ngừng hoạt động khi bạn phát nhạc từ các bồn khác nhau.
xốp bay

3

Nếu amixer set Master 2-không hoạt động. Hãy thử amixer -D pulse set Master 2-thay thế. Ngoài ra 2%-2%+sẽ thay đổi âm lượng 2 phần trăm, có thể dễ sử dụng hơn. Bạn có thể kiểm tra các lệnh này trong thiết bị đầu cuối để điều chỉnh chúng theo ý thích trước khi bạn đặt chúng vào tệp cấu hình xmonad.


... -D pulse ...đã làm cho tôi! Ngoài ra, một -qlá cờ làm giảm sản lượng
Josh.F
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.