Bug 10917

Summary: Unusable session script
Product: Sisyphus Reporter: Sir Raorn <raorn>
Component: xfce-utilsAssignee: Mikhail Efremov <sem>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: blocker    
Priority: P2 CC: cas, kurakin, mike, oddity, vsu
Version: unstable   
Hardware: all   
OS: Linux   
Bug Depends on:    
Bug Blocks: 12100    

Description Sir Raorn 2007-02-24 15:21:55 MSK
/usr/bin/startxfce4 вызывает совершенно жуткого вида скрипт
/etc/xdg/xfce4/xinitrc который пытается подменять собой /etc/X11/Xsession. 
Делает он это настолько отвратительно, что ~/.Xdefaults просто вытираются из xrdb.

Не надо заниматься самодеятельностью, в startxfce4 надо просто выставить нужные
переменные и запустить нужные приложения (типа xffm и xfpanel) вместо тех плясок
вокруг xinit/serverrc, ssh-agent и xrdb...
Comment 1 Eugene Ostapets 2007-02-24 16:09:31 MSK
Я сравнил /etc/X11/Xsession и /etc/xdg/xfce4/xinitrc, и не считаю что апстрим
занимается большим велосипедостроением, чем прочие. У меня все работает и если
не будет более серьезных претензий к /etc/xdg/xfce4/xinitrc, то закрою багу как
INVALID
Comment 2 Sir Raorn 2007-02-24 17:49:45 MSK
1. Xsession к этому времени уже отработал
2. Содержимое ~/.Xdefaults в xrdb отсутствует после старта xfce
Comment 3 Eugene Ostapets 2007-02-24 18:12:35 MSK
У меня ~/.Xdefaults присутсвует, что я делаю не так?
Comment 4 Sir Raorn 2007-02-24 18:25:05 MSK
У меня тоже.  Тем не менее aterm в непотребном виде запускается пока не сделаю
xrdb -merge .Xdefaults ...

Впрочем, я уже снёс xfce и его дальнейшая судьба меня больше не интересует.
Comment 5 Dmitry V. Levin 2007-02-25 04:26:34 MSK
JFYI, несовместимость /etc/xdg/xfce4/xinitrc с /etc/X11/Xsession (если таковая
имеется, я не смотрел) - это blocker.
Comment 6 Eugene Ostapets 2007-02-25 11:49:33 MSK
Я не готов сказать что там полная совместимость, но в части xrdb там более
расширеный набор импортируемых настроек, т.е. кроме того что импортируют обычно,
добавляется также $XDG_CONFIG_HOME/xfce4/Xft.xrdb

Сам по себе /etc/xdg/xfce4/xinitrc вызывается обычно из /etc/X11/Xsession и
кроме прочего поднимает dbus. А вот когда стартуют xfce4 из runlevel 3, тогда
отсутствие скрипта подобного /etc/xdg/xfce4/xinitrc у других WM/DE блокер для
них, а не для xfce.
Comment 7 Sergey Vlasov 2007-03-11 21:36:19 MSK
Один только этот фрагмент однозначно blocker:

# create temp file for X resources
XRESOURCES="/tmp/xrdb-$UID.$$"

# Has to go prior to merging Xft.xrdb, as its the "Defaults" file
test -r $HOME/.Xdefaults && cat $HOME/.Xdefaults >> $XRESOURCES
Comment 8 Sergey Vlasov 2007-03-11 21:43:13 MSK
# ~/.Xresources contains overrides to the above
test -r $HOME/.Xresources && cat $HOME/.Xresources >> $XRESOURCES

# load all X resources
xrdb -nocpp -merge $XRESOURCES

