Шаги 17–19: настройка звуков KDE и создание ISO
К чему стремимся
Здесь описаны шаги для установки звуков по умолчанию в KDE (knotify.eventsrc), объяснён механизм, по которому значения из системного файла заполняют отсутствующие строки в пользовательском файле, а также финальные шаги подготовки дистрибутива — очистка и создание ISO с помощью Remastersys. Подойдёт для администраторов и packager’ов, которые готовят кастомный Live CD/DVD/ISO на базе KDE/Kubuntu.
Шаг семнадцатый: задать звуки по умолчанию
Создайте файл, который задаёт фоновые (системные) звуки. Для этого выполните команду, которая откроет файл в графическом редакторе с привилегиями:
kdesu kate /etc/kde-profile/default/share/config/knotify.eventsrcСоветую вставить в этот файл следующий блок (в точности):
[exitkde]
presentation=1
soundfile=/usr/share/sounds/KDE_Logout_new.wav
[startkde]
presentation=1
soundfile=/usr/share/sounds/KDE_Startup_new.wavОбратите внимание: это только пример. Путь к звуковому файлу должен существовать на вашей системе, иначе звук не проиграется. Если вы предпочитаете другой плеер или формат, убедитесь, что KDE поддерживает его.
Как это работает (поведенческая модель)
KDE использует два уровня конфигурации: пользовательский файл (обычно в ~/.kde/share/config/knotify.eventsrc) и файл по умолчанию в /etc/…/knotify.eventsrc. Поведение не простое «если пользователь указал — использовать, иначе — использовать по умолчанию». Фактически, если в пользовательском файле присутствуют секции события, но в этих секциях отсутствуют строки presentation и/или soundfile, то KDE подставляет соответствующие значения из системного (default) файла. То есть файл по умолчанию дополняет отсутствующие строки пользователя, а не полностью переопределяет секцию.
Ниже — пример моего пользовательского knotify.eventsrc (с сохранением форматирования):
[Textcompletion: no match]
commandline[$e]=
logfile[$e]=
presentation=1
soundfile[$e]=
[Textcompletion: partial match]
commandline[$e]=
logfile[$e]=
presentation=1
soundfile[$e]=
[Textcompletion: rotation]
commandline[$e]=
logfile[$e]=
presentation=1
soundfile[$e]=
[Trash: emptied]
commandline[$e]=
logfile[$e]=
presentation=1
soundfile[$e]=
[cancellogout]
commandline[$e]=
logfile[$e]=
presentation=16
soundfile[$e]=
[cannotopenfile]
commandline[$e]=
logfile[$e]=
presentation=0
soundfile[$e]=
[catastrophe]
commandline[$e]=
logfile[$e]=
presentation=2
soundfile[$e]=
[exitkde]
commandline[$e]=
logfile[$e]=
presentation=1
soundfile[$e]=KDE_Logout_3.ogg
[fatalerror]
commandline[$e]=
logfile[$e]=
presentation=2
soundfile[$e]=
[messageCritical]
commandline[$e]=
logfile[$e]=
[messageInformation]
commandline[$e]=
logfile[$e]=
presentation=65
soundfile[$e]=KDE_Chimes_2.ogg
[messageWarning]
commandline[$e]=
logfile[$e]=
presentation=1
soundfile[$e]=KDE_Error_1.ogg
[messageboxQuestion]
commandline[$e]=
logfile[$e]=
presentation=65
soundfile[$e]=KDE_Vox_Ahem.ogg
[notification]
commandline[$e]=
logfile[$e]=
presentation=1
soundfile[$e]=KDE_Beep.ogg
[printerror]
commandline[$e]=
logfile[$e]=
presentation=2
soundfile[$e]=
[startkde]
commandline[$e]=
logfile[$e]=
[warning]
commandline[$e]=
logfile[$e]=
presentation=2
soundfile[$e]=А вот пример файлов по умолчанию, как у Kubuntu:
[messageCritical]
presentation=65
soundfile=/usr/share/sounds/KDE_Error_1.ogg
[startkde]
presentation=1
soundfile=/usr/share/sounds/kubuntu-login.oggСравните: системный файл дополняет пользовательский. Если в пользовательском файле отсутствуют строки presentation или soundfile, то KDE возьмёт их из файла по умолчанию.
Практическое правило (эвристика)
- Если в пользовательском файле секция события присутствует, но строки presentation/soundfile пусты или отсутствуют, то значения берутся из default-файла. Это поведение скорее «подстановочное», а не «замещающее».
- presentation=0 гарантированно отключает звук для события даже при наличии системного звука.
- Значение presentation — целое число. Документация на эту цифру минимальна; известное наблюдение: presentation=0 отключает звук. Остальные числа, по-видимому, кодируют поведение показа/записи лога/представления события и могут влиять на приоритет или задержку. Точное назначение зависит от версии KDE и не всегда документировано.
- Метка [$e] обычно означает «экземпляр события» и используется в записи команд/логов. Её присутствие в строках commandline[$e] и logfile[$e] встречается в файлах, но описание поведения в официальной документации редко приводится.
Important: Если вы экспериментируете с этими файлами, делайте резервные копии как пользовательского файла, так и системного, прежде чем вносить изменения.
Рекомендация по заполнению /etc/kde-profile/default/share/config/knotify.eventsrc
В файле по умолчанию делайте записи в компактном виде, где для каждого события есть presentation и soundfile. Например:
[event]
presentation=число из списка
soundfile=/путь/к/файлу.oggПовторите для всех событий, для которых хотите определить звук по умолчанию.
Пример расширенного блока, который вы можете поместить в файл по умолчанию:
[notification]
presentation=1
soundfile=/usr/share/sounds/KDE_Beep.ogg
[warning]
presentation=2
soundfile=/usr/share/sounds/KDE_Error_1.ogg
[startkde]
presentation=1
soundfile=/usr/share/sounds/KDE_Startup_new.wav
[exitkde]
presentation=1
soundfile=/usr/share/sounds/KDE_Logout_new.wavПроверьте права на файлы и каталоги, чтобы все пользователи могли прочитать эти звуковые файлы: chmod 644 на файлы и 755 на каталоги по пути.
Что может пойти не так — типичные ошибки и обходы
- Файл отсутствует или путь к звуку неверный — звук не проигрывается. Убедитесь в наличии файлов и их форматах (OGG/ WAV и т. п.).
- Права доступа блокируют чтение — проверяйте права.
- Пользователь явно установил presentation=0 — системный звук не сработает, даже если в default-файле указано иное.
- Разные версии KDE могут интерпретировать presentation по-разному — поведение может отличаться между KDE4, KDE5 и Plasma.
Альтернативы:
- Использовать графическую панель «Настройки системы» → «События» → задать звук для каждого события. Это удобно, если вы настраиваете одну систему вручную.
- Для массовой сборки образа предпочтительнее править /etc/…/knotify.eventsrc, чтобы системные настройки применялись к новому пользователю по умолчанию.
Шаг восемнадцатый: очистка перед созданием ISO
После того как вы протестировали и убедились, что всё работает, удалите тестовую учётную запись. Затем откройте терминал и выполните команду очистки кеша APT:
sudo apt-get cleanЗакройте терминал.
Зачем это нужно: удаление тестового пользователя убирает персональные данные и локальные кэш-файлы. apt-get clean очищает пакетный кеш, уменьшая итоговый размер ISO.
Important: убедитесь, что вы удалили все личные ключи, сертификаты и пароли перед созданием дистрибутива для публичного распространения.
Шаг девятнадцатый: создать ISO-образ с Remastersys
Remastersys упрощает создание дистрибутива. Перед запуском сборки откройте конфигурацию Remastersys (через интерфейс) и выберите «Modify the remastersys config file to customize options» — нажмите OK. Основные параметры, на которые стоит обратить внимание:
- Title — имя дистрибутива (будет отображаться в информации о системе и в загрузочном меню).
- Filename — имя выходного ISO-файла.
После настройки вернитесь в главное меню и выберите «Make a Distributable copy to share with friends» — нажмите OK.
Remastersys создаст ISO и поместит его по адресу:
/home/remastersys/remastersys/filename.isoЗапишите получившийся ISO на CD/DVD или создайте загрузочную флешку и протестируйте.
Совет: протестируйте ISO в виртуальной машине (VirtualBox, QEMU) перед записью на физический носитель.
Техническое замечание: странное поведение автомонтирования USB
При одной из сборок у автора возникла проблема: флешки не автомонтировались. В процессе модификации настроек дефолтных профилей automount стал работать сам по себе. Точных причин не установлено — вероятно, изменение системных конфигураций или перезапуск служб повлиял на поведение udev/pmount. Если заметите похожее, проверьте:
- логи udev и syslog
- правила в /etc/udev/rules.d/
- настройки pmount/polkit
- наличие пакетов gvfs и gvfs-backends (они часто участвуют в автомонте в графических окружениях)
Если проблема повторяется, ведите журнал шагов и изменений — это поможет локализовать изменение, которое восстановило работу автомонтирования.
Заметки по процессу: что было усвоено
Опыт показывает: умение — это одно, а документация — другое. Многое в окружении KDE не документировано так, как хотелось бы. Часто разработчики не фиксируют пользовательские сценарии, поэтому приходится исследовать поведение методом проб и ошибок.
Важно понимать, что:
- KDE сильно настраиваем. Но настройки по умолчанию могут быть распределены по системным и пользовательским файлам с неочевидными правилами объединения.
- Для создания удобного образа стоит автоматизировать правки системного default-файла и проверить влияние на учётную запись по умолчанию.
- Документируйте свои изменения. Это упрощает поддержку и повторную сборку образов.
Практический чеклист перед сборкой дистрибутива
- Сделать резервные копии /etc и ~/.kde/share/config/knotify.eventsrc.
- Проверить доступность звуковых файлов и права (644 для файлов, 755 для каталогов).
- Поместить нужные defaults в /etc/kde-profile/default/share/config/knotify.eventsrc.
- Создать тестового пользователя и проверить: старт среды, выход, уведомления — звуки должны воспроизводиться.
- Удалить тестового пользователя и очистить систему: sudo apt-get clean.
- Настроить Remastersys: Title и Filename.
- Создать ISO и протестировать в VM и на реальном носителе.
- Проверить автомонтирование USB и другие критичные сервисы.
Критерии приёмки
- При логине и логауте проигрываются ожидаемые звуки (или остаются отключёнными при presentation=0).
- В пользовательских сессиях звук и уведомления работают последовательно после новой установки из ISO.
- В ISO не содержатся личные данные, ключи или пароли.
- Размер ISO не превышает ожидаемый (приблизительно контролируется очисткой apt cache и удалением временных файлов).
Роль-based чеклист (быстрое действие для каждой роли)
Администратор:
- Проверил и сохранил бэкапы конфигураций.
- Снабдил системный профиль звуковыми файлами и правами доступа.
Packager:
- Добавил изменения в скрипты сборки.
- Автоматизировал правку /etc/kde-profile/default/share/config/knotify.eventsrc.
Тестировщик:
- Проверил проигрывание звуков в чистой пользовательской сессии.
- Протестировал установку ISO и поведение по умолчанию.
Советы по отладке и миграции
- При миграции с KDE4 на Plasma 5 проверяйте, что сущности notification/knotify совместимы с новой реализацией уведомлений.
- Если звук не воспроизводится, проверьте системный звук (PulseAudio/ALSA) отдельно от KDE: сначала убедитесь, что система в целом слышит звук.
- Для массовой деплойментации используйте конфигурационные management-инструменты (Ansible/CFEngine/Puppet) для внесения правок в default-файлы.
Короткая методология (mini-method)
- Исследуйте текущие файлы пользователя и default.
- Сформулируйте желаемые defaults и проверьте пути к звукам.
- Поместите файлы в /etc-каталог и установите права.
- Тестируйте: логин/логаут/уведомления.
- Очистите систему и соберите ISO.
Пример тест-кейсов
- ТК1: При presentation=1 и корректном soundfile звук должен звучать при событии startkde.
- ТК2: При presentation=0 звук не должен воспроизводиться даже при наличии soundfile в default-файле.
- ТК3: Если в пользовательском файле soundfile пуст, но в default задан, звук должен проиграться.
- ТК4: Удаление тестового пользователя должно удалить его домашнюю папку и персональные настройки.
Краткое резюме
- Файл knotify.eventsrc разделён между пользовательским и системным уровнями, системный файл дополняет отсутствующие строки в пользовательском.
- presentation=0 отключает звук для события; остальные значения не полностью документированы.
- Для создания ISO используйте Remastersys, предварительно очистив систему и удалив тестовые аккаунты.
Спасибо автору оригинального руководства за практический опыт и примеры. Документ отражает процедуру, проверенную в процессе сборки демо-дистрибутива.
–Shaun Marolf известный как Technoshaun
Похожие материалы
Отключить всплывающие объявления на Samsung
Как смотреть и чего ждать от мартовского Apple
Как сохранить маршрут Google Maps на ПК
Голосовой ввод на Chromebook — как включить
Как создать и управлять рабочим пространством Slack