Bug 36077

Summary: Mintmenu, теряются часть переменных окружения
Product: Branch p8 Reporter: Anton Shevtsov <shevtsov.anton>
Component: mintmenuAssignee: Andrey Cherepanov <cas>
Status: ASSIGNED --- QA Contact: qa-p8 <qa-p8>
Severity: normal    
Priority: P3    
Version: не указана   
Hardware: all   
OS: Linux   

Description Anton Shevtsov 2019-02-12 07:15:50 MSK
При запуске приложений чере mintmenu, теряются часть переменных окружения. В частности, меня интерсует XDG_CONFIG_DIRS.

В mate, по-умолчанию, у нас переменная не выставляется. Я выставил ее (export XDG_CONFIG_DIRS=/etc/xdg) через /etc/profile.d и она доступна в любое время. Тестировал на приложении chromium, т.к. при не выставленной этой переменной у нас отказвается корректно работать веб-версия СЭД Директум т.к. xdg-open активно используется.

Если запускать chromium из консоли, либо с ярлыка на рабочем столе - все отлично, переменная наследуется и процесс chromium ее видит. Проблем нет.

Но если запустить из mintmenu - то chromiumу виден ограниченный набор переменных, и там XDG_CONFIG_DIRS нет. Я пробовал вносить переменную в /etc/chromium/default, пробовал задавать через systemd (/etc/systemd/user.conf, DefaultEnvironment=). Эффекта ноль.

Начал смотреть скрипт mintmenu. В /usr/bin/mintmenu если посмотреть os.environ['XDG_CONFIG_DIRS'], то переменная еще видиться. Но /usr/bin/mintmenu запускает второй скрипт /usr/share/linuxmint/mintMenu/mintMenu.py , где уже обращение к массиву os.environ - ничего не показывает. Сам запуск приложения из меню находится в /usr/share/linuxmint/mintMenu/mintMenu.py в участке

def Execute( cmd , commandCwd=None, desktopFile=None):
    if desktopFile:
        launcher = Gio.DesktopAppInfo.new_from_filename(desktopFile)
        retval = launcher.launch_uris()

если добавить сюда выставление переменной, то все работает отлично

def Execute( cmd , commandCwd=None, desktopFile=None):
    if desktopFile:
        os.environ['XDG_CONFIG_DIRS'] = '/etc/xdg'
        launcher = Gio.DesktopAppInfo.new_from_filename(desktopFile)
        retval = launcher.launch_uris()

но это не тот патч, который нужен. Нужно просто наследовать все переменные, что есть в сеансе. Мало ли что еще не так.

Я обратился к разработчика https://github.com/linuxmint/mintmenu/issues/209 с примером теста.. 
У них в минте все работает, У них в /etc/X11/Xsession.d/ куча скриптов которые опередялют XDG_* переменные и они доступны везде и всегда.

Вопрос остается открытым. Что делать, как фиксить?
Comment 1 Anton Shevtsov 2019-02-19 15:52:41 MSK
Вот список XDG переменных доступных процессу (chromium) при запуске из консоли

XDG_VTNR=1
XDG_SESSION_ID=c7
XDG_GREETER_DATA_DIR=/var/lib/lightdm-data/zagitovdo
XDG_SESSION_PATH=/org/freedesktop/DisplayManager/Session2
XDG_SEAT_PATH=/org/freedesktop/DisplayManager/Seat0
XDG_CONFIG_DIRS=/etc/xdg
XDG_SESSION_TYPE=x11
XDG_SEAT=seat0
XDG_SESSION_DESKTOP=mate
XDG_DATA_DIRS=/usr/share/mate:/usr/share:/usr/local/share
XDG_RUNTIME_DIR=/run/user/215652162
XDG_CURRENT_DESKTOP=MATE

а вот список переменных того же процесса (chromium), но запущенного из mintmenu
XDG_CURRENT_DESKTOP=MATE
XDG_SEAT=seat0
XDG_SESSION_DESKTOP=mate
XDG_SESSION_ID=c7
XDG_SESSION_TYPE=x11
XDG_VTNR=1

куда оно дело остальные - загадка. Отсюда имеем неработающий сэд, невнятные ассоциации файлов (когда клик "показать в папке" - открывает нам firefox, а клик по docx файлу из загрузок - открывает архиватор)
Comment 2 Anton Shevtsov 2019-02-26 10:48:28 MSK
исправление

строку "Сам запуск приложения из
меню находится в /usr/share/linuxmint/mintMenu/mintMenu.py в участке"
надо читать

"Сам запуск приложения из
меню находится в /usr/share/linuxmint/mintMenu/plugins/execute.py в участке"