aboutsummaryrefslogtreecommitdiffstats
path: root/xpybar/config
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--xpybar/config/myalsa.py18
-rw-r--r--xpybar/config/xmonad-monitor.gpp5
2 files changed, 20 insertions, 3 deletions
diff --git a/xpybar/config/myalsa.py b/xpybar/config/myalsa.py
index 552c459..ef246c0 100644
--- a/xpybar/config/myalsa.py
+++ b/xpybar/config/myalsa.py
@@ -4,6 +4,11 @@ import alsaaudio
from common import *
+class MixerAction:
+ def __init__(self, name, action):
+ self.name = name
+ self.action = action
+
class MyALSA(Entry):
def __init__(self, *args, timeout = None, sleep = None, cards = -1, mixers = None, colours = {}, prefix = '', **kwargs): ## TODO support multiple cards and all mixers
self.colours = colours if colours is not None else {}
@@ -28,6 +33,7 @@ class MyALSA(Entry):
else:
cards = cards
self.alsa = []
+ self.actions = []
names = {}
for index in alsaaudio.card_indexes():
for name in alsaaudio.card_name(index):
@@ -36,6 +42,11 @@ class MyALSA(Entry):
card = names.get(card, card)
for mixer in mixers: ## TODO support by name (and 'default')
try:
+ if isinstance(mixer, MixerAction):
+ self.actions.append(mixer.action)
+ mixer = mixer.name
+ else:
+ self.actions.append(None)
if isinstance(mixer, tuple) or isinstance(mixer, list):
self.alsa.append([ALSA(card, m) for m in mixer])
else:
@@ -112,7 +123,8 @@ class MyALSA(Entry):
channel = -1
break
col -= 1
-
+
+ action = self.actions[mixer]
mixer = self.alsa[mixer]
if isinstance(mixer, list):
if button == LEFT_BUTTON:
@@ -125,6 +137,10 @@ class MyALSA(Entry):
volume = mixer.get_volume()
volume = limited(sum(volume) / len(volume))
mixer.set_volume(volume, -1)
+ elif button == MIDDLE_BUTTON:
+ if action is not None:
+ print('middle click: ' + str(action is not None))
+ action()
elif button in (SCROLL_UP, SCROLL_DOWN):
volume = mixer.get_volume()
adj = -5 if button == SCROLL_DOWN else 5
diff --git a/xpybar/config/xmonad-monitor.gpp b/xpybar/config/xmonad-monitor.gpp
index 4e9d0c4..df42701 100644
--- a/xpybar/config/xmonad-monitor.gpp
+++ b/xpybar/config/xmonad-monitor.gpp
@@ -32,7 +32,7 @@ G.TERMINAL = 'xterm'
G.OUTPUT, G.HEIGHT_PER_LINE, G.YPOS, G.TOP = 0, 12, 0, True
G.FONT = '-misc-fixed-medium-r-normal-*-10-*-*-*-c-*-iso10646-1'
-from myalsa import MyALSA
+from myalsa import MyALSA, MixerAction
from mybacklight import MyBacklight
from mybattery import MyBattery
from mybrilliance import MyBrilliance
@@ -96,7 +96,8 @@ mixers1 = ['Master', 'PCM'] ## TODO
%%>if iswork; then
#mixers1.append(('Headphone', 'Speaker'))
if not isvm:
- mixers1.extend(('Headphone', 'Speaker'))
+ mixers1.append(MixerAction('Headphone', lambda : spawn_read('headphones')))
+ mixers1.append(MixerAction('Speaker', lambda : spawn_read('speakers')))
%%>fi
card2 = 'Yeti Stereo Microphone'
mixers2 = ['Speaker', 'Mic']