LINUX.ORG.RU

Уровень громкости

 ,


0

1

Пытаюсь пересесть на xmonad+dzen. Конфиг был благополучно сплагиачен. Пару вещей мне в нем удалось поднапилить. Но вот с уровнем громкости я застрял. Я вижу два варианта. Можно ли считать текущий уровень громкости из какого-либо системного файла, где-нибудь в sys или proc. Если такая возможность есть, я справлюсь. Но если же нет, есть консольная команда

amixer get Master | grep % | sed 's/^.*\[\([0-9]\?[0-9]\?[0-9]%\)\].*$/\1/'
Как вывод этой команды нарисовать в dzen?

★★★

Последнее исправление: LIKAN (всего исправлений: 1)

какой суровый ВМ. Даже звук в нём нельзя настраивать независимо.

darkenshvein ★★★★★
()
Ответ на: комментарий от Extraterrestrial

Это ведь шутка, правда?

LIKAN ★★★
() автор топика

к слову, какие есть альтернативы volumeicon кроме kmix? оно с недавних пор рип, а кеды вообще отдельно…

wakuwaku ★★★★
()

У меня в скрипте запуска dzen есть такая строчка:

~/.dzen/status_bars/dzen_audio.sh      | dzen2  -y 0 -x 600 -w 870  -ta r $dzen_style &

В самом файле такой конфиг. Из него, думаю, поймёшь что тебе нужно. Могу дать полный конфиг с mpd и прочими сущностями, но

1)Он также позаимствован у одного разработчика.

2)В итоге я отказался от dzen-а, ибо дефолтная панель осома привычней, а кастомизировать её можно точно также, как и dzen.

Надеюсь, помог.

Lilly
()
Ответ на: комментарий от wakuwaku
dron@gnu:~$ apt-get source volumeicon
Чтение списков пакетов… Готово
Построение дерева зависимостей       
Чтение информации о состоянии… Готово
ВНИМАНИЕ: упаковка «volumeicon» поддерживается в системе контроля версий «Git»:
git://git.debian.org/collab-maint/volumeicon.git
Необходимо получить 143 kб архивов исходного кода.
Получено:1 http://ftp.debian.org/debian/ testing/main volumeicon 0.4.6-2 (dsc) [2 004 B]
Получено:2 http://ftp.debian.org/debian/ testing/main volumeicon 0.4.6-2 (tar) [137 kB]
Получено:3 http://ftp.debian.org/debian/ testing/main volumeicon 0.4.6-2 (diff) [4 202 B]                                                        
Получено 143 kБ за 9с (15,9 kБ/c)                                                                                                                
dpkg-source: инфо: извлечение volumeicon в volumeicon-0.4.6
dpkg-source: инфо: распаковывается volumeicon_0.4.6.orig.tar.gz
dpkg-source: инфо: распаковывается volumeicon_0.4.6-2.debian.tar.gz
dpkg-source: инфо: накладывается 001_remove-individual-glib-headers.diff
dron@gnu:~$ cd volumeicon-0.4.6/
dron@gnu:~/volumeicon-0.4.6$ ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables... 
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking for style of include used by make... GNU
checking dependency style of gcc... gcc3
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking for stdlib.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for stdlib.h... (cached) yes
checking for GNU libc compatible malloc... yes
checking for pid_t... yes
checking return type of signal handlers... void
checking vfork.h usability... no
checking vfork.h presence... no
checking for vfork.h... no
checking for fork... yes
checking for vfork... yes
checking for working fork... yes
checking for working vfork... (cached) yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for GTK... yes
checking for X11... yes
checking for ALSA... yes
configure: creating ./config.status
config.status: creating Makefile
config.status: creating src/Makefile
config.status: creating data/Makefile
config.status: executing depfiles commands
dron@gnu:~/volumeicon-0.4.6$
dron@gnu:~/volumeicon-0.4.6$
dron@gnu:~/volumeicon-0.4.6$ cat Makefile | grep GTK
GTK_CFLAGS = -pthread -I/usr/include/gtk-2.0 -I/usr/lib/x86_64-linux-gnu/gtk-2.0/include -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/pango-1.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/freetype2 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/libpng12 -I/usr/include/libdrm -I/usr/include/harfbuzz  
GTK_LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lgio-2.0 -lpangoft2-1.0 -lpangocairo-1.0 -lgdk_pixbuf-2.0 -lcairo -lpango-1.0 -lfontconfig -lgobject-2.0 -lglib-2.0 -lfreetype 
Dron ★★★★★
()
Последнее исправление: Dron (всего исправлений: 3)
Ответ на: комментарий от Lilly

Я прошу прощения, но у меня НЕТ скрипта запуска dzen. У меня есть вот-такой вот фалик - xmonad.hs, с вот таким вот содержимым : http://pastebin.com/tASwQ8Qa Судя по тому, что я в нем вижу, управление этим самым dzen осуществляется из него. Так как с данным вм я связался именно из-за хаскела, то мне естественно хочеться в первую очередь сделать это средствами этого самого хаскела.

