LINUX.ORG.RU

Вопрос про xinitrc

 , , ,


0

1

Добрый день! Я только-только начал осваивать linux,а именно arch, поэтому сразу извиняюсь, если вопрос глупый и сто раз обсуждался.

Пользовался я arch+openbox пару месяцев без проблем. И тут решил добавить в автозагрузку простенький скрипт на перебинд кнопок планшета через xsetwacom, прописал его в ~/.xinitrc. В итоге вместо окружения при загрузке я получил черный экран с мигающим курсором. Вернул ~/.xinitrc к прежнему виду, а именно:

#!/bin/sh

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then

    xrdb -merge $sysresources
fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f "$userresources" ]; then

    xrdb -merge "$userresources"

fi

if [ -f "$usermodmap" ]; then
    xmodmap "$usermodmap"
fi

# start some nice programs

setxkbmap -layout 'us,ru' -option 'grp:alt_shift_toggle'

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
 for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
  [ -x "$f" ] && . "$f"
 done
 unset f
fi

twm &
xclock -geometry 50x50-1+1 &
xterm -geometry 80x50+494+51 &
xterm -geometry 80x20+494-0 &
exec xterm -geometry 80x66+0+0 -name login &
exec openbox-session

Но это не помогло. Да, спустя день я разобрался, что вероятно twm и openbox конфликтовали, все заработало после правки ~/.xinitrc в такой вид:

#!/bin/sh

userresources=$HOME/.Xresources
usermodmap=$HOME/.Xmodmap
sysresources=/etc/X11/xinit/.Xresources
sysmodmap=/etc/X11/xinit/.Xmodmap

# merge in defaults and keymaps

if [ -f $sysresources ]; then

    xrdb -merge $sysresources

fi

if [ -f $sysmodmap ]; then
    xmodmap $sysmodmap
fi

if [ -f "$userresources" ]; then

    xrdb -merge "$userresources"

fi

if [ -f "$usermodmap" ]; then
    xmodmap "$usermodmap"
fi

# start some nice programs

setxkbmap -layout 'us,ru' -option 'grp:alt_shift_toggle'

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
 for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
  [ -x "$f" ] && . "$f"
 done
 unset f
fi

exec openbox-session

Но остались вопросы про xinitrc:

- почему первый вариант успешно работал все это время?

- правильно ли прописывать смену раскладки по setxkbmap в этом файле?

- по арчевики вообще написано «Для запуска Openbox в качестве отдельного менеджера окон файл ~/.xinitrc должен выглядеть так: exec openbox-session», что вообще должно быть в этом файле? только одна строка про openbox?

- правильно ли прописывать запуск скриптов в этом файле? вроде проблема была не в них.

Посмотрев по форуму я так понял, что мой второй вариант вроде бы рабочий, но не хотелось бы опять весь день разбираться «почему оно все поломалось, я же ничего не сделал», ведь до этого и первый вариант работал несколько месяцев.

правильно ли прописывать смену раскладки по setxkbmap в этом файле?

Правильно.

- правильно ли прописывать запуск скриптов в этом файле? вроде проблема была не в них.

это сделано для запуска программ, скрипты то зачем?

- по арчевики вообще написано «Для запуска Openbox в качестве отдельного менеджера окон файл ~/.xinitrc должен выглядеть так: exec openbox-session»

Это минимальный конфиг для старта openbox. Конечно, его надо расширять под себя.

но не хотелось бы опять весь день разбираться «почему оно все поломалось, я же ничего не сделал»

Файл выполняется последовательно. Лучше один раз потратить время и понять, чем думать, что это «магия». Вики в помощь.

Boogerman
()

Если запускаешь openbox-session в .xinitrc, приложения в автозапуске запускай в ~/.config/.openbox/autostart

#!/bin/bash

app1 &
app2 &
app3 &



либо в .xinitrc:
app1 &
app2 &
app3 &

exec openbox

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

это сделано для запуска программ, скрипты то зачем?

Спасибо, для меня это было не очевидно)

Файл выполняется последовательно. Лучше один раз потратить время и понять, чем думать, что это «магия». Вики в помощь.

Тут дело скорее в том, что по неопытности бывает сложно локализовать причину и на это времени уходит куда больше.

ordinary
() автор топика
  • по арчевики вообще написано «Для запуска Openbox в качестве отдельного менеджера окон файл ~/.xinitrc должен выглядеть так: exec openbox-session», что вообще должно быть в этом файле? только одна строка про openbox?

Если ты в xinitrc пишешь «exec openbox-session», то при старте у тебя openbox запускает то, что вписано в ~/.config/.openbox/autostart.

Соответственно, если тебе нужно запустить что-то именно для openbox, то вписываешь это в ~/.config/.openbox/autostart. Если же используешь дополнительно какой-то иной WM или DE, а команда должна быть универсальной, то логично это закинуть в xinitrc, чтобы при смене WM или DE эти команды также отрабатывались.

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

