LINUX.ORG.RU

xinitrc, упорно запускает xterm а не мою прогу

 ,


0

1

В общем, собрал я в OpenEmbedded графический образ (под x86), всё запускается, OpenGL аппаратное есть, самое сложное казалось бы позади. Но я никак не могу запустить свою программу при загрузке системы, хотя важный момент в том что если я вручную пишу startx, то оно таки уважает мою волю и запускает что надо:

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

[b]run_mysoft[/b]
, правда при этом стартует второй X-сервер (то ли просто экран), а первый xterm всё же висит на одной из консолей.

Пробовал я модифицировать и startx:

userserverrc=$HOME/.xserverrc
sysserverrc=/etc/X11/xinit/xserverrc
[b]defaultclient=run_mysoft[/b]
defaultserver=/usr/bin/X
defaultclientargs=""
и результат тот же нулевой...

Вопрос прост: как заставить иксы грузить мою программу при старте системы, чтобы без всяких менеджеров окон? Тупо программа. Причем, важный момент, у меня нет пользователей в системе, только root и нету ~/.xinitrc.

Хотя тут же догадка - а что если /home/root/.xinitrc? Оно будет стартовать мою программу в монопольном режиме, чтобы без всяких там менеджеров окон и xterm-ов?

Не могу понять, откуда этот ненавистный xterm всё время пролазит...

P.S. run_mysoft - скрипт, запускает программу...

★★★★★

Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

cat > .xsession
exec run_mysoft
^D
Deleted
()
Ответ на: комментарий от leonidko

И что за [b][/b]?

Это сила пяти звёзд.

anonymous
()

Хотя тут же догадка - а что если /home/root/.xinitrc? Оно будет стартовать мою программу в монопольном режиме, чтобы без всяких там менеджеров окон и xterm-ов?

Бинго.

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

Хотя от рута что-то в иксах запускать — фу таким быть.

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

Это не работает. Я про «/home/root/.xinitrc». Всё равно запускается xterm.

Неужели такая примитивщина как запуск своей программы при старте иксов - является такой проблемой? Неужели это не тривиально?

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Неужели такая примитивщина как запуск своей программы при старте иксов - является такой проблемой? Неужели это не тривиально?

Для тех кто не понимает что пишет, всё может и будет нетривиальной проблемой.

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

Хорошо. Есть X11, оно стартует. Запускается xterm. Какую строчку в каком файле заменить, чтобы вместо xterm запускалась моя программа? Не делать же мне xterm симлинком на run_mysoft...

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Есть X11, оно стартует. Запускается xterm.

стартует через startx?

.xinitrc

$WINDOWMANAGER &
/path/to/your/application

или

/path/to/your/application &
$WINDOWMANAGER

Разница в выходе из Х-ов.
sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от sdio

стартует через startx?

Я, честно говоря, не знаю через что оно стартует...

Модифицировал вручную в /etc/X11/xinit/xinitrc и дописал в конце:

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

run_mysoft
и когда я вызываю startx из консоли - запускается сервер, прямо сразу с моей программой и без всяких WINDOWMANAGER.

Но суть в том что моя система собрана при помощи OpenEmbedded и при запуске системы я попадаю сразу в xterm. Но ведь /etc/X11/xinit/xinitrc оно подхватывает когда пишешь startx. А почему при запуске системы оно туда не смотрит???

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Очевидно, нужно убрать exec с предыдущей строчки

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

О, это уже интереснее. А если иксы стартуют автоматом (точно не знаю как в OpenEmbedded, буду разбираться если потребуется) - то откуда они берут указания что запускать?

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Если используется какой-нибудь DM для запуска иксов, то файл xinitrc игнорируется. У каждого DM есть свои настройки в отдельных файлах.

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

Накатил OpenBox, в /etc/xdg/openbox/autostart лежит:

...
# If you want to use XFCE config tools...
#
#xfce-mcs-manager &
run_mysoft
и всё равно xterm. Если в этом xterm вызвать openbox, то ошибка такая:
Openbox-Message: A windows manager is already running on screen 0

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от I-Love-Microsoft

Значит у тебя установлен какой-то DM, который запускает xterm. Лично я советую запускать систему через startx. Удили DM, чтобы система после старта запускалась только в консоль, в xinitrc допиши свой оконный менеджер, например exec openbox, и запускай командой startx.

