LINUX.ORG.RU

Gnome panel fm-applet


0

0

Задался целью сделать маленьку Си-программку для прослушивания fm-радиостанций с аппаратного тюнера. На мой взгляд для прослушивания станций, нет необдимости в оконном интеррфейсе, но в то же время интерфейс управления всегда должен быть под рукой. Т.к. использую Gnome решил, что для этого, Panel Applet будет самое то. Нахожусь в творческом застое..

Как я это вижу:

Апплет - в панели с небольшим дисплеем (реализовано) показывающем: - уровень сигнала (реализовано), - частоту настройки (реализовано), - информацию о приеме стерео-сигнала (реализовано), - уровень громкости звуковой канала (не реализовано).

Управление:

Колесиком мыши (при нахождении курсора на апплете): Mouse scroll up – увеличение горомкости (не реализовано); Mouse scroll down – увеличение горомкости (не реализовано); Ctrl + Mouse scroll up – переход на следующую (предустановленную) станцию (не реализовано); Ctrl + Mouse scroll down – переход на предыдущую (предустановленную) станцию (не реализовано); Ctrl +Shift + Mouse scroll up – увеличение частоты с заданным инкрементом (не реализовано); Ctrl +Shift + Mouse scroll down – уменьшение частоты с заданным инкрементом (не реализовано);

Левая кнопка мыши – показывает popup-окно с элементами управления реализующими функциональность описанную для колесика + возможно сприсок пресетов станций (пока не продумал до конца как оно должно выглядеть) (реализовано на начальном этапе);

Ctrl + Левая кнопка мыши – on/off (не реализовано);

Правая кнопка мыши – стандартное popup-меню Gnome (Preferences.., Settings.., About, Move, Lock to panel);

На данный момент оно работает и выводит звук на line-out тюнера (шнурок на line-in звуковухи) можно увеличивать/уменьшать частоту с инкрементом (0,05 MHz) используя кнопки "+" "-" в popup-окне, дисплей отрисовывается через API Cairo, простенький радио модуль через API V4L2.

Что нужно сделать: - Окно Preferences.. управления пресетами станций и т.п. и реализовать его функциональность (включая автосканирование диапазона) - Окно Settings.. с начальными установками работы оборудования (hw:1,0 dev/radio0 и т.п) и реализовать его функциональность - Доделать popup-oкно, в частности решить вопрос определения координат отображения окна Реализовать вывод звука через микшер (через line-in) и по pci и соответственно реализовать управление громкостью - GConf – получение и сохранение настроек и пресетов

Собственно может кто поделиться своими мыслями по данному поводу.. Может кто поделится кодом или идеями – очень интересует: - захват звука по PCI и т.п., по ALSA документации мало и она бестолковая (звуком пока вообще не занимался) - код или алгоритм определения координат вывода popup-окна, т.е чтобы popup-окно отображалось точно под апплетом, если аплет в верхней панели и соотвественно над апплетом если аплет в нижней панели и не справа и не слева, а именно под/над. - мысли по дизайну popup-окна, т.е. какие элементы управления в нем должны быть и как расположены

Может кто-то захочет чем-либо помочь..

>>> Просмотр (620x401, 67 Kb)

anonymous

Проверено: JB ()

> - уровень громкости звуковой канала (не реализовано).

а ниче что уже есть аплет управляющий общей громкостью?

firsttimeuser ★★★★★
()

> захват звука по PCI и т.п.

Работа с PCI - привилегия драйверов. Драйвер должен представить твой аппаратный тюнер в виде одного или нескольких файлов в /dev. Тебе нужно эти файлы открыть, и при помощи ioctl и других файловых операций работать с ними.

Неплохо бы найти в linux kernel исходник того драйвера, который подхватывает твое устройство. Можно разобраться, работает он через ALSA или как-то еще. Да и вообще в исходнике могут быть любопытные и полезные комменты.

> по ALSA документации мало и она бестолковая (звуком пока вообще не занимался)

За то на sourceforge есть куча приложений, которые упешно с ALSA работают. Можно посмотреть там.

Точно мало и бестолковая? В linux-source-2.6.xx/Documentation/sound/alsa смотрел?

Manhunt ★★★★★
()

>по ALSA документации мало и она бестолковая (звуком пока вообще не занимался)

Настоящие поцаны уже не альсу юзают, а pulseaudio. В идеале твой тюнер должен подхватиться пульсой как сорс. Тогда подрубаешь апплет как клиент и играешь через синк.

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

наверное имелась ввиду все-таки громкость только звукового канала для радио, а не общесистемная

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

> наверное имелась ввиду все-таки громкость только звукового канала для радио, а не общесистемная

а зачем? Вы слушаете радио болтая по voip и просматривая киношку? Ну если так уж смертельно надо то pulseaudio на подходе, незачем огород городить.

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

> 1. Pusleaudio научился не тормозить?

хз. у меня не тормозил, но зато глючил с страшной силой. Как например вылет во время просмотра кина, с полным пропаданием звука в системе. Или "задирание" звукового потока каджые 30-40 сек. Спасибо разрабам, возможность безболезненного отката предусмотрели. Но это дело временное, уверен что в pa полечат большинство надоедливых багов раньше чем состоится релиз сабжа. Так что вопрос остается открытым.

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