твой опыт тут не поможет. У парня проблемы, а ты ему скрипт и программа. Удачи.

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

Соответственно, если тебе нужно запустить что-то именно для openbox, то вписываешь это в ~/.config/.openbox/autostart. Если же используешь дополнительно какой-то иной WM или DE, а команда должна быть универсальной, то логично это закинуть в xinitrc, чтобы при смене WM или DE эти команды также отрабатывались.

Спасибо. Я примерно так и представлял себе этот процесс. Но на всякий случай из ~/.xinitrc убрал всё лишнее.

Впринципе всё работает сейчас, единственный момент, сбивающий с толку это http://openbox.org/wiki , где пишут:

When you run the openbox command on its own, the autostart scripts will not run. They are run by openbox-session or when you log in graphically with the «Openbox» session type.

Note: Some distributions ship an «openbox» session type (for display managers) that simply calls the openbox binary. You want to select the entry that mentions «session.»

Т.е. поставив определенный DM (или это только в определенных дистрибутивах так?) уже не получится подгрузить ~/.config/.openbox/autostart? Тогда может и в autostart всё вписывать не комильфо, и надо каким-то другим путем это делать?

Но пока не актуально, поторюсь сейчас все работает, DE нет из WM только собственно openbox.

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

он не в теме. Почитай вики. Openbox один из... Ставь всё, что считаешь нужным в .xinit и не используй ~/.config/.openbox/autostart. Этот конфиг используется с DM (lightDM и т.д.)

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

Здесь написано, что если ты запускаешь просто команду «openbox», то скрипт из autostart не запускается. Он запускается только по команде «openbox-session» (которая по сути есть скрипт, запускающий openbox с плюшками, можешь посмотреть в чем суть запустив «cat /usr/bin/openbox-session» - это опять же просто скрипт).

Т.е. поставив определенный DM (или это только в определенных дистрибутивах так?) уже не получится подгрузить ~/.config/.openbox/autostart? Тогда может и в autostart всё вписывать не комильфо, и надо каким-то другим путем это делать?

Если ты поставишь DM, который будет запускать не «openbox-session», а просто «openbox», то autostart не сработает, да. Впрочем, в нормальных дистрибутивах такого не бывает.

И да, если ты поставишь DM, то у тебя и xinitrc не сработает, ибо DM свои конфиги запуска использует.

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

Этот конфиг используется с DM (lightDM и т.д.)

xinitrc используется при инициализации DM? Дай ссылку на описание этого, плз.

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

Читать не пробовал? Что тут непонятно?

Ставь всё, что считаешь нужным в .xinit и не используй ~/.config/.openbox/autostart. Этот конфиг используется с DM (lightDM и т.д.)

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

Впрочем, в нормальных дистрибутивах такого не бывает.

И список нормальных в студию.

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

это написано в стандарте xdg. openbox умеет подгружать как из /etc/xdg/autostart так и из ~/.config/openbox/autostart.
По поводу первого вопроса из топика, то надо было посмотреть лог или выхлоп в терминале, в чем была ошибка и почему не грузился openbox. В xinitrc можно что угодно прописать. Это shell сценарий.

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

это написано в стандарте xdg. openbox умеет подгружать как из /etc/xdg/autostart так и из ~/.config/openbox/autostart.

По совету another я глянул что в openbox-session, и, как я понял, подгружает из /etc/xdg/openbox/autostart, а не /etc/xdg/autostart

По поводу первого вопроса из топика, то надо было посмотреть лог или выхлоп в терминале, в чем была ошибка и почему не грузился openbox.

Ну, в Xorg.0.log вообще никаких ошибок не было, а сам openbox ругался:

Openbox-Message: Оконный менеджер уже запущен на экране 0

вот я и решил, что из-за twm. Почему несколько месяцев этого не было для меня загадка.

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

вот я и решил, что из-за twm. Почему несколько месяцев этого не было для меня загадка.

Судя по всему это действительно было из-за другого wm. Ты уверен, что вернул xinitrc именно к исходному виду? Мне кажется, ты случайно ручками что-то сам сделал и не заметил этого. Например, раскомментировал запуск twm.

А почему ты не используешь DM? Имхо, это удобно, особенно переключаться между различными оболочками.

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

Ты уверен, что вернул xinitrc именно к исходному виду?

на 100%! понятно, что я изначально неверно прописал тот скриптик (после exec openbox-session) ну т.е. в самый конец файла, и затем просто удалил эту запись.

А почему ты не используешь DM? Имхо, это удобно, особенно переключаться между различными оболочками.

А зачем мне это? (не сарказм). Вот сейчас, одним нажатием power я загружаю систему, которая соответствует всем моим потребностям (лёгкая, красивая, отзывчивая, готовая к работе). Это и была причина перейти на arch, ну и вики с подробными инструкциями для таких вот, кто «вчера только услышал про linux»

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