Вот например мой 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
nm-applet --sm-disable &
blueman-applet --sm-disable &
dropboxd &
conky &
qxkb &
xfce4-power-manager &
/usr/bin/xscreensaver -no-splash &
nitrogen --restore &
if [ -d /etc/X11/xinit/xinitrc.d ] ; then
	for f in /etc/X11/xinit/xinitrc.d/* ; do
		[ -x "$f" ] && . "$f"
	done
	unset f
fi
exec awesome

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

Значит у тебя установлен какой-то DM, который запускает xterm. Лично я советую запускать систему через startx. Удили DM, чтобы система после старта запускалась только в консоль, в xinitrc допиши свой оконный менеджер, например exec openbox, и запускай командой startx.

Не, не установлен:

DESCRIPTION = "My custom image"

IMAGE_INSTALL = "packagegroup-core-boot ${ROOTFS_PKGMANAGE_BOOTSTRAP} ${CORE_IMAGE_EXTRA_INSTALL}"
IMAGE_FEATURES += "splash package-management x11-base"

IMAGE_LINGUAS = " "
LICENSE = "MIT"
inherit core-image distro_features_check
REQUIRED_DISTRO_FEATURES = "x11"
IMAGE_ROOTFS_SIZE = "65536"
ROOTFS_POSTPROCESS_COMMAND += "remove_packaging_data_files ; "
IMAGE_FSTYPES += " cpio.gz "

IMAGE_INSTALL += " openbox mysoft ldd mesa-demos quicky mc dropbear htop pciutils usbutils bash "

IMAGE_INSTALL += " qt4-plugin-phonon-backend-gstreamer libav "

IMAGE_INSTALL += " gst-plugins-good-avi gst-fluendo-mp3 gst-fluendo-mpegdemux gst-plugins-gl gst-meta-base gstreamer gst-ffmpeg gst-plugins-base gst-plugins-good gst-plugins-bad gst-plugins-ugly "
тут нет ничего кроме openbox, а до добавления IMAGE_INSTALL += " openbox и тем более не было.

Но мысль я понял, спасибо! Поищу в процессах что оно там могло вообще запустить, может в самом деле какую-то каку подсовывает.

И вопрос - если через startx, то это вручную? Мне надо автоматизированно.

I-Love-Microsoft ★★★★★
() автор топика
Ответ на: комментарий от dikiy

Это запустит сервер на втором экране или где там, придется Alt+Ctrl+Fn переключаться руками.

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

Просто взять и заставить грузить мою программу при загрузке иксов вместо Unity того же, например, в той же бубунте - ноль проблем, сто раз так делал...

Вся суть что в OpenEmbedded там что-то нахимичили по этой теме...

I-Love-Microsoft ★★★★★
() автор топика
Последнее исправление: I-Love-Microsoft (всего исправлений: 3)
Ответ на: комментарий от I-Love-Microsoft

Это запустит сервер на втором экране или где там, придется Alt+Ctrl+Fn переключаться руками.

неправда. У меня так - и все работает без вторых экранов.

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

Просто суть в том что все мои попытки сделать этот startx всегда приводил к такому результату, а убрать xterm я бы рад, но увы - это и есть суть проблемы. Подозреваю что bashrc сделать то же самое, но разумеется попробую!

И... еще проблема, bash в систему я добавил, надо еще понять как сделать bash интерпретатором по умолчанию не через команды а конфиги, чтобы это осело в образе...

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

помоему - надо смотреть что делает /etc/X11/xinit/xinitrc. Например в Федоре есть такое:

# The user may have their own clients they want to run.  If they don't,
# fall back to system defaults.
if [ -f $HOME/.Xclients ]; then
    exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients || \
    exec $CK_XINIT_SESSION $SSH_AGENT $HOME/.Xclients
elif [ -f /etc/X11/xinit/Xclients ]; then
    exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients || \
    exec $CK_XINIT_SESSION $SSH_AGENT /etc/X11/xinit/Xclients
else
    # Failsafe settings.  Although we should never get here
    # (we provide fallbacks in Xclients as well) it can't hurt.
    [ -x /usr/bin/xsetroot ] && /usr/bin/xsetroot -solid '#222E45'
    [ -x /usr/bin/xclock ] && /usr/bin/xclock -geometry 100x100-5+5 &
    [ -x /usr/bin/xterm ] && xterm -geometry 80x50-50+150 &
    [ -x /usr/bin/twm ] && /usr/bin/twm
fi

те. если не нашлись пользовательские или системные конфиги - то запускается twm c xterm и часами.

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

да и конфиги рута живут в /root а не /home/root

sigurd ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Модифицировал вручную в /etc/X11/xinit/xinitrc

Файлы в /etc/ трогать не надо. Это системные файлы, а не пользовательские. К тому же без должной проверки они у тебя могут слететь в дефолт при первом же апдейте. Единственный конфиг в /etc/X11/, который не заменить на пользовательский — это xorg.conf. Пользователь может выбрать имя конфига из /etc/X11 в качестве xorg.conf, но не может положить xorg.conf себе в хоумпапку, это, наверно, единственный пункт, мешающий перенести всю конфигурацию на сторону пользователя.

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