Фильтр для CUPS-а и переменные окружения в DBus
Добавлено: 10 ноя 2013, 01:29
Я автор программы boomaga сейчас портирую ее на Росу. Точнее собираю и тестирую новую версию, основанную на PDF. И заметил, так скажем, две особенности, я не уверен это баги или сделано сознательно.
1. Ни в одном из пакетов CUPS-а нет фильтра pstopdf. Это башевский скрипт который использует ghostscript для преобразования postscript в PDF. Кроме моей программы, он используется для некоторых принтеров, которые умеют принимать задания в PJL. В Дебиане он входит в пакет cups-filters.
2. Если запускать программу через dbus, устанавливаются не все переменные окружения в результате программа не может найти плагины стиля, и использует стандартный Qt-шный стиль:

А вот как программа выглядит если запущена нормально, не черз dbus:

С KDE-шными программами та же прогблема, только стиль у программы oxygen:

Как проверить:
Создать файл /usr/share/dbus-1/services/org.k3b.k3b.service. В нем написать
И запустить команду
Запуститься k3b.
Я не знаю где настраиваются переменные окружения для запуска через dbus, но экспериментальным путем выяснил что не хватает следующих переменных:
1. Ни в одном из пакетов CUPS-а нет фильтра pstopdf. Это башевский скрипт который использует ghostscript для преобразования postscript в PDF. Кроме моей программы, он используется для некоторых принтеров, которые умеют принимать задания в PJL. В Дебиане он входит в пакет cups-filters.
2. Если запускать программу через dbus, устанавливаются не все переменные окружения в результате программа не может найти плагины стиля, и использует стандартный Qt-шный стиль:

А вот как программа выглядит если запущена нормально, не черз dbus:

С KDE-шными программами та же прогблема, только стиль у программы oxygen:

Как проверить:
Создать файл /usr/share/dbus-1/services/org.k3b.k3b.service. В нем написать
Код: Выделить всё
[D-BUS Service]
Name=org.k3b.k3b
Exec=/usr/bin/k3b
Код: Выделить всё
dbus-send --session --type=method_call --print-reply --dest=org.k3b.k3b /MainApplication org.freedesktop.DBus.Peer.Ping
Я не знаю где настраиваются переменные окружения для запуска через dbus, но экспериментальным путем выяснил что не хватает следующих переменных:
Код: Выделить всё
GTK2_RC_FILES
KDE_FULL_SESSION
QT_PLUGIN_PATH