diff options
Diffstat (limited to '.i3/py3status/25-microphone.py')
-rw-r--r-- | .i3/py3status/25-microphone.py | 105 |
1 files changed, 0 insertions, 105 deletions
diff --git a/.i3/py3status/25-microphone.py b/.i3/py3status/25-microphone.py deleted file mode 100644 index 379a44c..0000000 --- a/.i3/py3status/25-microphone.py +++ /dev/null @@ -1,105 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# Weitian LI <liweitianux@gmail.com> -# 2014/05/15 - -""" -microphone module for py3status -""" - -## Get output of shell command: -## python 3.x: -## >>> subprocess.getoutput(cmd) -## >>> subprocess.getstatusoutput(cmd) -## python 2.7.x: -## >>> subprocess.Popen(cmd, shell=True, stderr=subprocess.PIPE) - -import os -import re -import subprocess - - -POSITION = 0 -DEVICE = 'default' -MIXER = 'Capture' # Microphone -# regex compile to match amixer output volume info -amixer_rep = re.compile(r'.*\[(\d+)%\]\s*\[(on|off)\]') - - -class Py3status: - """ - Microphone module to show microphone info. - - This module also handle click events: - left button: decrease volume - middle button: mute/unmute toggle - right button: increase volume - """ - - def microphone(self, i3status_output_json, i3status_config): - """ - Display microphone info. - """ - response = { - 'full_text': '', - 'name': 'microphone', - 'instance': 'first', - } - # update response fields - self._update_response(i3status_config) - response['full_text'] = self.full_text - if self.color: - response['color'] = self.color - return (POSITION, response) - - def on_click(self, i3status_output_json, i3status_config, event): - """ - Handle click events. - """ - if event['button'] == 1: - # left button click - cmd = 'amixer -D "{0}" sset "{1}" "5%-" unmute'.format(DEVICE, MIXER) - cmd_output = subprocess.getoutput(cmd) - elif event['button'] == 2: - # middle button click - cmd = 'amixer -D "{0}" sset "{1}" toggle'.format(DEVICE, MIXER) - cmd_output = subprocess.getoutput(cmd) - elif event['button'] == 3: - # right button click - cmd = 'amixer -D "{0}" sset "{1}" "5%+" unmute'.format(DEVICE, MIXER) - cmd_output = subprocess.getoutput(cmd) - # - self._update_response(i3status_config) - os.system('killall -USR1 py3status') - - def _update_response(self, i3status_config=None): - """ - update self.full_text - """ - # get volume info - cmd = 'amixer -D "{0}" sget "{1}" | tail -n 1'.format(DEVICE, MIXER) - cmd_output = subprocess.getoutput(cmd) - m = amixer_rep.match(cmd_output) - self.volume, self.status = m.group(1, 2) - prompt = '' # Icons: uF130 (mic-on) - if int(self.volume) > 60: - self.level = 'high' - if i3status_config: - self.color = i3status_config['color_degraded'] - elif int(self.volume) > 30: - self.level = 'medium' - if i3status_config: - self.color = i3status_config['color_good'] - else: - self.level = 'low' - if i3status_config: - self.color = i3status_config['color_good'] - # determine icon - if self.status == 'off': - prompt = '' # Icons: uF131 (mic-off) - if i3status_config: - self.color = i3status_config['color_bad'] - # determine display info - self.full_text = '{0} {1}%'.format(prompt, self.volume) - |