LINUX.ORG.RU

Как добавить скрипт в OpenRC для запуска после старта иксов?

 , ,


0

1

Дистрибутив - Funtoo-current. Хочу запускать команду:
xrandr --setprovideroffloadsink 0x4f 0x78
При запуске системы. Я так понимаю, что эту команду надо запускать после старта иксов. Почитал вики генты. Добавил в файл /etc/conf.d/HybridGraphics строку rc_need=«xdm». А в /etc/init.d/HybridGraphics :

#!/sbin/runscript
# Copyright 1999-2016 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Id$

depend() {
need xdm
}

start() {
xrandr --setprovideroffloadsink 0x4f 0x78
}

stop() {

}
сделал исполняемым, добавил в runlevel default. Но всё равно после запуска:
DRI_PRIME=1 glxinfo | grep «OpenGL renderer»
OpenGL renderer string: Mesa DRI Intel(R) Haswell Mobile

Как правильно добавить скрипт для запуска после старта иксов?

почему бы не запускать это из xinitrc?

anonymous
()

Initscript в данном случае не нужен. Кури как запускаются иксы. xinitrc аноним тебе уже предложил, рекомендую еще просмотреть скрипты в /etc/X11

Pinkbyte ★★★★★
()

Или более простой вариант: записать это в файл и стартовать этот файл средствамм ДЕ при его запуске.

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

Добавление этой строки в xinitrc ничего не дало. Возможно сразу надо было уточнить. Я использую KDE5.

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

Попробовал добавить скрипт с этой командой в автозапуск в кде, но не срабатывает. Даже не знаю как быть...

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

Кстати, вместо написания своего сервиса в openRC (Написать легко, но скрипт потом как то правильно зарегистрировать надо), рекомендуется написать скрипт /etc/local.d/rc.start и /etc/local.d/rc.stop. Они исполняются соответственно при старте и остановке /etc/init.d/local

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

Написать легко, но скрипт потом как то правильно зарегистрировать надо

да ничего регистрировать не надо. скрипт должен быть правильный. загоняешь на нужный runlevel и всё.

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

Пробовал, однако. Файл лежит, если вызывать его вручную, то работает. Но rc-update его в упор не видит и довавить в ранлевел не может.

В гентовой вике рекомендуют использовать именно /etc/local.d/, и видимо есть какая то веская причина.

kirill_rrr ★★★★★
()

А к какому X сервуру конектится xrandr в вашем скрипте ? Переменная DISPLAY выставлена ?

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

Так снимай отладочный лог. Может у тебя xinitrc и не вызывается

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

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

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

Пробовал добавить в local.d, тоже не сработало.

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

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

$ echo $DISPLAY
:0

flyshoot
() автор топика

Если у тебя действительно xdm то все эти штуки надо добавлять в /etc/X11/xdm/Xsetup. Для других DM есть аналогичные скриптики типа /etc/kde/kdm/Xsetup.

Оно запускается после старта X-ов но перед появлением логина или перед автологином если настроен автологин.

# Xsetup - run as root before the login dialog appears
Stanson ★★★★★
()
Ответ на: комментарий от flyshoot

Ну я догадываюсь что только один, но вот инит скрипты не догадываются. Изначално переменной DISPLAY нету, ее устанавливает сам X11 сервер и она есть только у процессов которые были запущене самим X11 сервером. Попробуйте переключится в ASCII консоль (Ctrl + Alt + F1) и там у вас никакой переменной DISPLAY быть не должно. А соотвецтвенно любая программа которая взаимодействует с X11 сервером (например xrandr) - работать не будет.

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

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

flyshoot
() автор топика

В арчвики по прайу рекомендуют заветную команду поместить в xinitrc, у меня не сработало, наверное потому что я использую не просто голые иксы, а kde с sddm и xinitrc, наверное, просто не запускается. А автостарт скрипта с командой в kde не сработало похоже из-за этой бага. Получилось запустить нужную команду создав в ~/.config/autostart файла .desktop с нужной командой. Спасибо всем за помощь.

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