LINUX.ORG.RU

Куда добавить QT_QPA_PLATFORMTHEME=gtk2, чтобы работало для всей сессии?

 , ,


0

1

Добрый день. В .zshrc у меня есть запись

export QT_QPA_PLATFORMTHEME=gtk2

Для qt5-приложений, запускаемых из zsh, используется стиль gtk2, но при запуске их же через меню xfce4 или xfce4-appfinder данная настройка не применяется. Подскажите, пожалуйста, куда надо добавить определение этой переменной, чтобы работало для всех приложений в рамках сессии. Заранее спасибо.

★★

Как-то так:

$ cat /etc/profile.d/qt5-platformtheme-gtk2.sh
if [ -z "$QT_QPA_PLATFORMTHEME" ]; then
    export QT_QPA_PLATFORMTHEME="gtk2"
fi
$ cat /etc/profile.d/qt5-platformtheme-gtk2.csh
if ( -z "$QT_QPA_PLATFORMTHEME" ) then
    setenv QT_QPA_PLATFORMTHEME "gtk2"
endif

Darth_Revan ★★★★★
()

/etc/environment, ~/.pam_environment (если включен pam_env.so) — самое надёжное, но это не скрипты, а просто KEY=VALUE.

Всевозможные /etc/profile, ~/.profile и ~/.bash_profile с Wayland-сессией работать не будут.

Наконец, bashrc, zshrc и прочие rc-файлы оболочек вообще для этих целей использовать нельзя, т. к. они интерпретируются только оболочками в интерактивных сеансах.

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

Вообще, давно следует запилить PAM-модуль, который бы запускал чистую оболочку, заставлял бы её обрабатывать /etc/profile и ~/.profile, после чего инжектил бы окончательное окружение этой оболочки в PAM-сессию.

Удивляюсь, почему никто не сделал этого до сих пор. Хотя... нет, не удивляюсь. Десктопный GNU/Linux всегда был свалкой исторически сложившихся костылей различного масштаба.

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

В /etc/pam.d/login у меня есть строки:

# This module parses environment configuration file(s)
# and also allows you to use an extended config
# file /etc/security/pam_env.conf.
# 
# parsing /etc/environment needs "readenv=1"
session       required   pam_env.so readenv=1
# locale variables are also kept into /etc/default/locale in etch
# reading this file *in addition to /etc/environment* does not hurt
session       required   pam_env.so readenv=1 envfile=/etc/default/locale
Я пробовал создавать файл ~/.pam_environment с содержимым

QT_QPA_PLATFORMTHEME DEFAULT=gtk2

или

QT_QPA_PLATFORMTHEME=gtk2

но ни то, ни другое, не сработало. Подскажи, пожалуйста, что я делаю не так. Заранее спасибо.

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

Выше уже предлагали вариант с добавлением строчки в /etc/environment - попробуй его, с ним умвр (правда другой параметр), как в иксах, так и на вейланде.

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

Мне не очень нравится идея о добавлении предпочтения отдельного пользователя в общесистемный файл. Нет ли какого-нибудь пользовательского файла, играющего роль /etc/environment?

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

Перекинул свой параметр из /etc/env в .pam_env, тоже перестал работать, как я понял это связано с

user_readenv=0|1

Turns on or off the reading of the user specific environment file. 0 is off, 1 is on. By default this option is off as user supplied environment variables in the PAM environment could affect behavior of subsequent modules in the stack without the consent of the system administrator.

Где это выставлять, я не понял.

Попутно всплыла ссылка с вариантом прописывания KEY=VALUE в ~/.config/environment.d/10-something.conf - работает (по крайней мере в wayland).

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

user_readenv указывается как параметр при загрузке pam-модуля в файлах из /etc/pam.d. У меня в man pam_env указано, что он по-умолчанию «on» и переопределений у меня нет.

Согласно документации freedesktop, ~/.config/environment.d/10-something.conf читаются одним из генераторов systemd. В моём Debian этого генератора принципиально нет.

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

Я решил не озадачиваться совместимостью с Wayland (всё равно его не использую) и ограничиться использованием ~/.xsessionrc (https://wiki.debian.org/Xsession). Всем спасибо за помощь!

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

Ничего не понял, но у меня в Debian работает строчка в /etc/pam.d/common-auth:

auth    optional            pam_env.so user_envfile=.environment user_readenv=1
anonymous
()
Ответ на: комментарий от Norong

А в моём есть

В моём Debian этого генератора принципиально нет.

 ~ % ll /usr/lib/systemd/user-environment-generators/
total 12K
-rwxr-xr-x 1 root root 11K 2017-07-03 21:51 30-systemd-environment-d-generator
 ~ % systemctl --version
systemd 233
+PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD +IDN default-hierarchy=hybrid
anonymous
()
Ответ на: комментарий от Norong

Если 232 их принципиально поддерживает, то можно сделать свой: man systemd.environment-generator (там есть примеры).

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

В /etc/pam.d/login

Это работает только для /bin/login.

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