>Работа с PCI - привилегия драйверов. Драйвер должен представить твой аппаратный тюнер в виде одного или нескольких файлов в /dev. Тебе нужно эти файлы открыть, и при помощи ioctl и других файловых операций работать с ними.

Загрузка модуля с параметрами modprobe saa7134 alsa=1 представляет устройство hw:1,0 с каторого нужно захватить звук и проиграть на устройство звуковухи. Низкоуровневый интерфейс использующий ioctl используется в API OSS, В API ALSA используется более высокоуровневый интерфейс, но он очень запутан, функций непомерное ко-во.

>За то на sourceforge есть куча приложений, которые упешно с ALSA работают. Можно посмотреть там.

Если подскажешь на какие именно нужно обратить внимание, буду очень благодарен

>В linux-source-2.6.xx/Documentation/sound/alsa смотрел?

Под документацией я понимаю например это http://www.linuxtv.org/downloads/video4linux/API/V4L2_API/spec-single/v4l2.html а непреречисление enum и прототипов функций Если есть что-то внятное ткни пожалуйста меня носом.

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

>а ниче что уже есть аплет управляющий общей громкостью?

Назови пожкалуйста хоть одно приложение работающее со звуком и не реализующее возможность управления уровнем громкости

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

>Аплет какой-то БОЛЬШОЙ!!!1111 АРРРГГГХХ!!!! :D

Ну не совсем маленький. Тем не менее, если бы он имел оконный интерфейс, в панели задач занимал бы не меньше места и не имел бы экрана

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

>Настоящие поцаны уже не альсу юзают, а pulseaudio.

В каких программах это реализовано?

>В идеале твой тюнер должен подхватиться пульсой как сорс. Тогда подрубаешь апплет как клиент и играешь через синк.

Можно подробнее?

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

>Что за шрифт в апплете?

Все реализовано через API Cairo, например 0, реализует функция

static void digit_0(cairo_t *cr) { cairo_set_source_rgb(cr, LIGHTR, LIGHTG, LIGHTB); cairo_rectangle(cr, 3, 1, 1, 1); cairo_rectangle(cr, 5, 1, 1, 1); cairo_rectangle(cr, 7, 1, 1, 1); cairo_rectangle(cr, 1, 3, 1, 1); cairo_rectangle(cr, 9, 3, 1, 1); cairo_rectangle(cr, 1, 5, 1, 1); cairo_rectangle(cr, 9, 5, 1, 1); cairo_rectangle(cr, 1, 7, 1, 1); cairo_rectangle(cr, 9, 7, 1, 1); cairo_rectangle(cr, 1, 9, 1, 1); cairo_rectangle(cr, 9, 9, 1, 1); cairo_rectangle(cr, 1, 11, 1, 1); cairo_rectangle(cr, 9, 11, 1, 1); cairo_rectangle(cr, 1, 13, 1, 1); cairo_rectangle(cr, 9, 13, 1, 1); cairo_rectangle(cr, 3, 15, 1, 1); cairo_rectangle(cr, 5, 15, 1, 1); cairo_rectangle(cr, 7, 15, 1, 1); cairo_fill(cr); }

anonymous
()

Как бы имхо заморачиваться так глубоко на хоткеях - немножко глуповато. Накидай интерфейсик с кнопками,сделай на все реализации, просто добавить попап с простейшим редакторов хоткеев. Это я как кедераст говорю, возможно гномосеки посчитают что мол не хигово, не тру и все такое - тогда в реестр.. ну в gconf)

Borman3000
()

Очень интересный проект.

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

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

Чем глупо? Т.к. приложение панельное и фокус получает по наведению мыши, соотвествено мышинные события и нужно обрабатывать.

>Это я как кедераст говорю, возможно гномосеки посчитают что мол не хигово, не тру и все такое - тогда в реестр.. ну в gconf)

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

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

