Ses tuşlarını ve sessiz tuşunu Xmonad'da nasıl çalışırsınız?


22

Xmonad'da yeniyim (dün yükledim) ve daha önce hiç karma kullanmadığım için konfigürasyonu biraz kafa karıştırıcı buldum. Biraz xmobar ve trayer çalışması yaptım ama ses seviyesini ayarlamak için çoklu ortam tuşlarını nasıl yapabilirim hakkında hiçbir fikrim yok. Herhangi biri bu konuda yardımcı olabilir mi?

Ek soru: Haciminizi xmonad'da nasıl yönetiyorsunuz? Tepsi simgesini veya benzeri şeyleri kullanıyor musunuz?

İşte xmonad yapılandırmam:

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

Yanıtlar:


24

Adlarını bulmak için 'xev' kullanın ve multimedya tuşlarına dokunun. Bunlardan biri 'XF86XK_AudioMute' olabilir. Sonra '/usr/include/X11/XF86keysym.h' içeriğine bakın ve adı arayın. Sistemimde 'XF86XK_AudioMute' '0x1008FF12'.

Config dosyasında bir anahtar koyacağınız yere bırakın. Bu gibi görünebilir:

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

-KESMEK-

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

'karıştırıcı' ses seviyenizi belirleyecektir. Mod4Mask'ın değiştirildiği '0' mod tuşunu tutmadan multimedya tuşuna dokunmanıza olanak tanır.


karıştırıcı Master 2- ayarlanmışsa, sisteminiz için çalışmıyorsa, karıştırıcı Master
ayarını yapın

1
Ben kullandığınızda xev benim HP dizüstü ve basın ses tuşlarını hiçbir keycodes olsun, ama showkey komuta anahtar kodu 114 ve tuş kodu 115. olarak göstermek nasıl tuşlarıyla çalışmalarına bu xmonad yapılandırma dosyası değiştirmek gerekir?
valentt

Ubuntu 13.04'te bu, tuş sembollerine bakmadan kopyala / yapıştır yapmayı başardı.
Cory Klein

2
Yukarıdaki susturma, sesini açamıyorsa, deneyin amixer -D pulse set Master toggle.
zw324

1
Sessiz anahtar sorunu: xevBaşlatıp sustur tuşuna bastığımda, terminalde bulunacak bir şey yok. (Diğer anahtarlar iyi.) Baktım /usr/include/X11/XF86keysym.h, şunu buldum: #define XF86XK_AudioMute 0x1008FF12 /* Mute sound from the system */Sessize alma anahtarımdaki sorunun ne olduğunu biliyor musunuz? Teşekkür ederim.
Nick,

14

İstediğiniz tuşlar için bu Graphics.X11.ExtraTypes.XF86 dosyasına bakın ve config dosyasına ekleyin:

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

Bu yapılandırmada bir hata alıyorum: "xmonad.hs: 29: 1: ayrıştırma hatası (muhtemelen yanlış girinti) Lütfen dosyayı hatalar için kontrol edin." Bu çizgi "[..." nin başladığı yer ... Bunun neden olduğunu biliyor musunuz?
valentt,

4
Graphics.X11.ExtraTypes.XF86 kullanmak, okunabilirlik için daha iyi bir çözümdür.
erik

@valentt Noktalı çizgi sadece bir örnektir. Öyle görünmesi gerekiyor, bu yüzden üç nokta yerine ilk anahtarınızı tanımladınız:[ ((modMask, xK_e ), spawn "dmenu_run")
erik

9

Pulseaudio kullanıyorsanız, pactlçalışması gerekir.

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

0Lavabo kimliği. pactl list short sinkslavabo listesini gösterecektir.

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

geçerli varsayılan lavaboyu gösterecektir. Sayısal kimlik yerine lavabo ismini kullanabilirsiniz.

Doulble dash --'bunun bir seçenek olmadığını (-h gibi, sadece' değer 'olduğunu söyler) pactl.


1
Güzel! Ancak, --15.10'da benim için işe yaramadı, sadece kaldırarak hile yaptı. Ayrıca, özel bir ad vardır @DEFAULT_SINK@, bu nedenle cihaza özel numaralar / adlarla uğraşmanıza gerek kalmaz.
iGEL

1
Bu yerine mükemmel 0olan @DEFAULT_SINK@yukarıdaki komutları! En azından diğer DE'lerden geçiş yapanlar için - size çok teşekkürler!
Jan D

Bu cevabın kapak yerine% 100'ü aşma avantajı vardır (bir karışım kapakları gibi). Kötü olan şey, müziği farklı lavaboya çalarken çalışmayı durdurması.
Strafor sinek

3

Eğer amixer set Master 2-çalışmaz. amixer -D pulse set Master 2-Bunun yerine deneyin . Ayrıca 2%-ve 2%+kullanımı kolay olabilir 2 oranında hacim değişecektir. Bu komutları, xmonad config dosyasına koymadan önce zevkinize göre ayarlamak için terminalde test edebilirsiniz.


... -D pulse ...benim için çalıştı! ayrıca, bir -qbayrak çıktıyı
söndürüyor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.