LINUX.ORG.RU

автостарт numlockx на экране входа в AltLinux (Mate)

 , , ,


1

2

не помогло:

# cat /etc/systemd/system/numlockx.service
[Unit]
Description=numlock

[Service]
ExecStart=/usr/local/bin/numlock
StandardInput=tty
RemainAfterExit=yes

[Install]


# systemctl enable numlockx

# reboot

# systemctl status numlockx
numlockx.service - numlock
   Loaded: loaded (/etc/systemd/system/numlockx.service; enabled)
   Active: active (exited) (Result: exit-code) since Ср 2018-08-22 16:58:20 MSK; 50s ago
  Process: 548 ExecStart=/usr/local/bin/numlock (code=exited, status=203/EXEC)

также не помогло добавление строки /usr/bin/numlockx в файлы /etc/rc.d/scripts/first_time и /etc/rc.d/rc

ExecStart=/usr/local/bin/numlock

Программа, вроде, numlockx называется? Это во-первых.

Во-вторых, что ты называешь «экраном входа»? Ты хочешь запустить программу после твоего логина в графическую сессию? Системд для этого не подходит.

debugger ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

Системд для этого не подходит.

Подходит. Можно сервисы запускать для пользователя.

Не подходит. Утилиты, требующие иксов, не так-то просто запустить только после иксов, а победить рестрикшоны — вообще невозможно.

r3lgar ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

Подходит. Можно сервисы запускать для пользователя.

Я даже тебе ссылку на ман дам: graphical-session.target. Нарисуй юнит, который просит ТС, а я поучусь. Только чтоб работал. Скажешь, в каком дистре тебе удалось этого добиться.

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

Очень просто, ждём появления /tmp/.X0-lock и после этого запускаем. Или если без хаков, то ждём срабатывания XOpenDisplay().

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

исправлено, но все равно на экране входа в Mate numlock не включен, как и всегда

# whereis numlockx
numlockx: /usr/bin/numlockx


# cat /etc/systemd/system/numlockx.service 
[Unit]
Description=numlockx

[Service]
ExecStart=/usr/bin/numlockx
StandardInput=tty
RemainAfterExit=yes

[Install]
WantedBy=multi-user.target



# reboot


# systemctl status numlockx
numlockx.service - numlockx
   Loaded: loaded (/etc/systemd/system/numlockx.service; enabled)
   Active: active (exited) (Result: exit-code) since Чт 2018-08-23 08:09:56 MSK; 7min ago
  Process: 514 ExecStart=/usr/bin/numlockx (code=exited, status=1/FAILURE)

авг 23 08:09:56 comp-core-i5-3317u-01e288.localdomain systemd[1]: Starting numlockx...
авг 23 08:09:56 comp-core-i5-3317u-01e288.localdomain systemd[1]: Started numlockx.
авг 23 08:12:38 comp-core-i5-3317u-01e288.localdomain systemd[1]: Started numlockx.
авг 23 08:12:45 comp-core-i5-3317u-01e288.localdomain systemd[1]: Started numlockx.

может быть, надо исправть wanted-by? как сделать, чтобы numlock включался сам при загрузке и был включен при вводе пароля в mate?

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

В теории-то оно так, а вот на практике всплывает дичь.

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

подскажите, как узнать dm? в /etc/X11/Xsession непонятно, и в /etc/X11/xdm/Xsession тоже не написано.

Вообще, хотелось бы теории о том, что после чего стартует в Х-сервере.

# cat /etc/X11/xdm/Xsession
#!/bin/bash -login



# cat /etc/X11/Xsession
...
...
# Source shell scripts from user ~/.xprofile
SourceIfNotEmpty "$HOME"/.xprofile "$@"

# Run system scripts from /etc/X11/xinit.d/
for f in /etc/X11/xinit.d/*; do
	# Don't run *.rpm* and *~ scripts
	[ "${f%.rpm*}" = "$f" -a "${f%\~}" = "$f" ] || continue

	if [ -x "$f" ]; then
		"$f" &
	fi
done
...

Я вставил, сделал исполняемым, но не работает скрипт в /etc/X11/xinit.d :

# cat /etc/X11/xinit.d/numlockx.sh 
#!/bin/sh
/usr/bin/numlockx


# ls -la /etc/X11/xinit.d
итого 24
drwxr-xr-x  2 root root 4096 авг 22 16:25 .
drwxr-xr-x 17 root root 4096 авг  6 14:50 ..
-rwxr-xr-x  1 root root 1530 июл 22  2017 98vboxadd-xclient
-rwxr-xr-x  1 root root  438 апр 17  2013 menu
-rwxr-xr-x  1 root root  435 окт 24  2016 Mod_Meta_L_Disable
-rwxr-xr-x  1 root root   27 апр 17  2013 numlockx.sh

comoestasyan
() автор топика
Ответ на: комментарий от comoestasyan
$ cat .xsession
xrandr --output HDMI-1 --mode 1920x1200 --pos 1920x0 --rotate normal \
--output HDMI-2 --mode 1920x1200 --pos 0x0 --rotate normal \
--output DP-2 --off \
--output DP-1 --off \
--output VGA-1 --off
xscreensaver -no-splash -no-capture-stderr &
bbkeys &
uxterm -geometry 80x24+0+24 &
numlockx on &
blackbox
imb ★★
()
Ответ на: комментарий от imb

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

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

Этот юнит работать как надо не будет. WantedBy=multi-user.target может запустить его *до* графической сессии. Что, скорее всего, и случается, судя по:

 Process: 514 ExecStart=/usr/bin/numlockx (code=exited, status=1/FAILURE)

А numlockx по очевидным причинам работает только в иксах.

Как я понял (хоть ты и не ответил прямо на мой вопрос), ты хочешь чтобы нум лок был включён уже при вводе пароля. Это значит, что включать его надо либо в GDM (или какой там у тебя дисплей манагер?), или ещё раньше. Я этим никогда не заморачивался (у меня нум лок и так включен), но я бы попробовал

setleds -D +num 

Только запустить его надо *до* старта GDM. Попробуй добавить что-нить типа

Before = graphical.target

в секцию [Unit] твоего юнита.

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

gsetting тебе помочь не может, поскольку эта хрень будет работать при старте твоей графической сессии, то есть *после* ввода пароля.

debugger ★★★★★
()
Ответ на: комментарий от Vovka-Korovka

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

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