A grandi linee potete alzare e abbassare il livello del volume e gestire in maniera precisa il mute e modificare il volume mentre il tutto e' muto, solitamente e' prerogativa di qualche mixer grafico e non di un uso tramite shortcut da tastiera.
Inoltre il livello e lo stato del volume vengono visualizzati a schermo quando vengono modificati.
Vi consiglio di mappare con xbindkeys o qualcosa del genere le combinazioni di tasti che servono per modificare lo stato del volume
Questo per me in .xbindkeysrc:
Code: Select all
#Vol +
"~/osdvol.py +"
m:0x0 + c:176
#Vol -
"~/osdvol.py -"
m:0x0 + c:174
#Muto
"~/osdvol.py mute"
m:0x0 + c:160
http://www.sideralis.net/blackman/osdvol.py
Code: Select all
#!/usr/bin/env python
"""
osdvol.py permette tramite l'ausilio di setmixer
http://packages.debian.org/testing/sound/setmixer.html
il controllo del volume sonoro.
osdvol.py e' ideato per lavorare preferibilmente coi tasti
funzione adeguati sulle tastiere multimediali e portatili.
osdvol.py supporta:
- creazione automatica del file di configurazione ~/.setmixer
- aumento,diminuzione e mute/unmute del volume
- mantenimento delle impostazioni del volume passando dallo stato di
mute a quello di unmute e viceversa
- possibilita' di variare il volume nello stato di mute per riottenerlo
modificato tornando unmute
- stampa a schermo dello stato sonoro tramite xosd http://www.ignavus.net
Questo programma e' liberamente modificabile.
Sideralis Programs
Federico e Riccardo Galli
http://www.sideralis.net
"""
import os,sys
PATH=os.sep.join((os.getenv('HOME'),'.setmixer'))
""" XOSDOPT sono le opzioni che vengono passata e osd_cat """
XOSDOPT='--font="-adobe-helvetica-bold-*-*-*-34-*-*-*-*-*-*-*" --shadow=2 --pos=top --align=right --colour=green --delay=1'
show_vol='|'.join((
r'''echo `setmixer -V vol +0''',
r'''awk '/vol/{split ($3,a,",");print a[1];}'` "% Volume"''',
r'''osd_cat ''' + XOSDOPT
))
if not os.path.exists(PATH):
fp=file(PATH,'w')
fp.write('0\n70\n')
fp.close()
def ismute():
fp=file(PATH,'r')
val=int(fp.read(1))
fp.close()
return val
def vol_modify(flag):
"""
modifica il volume in base a flag
flag false: lo aumenta
flag true: lo diminuisce
"""
vol=None
op= flag and '-' or '+'
if ismute():
fp=file(PATH,'r+')
fp.readline()
value=int(fp.readline())
value=eval("value %s 3" % op)
if value>100: value=100
elif value<0: value=0
fp.seek(0)
fp.write('1\n%d\n' % value)
fp.close()
vol=value
else:
os.system('setmixer vol %s3' % op)
return vol
if len(sys.argv)!=2: print 'You must pass ONE argument'; sys.exit(1)
if sys.argv[1] not in ('+','-','mute'):
print 'Argument "%s" not supported' % sys.argv[1]; sys.exit(1)
if sys.argv[1] in ('+','-'):
vol=vol_modify(sys.argv[1]=='-' and True or False)
if not vol: os.system(show_vol)
else: os.system(r'echo "MUTE %d%% Volume" | osd_cat %s' % (vol,XOSDOPT))
elif sys.argv[1]=='mute':
fp=file(PATH,"r+")
flag=int(fp.readline())
if flag:
value=int(fp.readline())
fp.seek(0)
fp.write('0')
os.system('setmixer vol %d' % value)
os.system('echo "Mute OFF"| osd_cat %s' % XOSDOPT)
else:
out=os.popen('setmixer -V vol +0')
value=int(out.readline().split(' - ')[1].split(',')[0])
out.close()
fp.seek(0)
fp.write('1\n%d\n' % value)
os.system("setmixer vol mute")
os.system('echo "Mute ON"| osd_cat %s' % XOSDOPT)
fp.close()
Spero che a qualcuno faciliti la vita...
Fede




