LINUX.ORG.RU

Пара вопросов по KDE

 , , ,


0

1

Вопрос № 1: Как в KDE прочитать (программно) значения из System Settings? Конкретно интересует значение System Settings → Input Devices → Keyboard → Hardware → Delay. Есть ли возможность прочитать его, не используя библиотеки Qt? Идеально было бы вытащить его через D-Bus.

Вопрос № 2: Как в KDE издать (программно) «бульк»? Типа того, который звучит при echo -e '\a' в терминале. Есть ли возможность издать «бульк», не используя библиотеки Qt? Идеально было бы издать звук через D-Bus.

★★★★★

Вопрос № 2: Как в KDE издать (программно) «бульк»? Типа того, который звучит при echo -e '\a' в терминале. Есть ли возможность издать «бульк», не используя библиотеки Qt? Идеально было бы издать звук через D-Bus.

Если имеется ввиду звук, который проигрывается при уведомлениях, то у KDE свой самодельный демон крутится и с помощью DBus отправляет уведомления (в том числе со звуком).

Подробности тут:

P. S. Чтобы был звук у уведомлений, он должен быть включён в настройках. Если нужен только сам звук, его можно найти в системе, например так (путь может быть другим): paplay /usr/share/sounds/Oxygen-Im-New-Mail.ogg

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

~/.config/kcminputrc

Да, этот файл я уже нашёл. Но как его грамотно прочитать?

QSettings settings( "kcminputrc" );

пытается читать "~/.config/kcminputrc.conf" — автоматом добавляет ненужный суффикс ".conf". Попытка указать формат файла:

QSettings settings( "kcminputrc", QSettings::IniFormat );

приводит к тому, что читается файл "~/kcminputrc" (а не "~/.config/kcminputrc").

Вот такой вариант вроде работает:

QSettings settings( ".config/kcminputrc", QSettings::IniFormat );

но он нехорош тем, что переменные XDG_CONFIG_HOME и XDG_CONFIG_DIRS не учитываются.

Я нарисовал нужный мне код, но складывается ощущение что либо я не знаю правильного метода, либо в Qt/KDE что-то не так.

debugger ★★★★★
() автор топика
Последнее исправление: debugger (всего исправлений: 1)
Ответ на: комментарий от pericles

Для чтения значений есть программа kreadconfig…

Стартовать процесс для чтения конфига? Это не наш метод.

иначе парсить сами конфиги.

Чем? QSettings? Или есть что-то более подходящее?

Копать в сторону DBus Notification Daemon.

А конкретней? org.freedesktop.Notifications? Какой объект, интерфейс? И, нотификации — это не то, что мне надо. Мне нужен просто звук.

debugger ★★★★★
() автор топика
Последнее исправление: debugger (всего исправлений: 1)
Ответ на: комментарий от Dr64h

Если имеется ввиду звук, который проигрывается при уведомлениях, то у KDE свой самодельный демон крутится и с помощью DBus отправляет уведомления (в том числе со звуком).

Уведомления я видел, но это не то. Мне нужен просто звук, без уведомления.

Если нужен только сам звук, его можно найти в системе, например так (путь может быть другим): paplay /usr/share/sounds/Oxygen-Im-New-Mail.ogg

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

Я нашёл класс QSound, использование выглядит тривиально:

QSound sound( "file" );
sound.play();

но ругается:

QEventLoop: Cannot be used without QApplication

QApplication для меня неприемлем, может быть, QCoreApplication сгодится. Буду думать стоит ли возиться со всем этим ради «булька».

debugger ★★★★★
() автор топика
Последнее исправление: debugger (всего исправлений: 1)
Ответ на: комментарий от debugger

Чем? QSettings? Или есть что-то более подходящее?

Уведомления я видел, но это не то. Мне нужен просто звук, без уведомления.

KNotifications использует две разные библиотеки для проигрывания звука, это Canberra и Phonon. Смотри исходники по ссылкам.

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

Спасибо. Я уже попробовал QSettings и решил от него отказаться, т. к. раньше моя приложуха кушала ~1 мегабайт памяти, а с прилинкованными кутишными библиотеками стала кушать почти 3. Слишком жирно ради того, чтобы прочитать одно значение из конфига. Кдешные либы наверняка внутрях используют кутишные либы, значит, потребление памяти только возрастёт.

Я прочитал кдешный конфиг с помощью KeyFile из Glibmm. Поскольку Glibmm у меня уже используется, то получилось почти бесплатно.

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