LINUX.ORG.RU

Сообщения vdmit

 

Фрустрации на тему хранения настроек в реестре и конфигах.

Форум — General

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

На firefox заострю внимание. Неплохой браузер, но есть особенность - настройки хранит в БД, при этом не предоставляет внешнего API для работы с этими настройками. Гораздо лучше было бы, если бы можно было менять настройки firefox используя какую-нибудь консольную утилиту, можно было бы рулить настройками через шелл-скрипты: например при помощи xbindkeys назначить клавишу для включения/выключения какого-нибудь прокси-сервера. Не спорю, для firefox много плагинов, но здесь вопрос уже скорее об интеграции. И вся острота проблемы выплывает, когда тебе нужно установить, например, когда у тебя есть компания, где, допустим, у тебя 1000 компьютеров с firefox на борту, и тебе приспичило сделать стартовой страничкой по-умолчанию сайт компании. При этом просто синхронизировать профиль браузера ты не можешь - каждый сотрудник уже имеет некоторые кастомные настройки, которые затрутся. Было бы просто отлично, например, выполнить по ssh на этих машинах одну команду, что-то вроде: setconf firefox homepage="https://mycompany.ru"; Сейчас набегут фанаты windows со своим GPOшным АДом, но ведь и он не решает этой проблемы, возможно с Internet Explorer такое и прокатит, но кому ж этот ваш эксплорер нужен... Конечно, ещё они могут сказать, что нужно бы фаерфоксу использовать РЕЕСТР для хранения настроек, но мы не будем слушать их глупые рассуждения, ведь мы знаем, что невозможно иметь один единый формат, удобный всем, ровно как и нельзя иметь один язык программирования для всего.

Так вот, было принято решение написать набор утилит и библиотек, позволяющий во-первых, давать какой-то стандартный интерфейс для управления настройками - в первую очередь для скриптов, которые являются интеграционным клеем. При таком раскладе можно даже писать конфиги в виде шелл-скриптов... например, у меня при старте иксовой сессии выполняется скрипт, который запускает xset, setxkbmap и xsetroot чтобы немного настроить X-сервер, который может в оперативной памяти представлять настройки как угодно, а хранить так и вовсе в БД. Но мне определённо нравится, что я могу допустим при помощи тех же xbindkeys повесить на какую-нибудь медиа-клавишу переназначение комбинации клавиш для смены раскладки клавиатуры, например сменить мой дефолтный caps lock на alt+shift, временно, чтобы переключалки на моей локальной системе и в окне vncviewer/rdesktop не конфликтовали. Вобщем было бы круто, если бы приложения позволяли менять подобным образом настройки, хоть и не все.

Вторая часть - это предоставить некоторые искаробочные библиотеки для парсинга/форматирования конфигов. Однако принуждать ими пользоваться, конечно, нельзя. Хочешь - храни таблицы в CSV, хочешь - храни ключ-значение в JSON, хочешь - используй SQLite. Почему следует использовать именно эти библиотеки? Потому что при помощи них можно «генерить» утилиты-интерфейсы к этим настройкам.

Собственно, ЛОР, пришёл спросить тебя вообще, нужно ли что-то подобное вообще? Советы/идеи по реализации какие-нибудь будут? Может кто-то хочет объединиться для совместного написания? Нужно же сделать всё по-уму пока редхатовцы не запихали gconf в systemd и сделали это де-факто стандартом...

 

vdmit
()

RSS подписка на новые темы