Кстати вопрос KDE`шникам, в KDE есть таке понятие как панельные апплеты? Где-то слышал, что KDE с Cairo пока не дружит

anonymous
()

А разве есть что то стоющее на FM радио??? ИМХО уже все давно только ip радио слушают.

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

>А разве есть что то стоющее на FM радио??? ИМХО уже все давно только ip радио слушают.

Пока не у всех есть быстрый и дешевый интернет - раз

У кого он есть, не редко бывают случаи, когда его нет - два

Никаких проблем с задержками буферизации - три

Да никто не заставяет отказатья от потокового, кода есть альтернатива - это всега хорошо

anonymous
()

Круто, молодец, похвально

mint
()

Отличный плагин, оформление на 5+
Всего один вопрос - он заточен под ширину панели 32?

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

>Всего один вопрос - он заточен под ширину панели 32?

Размер панели на скрине дефолтный - 24 pixels, под нее и заточен, но можно использовать и больший размер, будет больше белое пространство сверху и снизу и все

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

Плазмоиды это то, что в панелях? Т.е. это тоже, что в Gnome называется panel applet?

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

> Назови пожкалуйста хоть одно приложение работающее со звуком и не реализующее возможность управления уровнем громкости

перечисли те из которых ты знаешь где это оправдано

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

>Плазмоиды это то, что в панелях? Т.е. это тоже, что в Gnome называется panel applet?
Это одновременно и аплет на панели и виджет на рабочем столе. То есть смотря куда его приделаешь.

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

>Назови пожкалуйста хоть одно приложение работающее со звуком и не реализующее возможность управления уровнем громкости

mpd, mplayer. Общая громкость не очень удобна - иногда хочется чтобы радио играло погромче, а звук в игре допустим - потише.

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

>Перечисли те изкоторых ты знаешь где это оправдано

Не оправдано там где их нет. Пример: смотришь фильм и вдруг очень громко слышишь системный звук, сигнал о новой почте, мгновенном сообщении и т.п. А все потому, что громкость фильма установил общим регулятором. При выходе из приложения запоминается громкость именно для этого приложения. Tvtime можно приглушить или вообще замутить во время вызова skype. Кроме того в программах реализованы команды управления звуком, которые могут использоваться в lirc, anyremote и т.д. В любом случае, наличие не порок, а вот отсутствие приводит к неудобствам. Tvtimе при выходе мутит линию и чтобы послушать радио нужно лезть в микшер и выставлять громкость и в этом случае общесистемный вообще бесполезен.

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

Еще вопрос по сабжу.. Что на ваш взляд должно быть показано в выключенном состоянии?

У меня пока 2 варианта, это: - FM OFF - 12:42 (т.е. текущее время)

Есть варианты?

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

>Кстати вопрос KDE`шникам, в KDE есть таке понятие как панельные апплеты? Где-то слышал, что KDE с Cairo пока не дружит

kicker пока никто не отменял.

кстати можно легко сделать ДЕ-независимое приложение если оно будет не кнопкой в панельке, а значком в трее. правда таких уже полно, есть даже панельный апплет для xfce

prizident ★★★★★
()

Автор, сделай пожалуйста потом из этого аплета для гнома, аплет для xfce4 думаю там переделывать не много придётся, плюс если-бы была возможность добавлять не только FM станции но и IP, то цены-бы этой штучке небыло-бы. Спасибо тебе большое человеческое... Продолжай в том-же духе, жду релиза

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

> >Назови пожкалуйста хоть одно приложение работающее со звуком и не реализующее возможность управления уровнем громкости
> mpd, mplayer. Общая громкость не очень удобна - иногда хочется чтобы радио играло погромче, а звук в игре допустим - потише.


Враньё! MPlayer реализует управление громкостью (и через микшер, и программно).

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

Да, симпотичная иконка, по этому перерисовал ее с телефона длю Nautilus

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

> Почему нельзя просто ввести частоту? Нафига эти кнопки "+/-"?

Подозреваю, что некоторые не всегда знают что же они хотят послушать. Да и вообще иногда интересно пощелкать и посмотреть кто, где и что рассказывает :) Хотя лично мой приемник настроился на Наше где-то года 4 назад и с тех пор ни разу не перенастраивался :)

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

>В каких программах это реализовано?

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

>Можно подробнее?

покури доки на пульсаудио, я имею только общее представление, как там все работает.

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

>Автор, сделай пожалуйста потом из этого аплета для гнома, аплет для xfce4

Зачем клепать две версии, если можно просто поставить xfce4-xfapplet-plugin?

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

>выкинь gnome и поставь awesome 3 там такие вещи пишутся в пять строчек

Где можно посмотреть результат такого же приложения из пяти строчек? Ну или нечто аналогичное

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

>>В каких программах это реализовано?

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

Ну ты слишком оптимистичен! Пульзу то добавили, но сами приложения (я покрайней мере ни одного не видел) ее не используют.

Я смотрел Gnomeradio, так там звук реализован через OSS, тюнер V4L V4l2, причем V4l2 написан с ошибками. Короче страрье. VLC - на ALSA mplayer - на alsa потому и прошу хоть одну программ посмотреть

>Можно подробнее?

покури доки на пульсаудио, я имею только общее представление, как там все работает.

Вообще помоему pa - это всего лишь надстройка над alsa и т.п.

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

>> Почему нельзя просто ввести частоту? Нафига эти кнопки "+/-"?

Это я временно сделал кнопки, функция примитивная

freq = freq + increment

set_frequency (freq)

так как не продумал до конца что должно быть и как..

>Подозреваю, что некоторые не всегда знают что же они хотят послушать. Да и вообще иногда интересно пощелкать и посмотреть кто, где и что рассказывает :) Хотя лично мой приемник настроился на Наше где-то года 4 назад и с тех пор ни разу не перенастраивался :)

Собственно на текущий момент думаю оставить только ползунок громкости, выпадающий список пресетов и кнопку ON/OFF По аналогии как подсказал Jayrome: http://www.phoronix.net/image.php?id=gnome_sound_control&image=gnome_sound_1

А кнопочкек +- совсем избавлюсь со временем

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

>Автор, сделай пожалуйста потом из этого аплета для гнома, аплет для xfce4

xfce4-radio не катит?

prizident ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.