Лично у меня в ~/.Xresources есть, например, #if HEIGHT >= 1200, поэтому -nocpp
тут никак не годится.
Comment 9 Eugene Ostapets 2007-03-11 21:56:28 MSK
Т.е. без nocpp нормально импортиться? Просто имеющиеся у меня ресурсы для urxvt
без проблем попадают в итоговый вариант xrdb и мне не на чем проверить репорт...
Я его и не закрывал по тому что не мог ни подтвердить, ни опровергнуть...
Comment 10 Sir Raorn 2007-09-24 21:43:58 MSD
(In reply to comment #6)
> Сам по себе /etc/xdg/xfce4/xinitrc вызывается обычно из /etc/X11/Xsession и
> кроме прочего поднимает dbus. А вот когда стартуют xfce4 из runlevel 3, тогда
> отсутствие скрипта подобного /etc/xdg/xfce4/xinitrc у других WM/DE блокер для
> них, а не для xfce.

Когда любой WM/DE стартует из runlevel 3, /etc/X11/Xsession к этому времени уже
отработал.  И dbus тоже стартовал.

Делать какие-то решения на базе Xfce с такими стартовыми скриптами - это блокер
для всего дистрибутива.
Comment 11 Michael Shigorin 2007-09-26 10:24:51 MSD
Пожалуй что :-(
Comment 12 Eugene Ostapets 2007-10-23 15:39:10 MSD
Читаем внимательно скрипт:
if test x"$DBUS_SESSION_BUS_ADDRESS" = x""; then
        dbuslaunch=`which dbus-launch`
        if test x"$dbuslaunch" != x"" -a x"$dbuslaunch" != x"no"; then
                eval `$dbuslaunch --sh-syntax --exit-with-session`
        fi
fi

Dbus-launch вызывается только в случае, если предыдущий запущен криво, без
выставления переменных окружения. У нас в /etc/X11/profile.d/dbus-daemon.sh все
запускается нормально, значит эта часть скрипта НИКОГДА не будет отрабатывать.
Тоже мне блокер нашли...
Comment 13 Sir Raorn 2007-10-23 16:11:09 MSD
Ну почти.

/etc/X11/Xsession:

# Merge in defaults and keymaps.
MergeResources /etc/X11/Xresources "$HOME/.Xresources" "$HOME/.Xdefaults"

scripts/xinitrc:

XRESOURCES=$HOME/.Xdefaults
...
XRESOURCES="$XRESOURCES $BASEDIR/Xft.xrdb"
...
XRESOURCES="$XRESOURCES $BASEDIR/Xcursor.xrdb"
...
XRESOURCES="$XRESOURCES $HOME/.Xresources"

В результате настройки из .Xdefaults перекрываются непонятно чем.  .Xdefaults
надо грузить последним.
Comment 14 Eugene Ostapets 2007-10-23 16:37:01 MSD
Я могу согласиться, что ~/.Xresources нужно переставить до ~/.Xdefaults для
единообразия с общесистемной настройкой, но... Xft.xrdb и Xcursor.xrdb должны
грузиться последними, иначе пользователи будут несколько разочарованы, тем, что
в менеджере настроек они могут поклацать мышкой, а в реальности ничего не
измениться, потому что они умудрились откуда-то скачать "кривой" .Xdefaults или
.Xresources.

Итак, итог:
Переставляю местами .Xdefaults и .Xresources, после чего закрываем эту багу?
Comment 15 Sir Raorn 2007-10-23 16:48:08 MSD
Да.  Именно переставить.  Мне нравится мой кривой .Xdefaults и я не хочу чтобы
какая-то сволочь меняла мои любимые настройки.

Кстати, советую ещё раз заглянуть в /etc/X11/Xsession на тему поддержки
локале-зависимых .X*s...
Comment 16 Eugene Ostapets 2007-10-23 17:02:37 MSD
Локолезависимые посмотрю позже, к следующей версии xfce, а пока отправил alt2 с
переставленным порядком .Xdefaults и .Xresources.

Еще бы почитать где-нибудь, каков правильный порядок чтения этих файлов, т.е.
кто является базовой настройкой, а кто override к ней...