Здравствуйте! unit-file:
[Unit]
Description=Script watches the events from xscreensaver and resets keyboard layout to english only on lock, and adds the ru layout back upon unblank.
# After=local-fs.target
[Service]
ExecStart=/usr/bin/xscreensaver_lock_reset_kbd_layout_to_en.pl
# Type=forking
[Install]
WantedBy=multi-user.target
Сам скрипт:
#!/usr/bin/perl
my $blanked = 0;
open (IN, "xscreensaver-command -watch |");
while (<IN>) {
if (m/^(BLANK|LOCK)/) {
if (!$blanked) {
system "DISPLAY=\":0\" setxkbmap -layout us";
$blanked = 1;
}
} elsif (m/^UNBLANK/) {
system "DISPLAY=\":0\" setxkbmap -layout us,ru";
$blanked = 0;
}
}
При этом если просто уже после логина набрать systemctl start xscreensaver_lock_reset_kbd_layout_to_en.service
, то всё работает нормально…
При этом в логах journalctl только вот это:
xscreensaver_lock_reset_kbd_layout_to_en.pl[31091]: xscreensaver-command: warning: $DISPLAY is not set: defaulting to ":0.0".