Добавлены переменные для настройки asound.conf через идентификаторы карт

develop 3.6.0.7
parent f39b0b2756
commit c621888a53

@ -95,6 +95,17 @@ class VariableOsAudioAvailable(Variable):
key=lambda x: x[1])
class VariableOsAudioCardMap(ReadonlyVariable):
"""
Соответствие номеров звуковых карт именам
"""
type = Variable.Types.Table
def get(self):
return [(cardid[17:-3], readFile(cardid).strip())
for cardid in glob.glob('/proc/asound/card[0-9]*/id')]
class VariableOsAudioData(ReadonlyTableVariable):
"""
Information about audio cards
@ -165,12 +176,46 @@ class VariableOsAudioDefaultSet(ReadonlyVariable):
return 'off'
class VariableOsAudioCurrent(ReadonlyVariable):
class VariableOsAudioCardDefault(Variable):
"""
Current default audio card
Идентификатор карты по умолчанию
"""
def get(self):
cardmap = dict(self.Get("os_audio_card_map"))
cardnum = self.Get('os_audio_default').split(',')[0]
if cardnum in cardmap:
return cardmap[cardnum]
return "0"
class VariableOsAudioDeviceDefault(Variable):
"""
Номер устройства по умолчанию
"""
def get(self):
return self.Get('os_audio_default').split(',')[1]
class VariableOsAudioCardNameDefault(Variable):
"""
Название карты используемое в настройках KDE
"""
def get(self):
try:
cardnum = int(self.Get('os_audio_default').split(',')[0])
audionames = self.Get('os_audio_name')
if cardnum < len(audionames):
return audionames[cardnum].split(',')[0]
except ValueError:
pass
return "0"
class VariableOsAudioHw(Variable):
"""
Current default audio card
"""
def get_deprecated(self):
asound_data = readFile('/etc/asound.conf')
default_card_re = re.compile('defaults.ctl.card\s+(\d+)')
entry = default_card_re.search(asound_data)
@ -183,11 +228,18 @@ class VariableOsAudioCurrent(ReadonlyVariable):
entry = "%s,%s" % entry.groups()
if entry in self.Get('os_audio_id'):
return entry
return ""
res = self.Select('os_audio_id', where='os_audio_name',
notlike='HDMI', limit=1)
return res or '0,0'
def get(self):
cardmap = dict(self.Get("os_audio_card_map"))
value = self.get_deprecated()
if not value:
value = self.Select('os_audio_id', where='os_audio_name',
notlike='HDMI', limit=1) or "0,0"
cardnum, devicenum = value.split(",")
if cardnum in cardmap:
return "{},{}".format(cardmap[cardnum], devicenum)
return ""
class VariableOsAudioDefault(Variable):
"""
@ -202,7 +254,13 @@ class VariableOsAudioDefault(Variable):
self.help = _("set the default audio")
def get(self):
return self.Get('os_audio_current')
current = self.Get('os_audio_hw')
if current and "," in current:
cardmap = {y:x for x, y in self.Get("os_audio_card_map")}
cardid, devicenum = current.split(",")
if cardid in cardmap:
return "{},{}".format(cardmap[cardid], devicenum)
return "0,0"
def choice(self):
data = self.Get('os_audio_data')

Loading…
Cancel
Save