| grayich |
|
|
Темы:
216
Сообщения:
1984
Участник с: 08 января 2009
|
openbox,lxde уровень громкости меняется медиакнопками через amixer какие программы существуют для отображения уровня громкости в стиле OSD ? |
| yizoid |
|
|
Темы:
0
Сообщения:
61
Участник с: 29 декабря 2011
|
volti Там в настройках есть галка показывать всплывающие уведомления. |
| grayich |
|
|
Темы:
216
Сообщения:
1984
Участник с: 08 января 2009
|
volti это полный волум контрол, меня же интересует только индикация к тому-же он много ресурсов потребляет.. питон же |
| vs220 |
|
|
Темы:
22
Сообщения:
8070
Участник с: 16 августа 2009
|
Можно использовать xfce4-volumed плюс какой нибудь osd Или использовать скрипты плюс osd, например скрипт на клавишу звук + #!/bin/bash
#прибавляем громкость
amixer -q set Master 10+ unmute
#прибиваем предыдущее OSD, измените на свое
killall /usr/lib/notify-osd-customizable/notify-osd
#Далее идет скрипт индикации состояния звука, взятый где то на просторах сети
#DESKTOP=:0 # need for notifications run 'over' display
mixer_state=$(amixer get Master | awk '$1=="Mono:" {print $6}')
x=$(amixer get Master | sed -rn "/[^[]+\[/{s///;s/%.+//p;q}")
z=$[x/10]; y='◼◼◼◼◼◼◼◼◼◼'
zz=$[10-z];yy='◻◻◻◻◻◻◻◻◻◻'
# get current screen resoultion
curres=$(xdpyinfo | grep dimensions | awk '{print $2}')
# calculate current max x
curmx=$(echo $curres | sed 's/x.*$//')
# calculate current max y
curmy=$(echo $curres | sed 's/^.*x//')
poffset=0
notify_title="Volume"
case $x in
0*|?|1?) notify_icon="notification-audio-volume-off";;
2?|3?|4?) notify_icon="notification-audio-volume-low";;
5?|6?|7?) notify_icon="notification-audio-volume-medium";;
8?|9?|100) notify_icon="notification-audio-volume-high";;
esac
if [ $mixer_state == "[off]" ];then
notify_icon="notification-audio-volume-muted"
notify_title="$notify_title muted"
fi
notify-send -i $notify_icon -t 1500 -u low -h int:x:$[$curmx-$poffset] -h \
int:y:$[$curmy-$poffset] "$notify_title" "${y::z}${yy::zz} $x%" |
| grayich |
|
|
Темы:
216
Сообщения:
1984
Участник с: 08 января 2009
|
notify-osd получается, он разве не должен демоном работать? |
| vs220 |
|
|
Темы:
22
Сообщения:
8070
Участник с: 16 августа 2009
|
grayichработает демоном, но если не прибить то новое окно появляется только когда отработает предыдущее. Как изменять вывод в открытом уведомлении notify я к сожалению не знаю |
| Koluchka |
|
Темы:
2
Сообщения:
151
Участник с: 15 октября 2011
|
Я пользуюсь таким вот скриптом, стыренным где-то на просторах сети, для amixer и notify-osd:#!/bin/sh
# created by abarilla
usage="usage: $0 -c {up|down|mute} [-i increment] [-m mixer]"
command=
increment=5%
mixer=Master
while getopts i:m:h o
do case "$o" in
i) increment=$OPTARG;;
m) mixer=$OPTARG;;
h) echo "$usage"; exit 0;;
?) echo "$usage"; exit 0;;
esac
done
shift $(($OPTIND - 1))
command=$1
if [ "$command" = "" ]; then
echo "usage: $0 {up|down|mute} [increment]"
exit 0;
fi
display_volume=0
if [ "$command" = "up" ]; then
display_volume=$(amixer set $mixer $increment+ unmute | grep -m 1 "%]" | cut -d "[" -f2|cut -d "%" -f1)
fi
if [ "$command" = "down" ]; then
display_volume=$(amixer set $mixer $increment- unmute | grep -m 1 "%]" | cut -d "[" -f2|cut -d "%" -f1)
fi
icon_name=""
if [ "$command" = "mute" ]; then
if amixer get Master | grep "\[on\]"; then
display_volume=0
icon_name="notification-audio-volume-muted"
amixer set $mixer mute
else
display_volume=$(amixer set $mixer unmute | grep -m 1 "%]" | cut -d "[" -f2|cut -d "%" -f1)
fi
fi
if [ "$icon_name" = "" ]; then
if [ "$display_volume" = "0" ]; then
icon_name="notification-audio-volume-off"
else
if [ "$display_volume" -lt "33" ]; then
icon_name="notification-audio-volume-low"
else
if [ "$display_volume" -lt "67" ]; then
icon_name="notification-audio-volume-medium"
else
icon_name="notification-audio-volume-high"
fi
fi
fi
fi
notify-send " " -i $icon_name -h int:value:$display_volume -h string:synchronous:volume И в опенбоксовом rc.xml вызывается вот так: <keybind key="XF86AudioLowerVolume">
<action name="Execute">
<execute>sh /home/Колючка/scripts/vol.sh down</execute>
</action>
</keybind>
<keybind key="XF86AudioRaiseVolume">
<action name="Execute">
<execute>sh /home/Колючка/scripts/vol.sh up</execute>
</action>
</keybind>
<keybind key="XF86AudioMute">
<action name="Execute">
<execute>sh /home/Колючка/scripts/vol.sh mute</execute>
</action>
</keybind>Выглядит как-то так:
|
| VlaoMao |
|
|
Темы:
15
Сообщения:
306
Участник с: 23 января 2011
|
Ещё есть патченый notify-osd, там окна параллельно отображаются |
| vs220 |
|
|
Темы:
22
Сообщения:
8070
Участник с: 16 августа 2009
|
Колючка О то что надо, спасибо. |
| grayich |
|
|
Темы:
216
Сообщения:
1984
Участник с: 08 января 2009
|
хотелось бы обойтись без демона, но похоже не выйдет.. придётся ставить notify-osd себе я тут накалякал скрипт, посмотрев некоторые скрипты в инете, вывод через утилиту aosd_cat #!/bin/bash
retype ()
{
CNT=$1
S=$2
until [ "$CNT" -eq 0 ]
do
let "CNT=$CNT-1"
OSD="${OSD}${S}"
done
}
case $1 in
up) PLAYBACK=$(amixer sset Master 1%+ | grep Left: | awk '{print $4}') ;;
down) PLAYBACK=$(amixer sset Master 1%- | grep Left: | awk '{print $4}') ;;
*) echo "Usage: $0 { volup | voldown}" ;;
esac
LIMIT=31
let "SPACE=$LIMIT-$PLAYBACK"
OSD="["
#■♪♫
retype $PLAYBACK "■"
retype $SPACE " "
OSD="${OSD}]"
killall aosd_cat > /dev/null 2>&1
echo "$OSD" | aosd_cat -p 7 -y -180 -x -50 -e 15 -n "Monospace Bold 24" -R green -S black -f 0 /dev/null 2>&1&
exit 0цикл наверно можно заменить на форматированный вывод printf или awk, но не знаю как. у скрипта есть 1 приличный недостаток, если зажать кнопку, то срипты-процессы плодятся как блохи и не успевают киляться, может кто подскажет как это победить? впрочем даже через notify-osd при зажатии клавиши тормозит :/ |