LIKAN ★★★
() автор топика
Ответ на: комментарий от LIKAN

volumeicon для трея тебе надо типа вот такого


#!/bin/bash
# little dzen-thingy to control your volume
# you need amixer (or aumix) and gdbar
# (c) 2007 Tom Rauchenwald and Jochen Schweizer
 
BG='#000'     # dzen backgrounad
FG='#888'     # dzen foreground
W=150         # width of the dzen bar
GW=50         #  width of the volume gauge
GFG='#a8a3f5' # color of the gauge
GH=7          # height of the gauge
GBG='#333'    # color of gauge background
X=480         # x position
#Y=786         # y position
# Caption of the gauge
# in this case it displays the volume icon shipped with dzen
CAPTION="^i(/home/f/code/scripts/dzen/dzen_bitmaps/volume.xbm) "
# Font to use
FN='-xos4-terminus-*-*-*-*-12-*-*-*-*-*-*-*'
 
# command to increase the volume
CI="amixer -c0 sset PCM 5dB+ >/dev/null"
#CI="aumix -v +5"
# command to decrease the volume
CD="amixer -c0 sset PCM 5dB- >/dev/null"
#CD="aumix -v -5
 
# command to pipe into gdbar to display the gauge
# should print out 2 space-seperated values, the first is the current
# volume, the second the maximum volume
MAX=`amixer -c0 get PCM | awk '/^  Limits/ { print $5 }'`
#MAX=100
CV="amixer -c0 get PCM | awk '/^  Front Left/ { print \$4 \" \" $MAX }'"
#CV="aumix -q | line | cut -d \" \" -f 3"
 
while true; do
    echo -n $CAPTION
    eval "$CV" | gdbar -h $GH -w $GW -fg $GFG -bg $GBG
    sleep 1;
done | dzen2 -ta c -tw $W -x $X -fg $FG -bg $BG -e "button3=exit;button4=exec:$CI;button5=exec:$CD" -fn $FN

Спёр от сюда https://bbs.archlinux.org/viewtopic.php?id=49838

Однофигственно будет так как volumeicon тоже просто amixer дёргает.

Dron ★★★★★
()
Последнее исправление: Dron (всего исправлений: 1)

Может поможет, у меня скрипт такой в xmobar отображается.

#!/bin/bash
vol=$(amixer get Master | awk -F'[]%[]' '/%/ {if ($7 == "off") { print "OFF" } else { print $2 }}' | head -n 1)

echo ♫$vol%

exit 0
sci-fi
()

amixer get Master | grep % | sed 's/^.*\[\([0-9]\?[0-9]\?[0-9]%\)\].*$/\1/'

тем временем в openbsd:

mixerctl -n outputs.master

u283
()
Ответ на: комментарий от LIKAN

Если хочется именно хаскеллом, то сделай на манер того конфига, который уже есть. Прорицаю, что оно должно выглядеть как нечто вроде:

myVolL =
        (dzenBoxStyleL blue2BoxPP   $ labelL "Volume") ++!
        (dzenBoxStyleL whiteBoxPP *команда*)
После чего добавляешь виджет в ppExtras и смотришь что из этого получается. В конфиге есть то, что тебе нужно, только с аптаймом вместо громкости.

Lilly
()
Ответ на: комментарий от Lilly

Нее, не все так просто, я сомневаюсь, что в хаскеле можно так просто исполнить башевскую команду. А что до uptime - это функция, которая реализована на том же хаскеле в этом же файле ниже, и информацию она берет не из башевской команды, а открывая файл /proc/uptime. Я поэтому и спросил в начале темы, а можно ли считать уровень громкости из файла, и тогда я смогу сделать по образцу.

LIKAN ★★★
() автор топика
Ответ на: комментарий от LIKAN

О, прошу прощения, сам в хаскелл не лез особо.

Так или иначе, но как и в любом другом более-менее нормальном языке в хаскелле тогда должна быть возможность сделать запрос системе. Как и оказалось после минуты гугления: тыц - вот тут есть конкретный пакет и конкретные примеры о том, как создать пайп и прочесть его вывод. Конкретный пример кода:

(_, Just hout, _, _) <-
       createProcess (proc "ls" []){ std_out = CreatePipe }
По идее то, что нужно?

Lilly
()
Ответ на: комментарий от Lilly

Черд, у меня при попытке сделать import System.Process вылазит

ERROR "test.hs" - Can't find imported module "System.Process"

LIKAN ★★★
() автор топика
Ответ на: комментарий от LIKAN

А альтернативы выдаёт после этого? Чем компилируешь?

ghc-pkg list | grep system
Lilly
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.