You are not logged in.
Pages: 1
Hi Archers,
is there any way to prompt the language selection during the boot through systemd ?
Something like this:
Thanks in advance
Last edited by danfossi (2014-09-22 12:09:44)
Offline
The screenshot is taken from where?
Do you want to select the language (as indicated by your text), or the keymap (as indicated by the screenshot)?
You have to take into account that languages must be uncommented in /etc/locale.gen and generated before they can be used, unlike keymaps.
Offline
Hi teateawhy
The screenshot is taken from the selector SystemRescueCD, it would be sufficient to make the load of the keymap.
It does not matter if the locale.gen is changed after the user's choice and then run "locale-gen" or if all items were first uncomment and the user should only select the appropriate keymap.
Offline
You can't use a locale unless it's been enabled (generated) first.
Offline
You can't use a locale unless it's been enabled (generated) first.
Yes, I know this! In fact, as I said before, there would be no problem to generate all the locales and then let the user choose the correct one.
In any case, you might still choose to use the local via script, and then generate it based on your selection using the local-gen.
Offline
Some little progress:
#!/bin/bash
arr=($(localectl list-x11-keymap-layouts | sed 's#nec_vndr/jp##g'))
for value in "${arr[@]}"; do
printf "$((++i)): %-8s\n" "${value}"
done | column
for (( i=30; i>0; i--)); do
printf "\rPlease select a keymap in $i seconds and hit Enter to continue: "
read -s -n 2 -t 1 key
if [ $? -eq 0 ]
then
break
fi
done
echo
echo $key
Any ideas on how to generate then load keymap from this list ?
Offline
Hi Archers,
with the help of keyboardctl from Manjaro's Team I've almost found a solution:
* Install keyboardctl
* Create this script: keymap_selection.sh
#!/bin/bash
arr=($(localectl list-x11-keymap-layouts | sed 's#nec_vndr/jp##g'))
echo "Keymap selection.."
echo
for value in "${arr[@]}"; do
printf "$((++i)): %-8s\n" "${value}"
done | column
echo
for (( i=10; i>0; i--)); do
printf "\rEnter keymap or number in $i second(s) and hit Enter to continue: "
read -s -n 5 -t 2 keymap
if [ $? -eq 0 ]
then
break
fi
done
echo
if [ -z $keymap ]; then
echo "Keymap not selected.. setting Italian as default!"
keymap="it"
sed -i '/^XKBLAYOUT/d' /etc/keyboard.conf
echo XKBLAYOUT="it" >> /etc/keyboard.conf
keyboardctl -s
else
echo "Your choice is: $keymap"
sed -i '/^XKBLAYOUT/d' /etc/keyboard.conf
sed -i '/^XKBLAYOUT/d' /etc/keyboard.conf
case "${keymap}" in
af|1)
echo XKBLAYOUT="af" >> /etc/keyboard.conf
;;
al|2)
echo XKBLAYOUT="al" >> /etc/keyboard.conf
;;
am|3)
echo XKBLAYOUT="am" >> /etc/keyboard.conf
;;
ara|4)
echo XKBLAYOUT="ara" >> /etc/keyboard.conf
;;
at|5)
echo XKBLAYOUT="at" >> /etc/keyboard.conf
;;
az|6)
echo XKBLAYOUT="az" >> /etc/keyboard.conf
;;
ba|7)
echo XKBLAYOUT="ba" >> /etc/keyboard.conf
;;
bd|8)
echo XKBLAYOUT="bd" >> /etc/keyboard.conf
;;
be|9)
echo XKBLAYOUT="be" >> /etc/keyboard.conf
;;
bg|10)
echo XKBLAYOUT="bg" >> /etc/keyboard.conf
;;
br|11)
echo XKBLAYOUT="br" >> /etc/keyboard.conf
;;
brai|12)
echo XKBLAYOUT="brai" >> /etc/keyboard.conf
;;
bt|13)
echo XKBLAYOUT="bt" >> /etc/keyboard.conf
;;
bw|14)
echo XKBLAYOUT="bw" >> /etc/keyboard.conf
;;
by|15)
echo XKBLAYOUT="by" >> /etc/keyboard.conf
;;
ca|16)
echo XKBLAYOUT="ca" >> /etc/keyboard.conf
;;
cd|17)
echo XKBLAYOUT="cd" >> /etc/keyboard.conf
;;
ch|18)
echo XKBLAYOUT="ch" >> /etc/keyboard.conf
;;
cm|19)
echo XKBLAYOUT="cm" >> /etc/keyboard.conf
;;
cn|20)
echo XKBLAYOUT="cn" >> /etc/keyboard.conf
;;
cz|21)
echo XKBLAYOUT="cz" >> /etc/keyboard.conf
;;
de|22)
echo XKBLAYOUT="de" >> /etc/keyboard.conf
;;
dk|23)
echo XKBLAYOUT="dk" >> /etc/keyboard.conf
;;
ee|24)
echo XKBLAYOUT="ee" >> /etc/keyboard.conf
;;
epo|25)
echo XKBLAYOUT="epo" >> /etc/keyboard.conf
;;
es|26)
echo XKBLAYOUT="es" >> /etc/keyboard.conf
;;
et|27)
echo XKBLAYOUT="et" >> /etc/keyboard.conf
;;
fi|28)
echo XKBLAYOUT="fi" >> /etc/keyboard.conf
;;
fo|29)
echo XKBLAYOUT="fo" >> /etc/keyboard.conf
;;
fr|30)
echo XKBLAYOUT="fr" >> /etc/keyboard.conf
;;
gb|31)
echo XKBLAYOUT="gb" >> /etc/keyboard.conf
;;
ge|32)
echo XKBLAYOUT="ge" >> /etc/keyboard.conf
;;
gh|33)
echo XKBLAYOUT="gh" >> /etc/keyboard.conf
;;
gn|34)
echo XKBLAYOUT="gn" >> /etc/keyboard.conf
;;
gr|35)
echo XKBLAYOUT="gr" >> /etc/keyboard.conf
;;
hr|36)
echo XKBLAYOUT="hr" >> /etc/keyboard.conf
;;
hu|37)
echo XKBLAYOUT="hu" >> /etc/keyboard.conf
;;
ie|38)
echo XKBLAYOUT="ie" >> /etc/keyboard.conf
;;
il|39)
echo XKBLAYOUT="il" >> /etc/keyboard.conf
;;
in|40)
echo XKBLAYOUT="in" >> /etc/keyboard.conf
;;
iq|41)
echo XKBLAYOUT="iq" >> /etc/keyboard.conf
;;
ir|42)
echo XKBLAYOUT="ir" >> /etc/keyboard.conf
;;
is|43)
echo XKBLAYOUT="is" >> /etc/keyboard.conf
;;
it|44)
echo XKBLAYOUT="it" >> /etc/keyboard.conf
;;
jp|45)
echo XKBLAYOUT="jp" >> /etc/keyboard.conf
;;
ke|46)
echo XKBLAYOUT="ke" >> /etc/keyboard.conf
;;
kg|47)
echo XKBLAYOUT="kg" >> /etc/keyboard.conf
;;
kh|48)
echo XKBLAYOUT="kh" >> /etc/keyboard.conf
;;
kr|49)
echo XKBLAYOUT="kr" >> /etc/keyboard.conf
;;
kz|50)
echo XKBLAYOUT="kz" >> /etc/keyboard.conf
;;
la|51)
echo XKBLAYOUT="la" >> /etc/keyboard.conf
;;
latam|52)
echo XKBLAYOUT="latam" >> /etc/keyboard.conf
;;
lk|53)
echo XKBLAYOUT="lk" >> /etc/keyboard.conf
;;
lt|54)
echo XKBLAYOUT="lt" >> /etc/keyboard.conf
;;
lv|55)
echo XKBLAYOUT="lv" >> /etc/keyboard.conf
;;
ma|56)
echo XKBLAYOUT="ma" >> /etc/keyboard.conf
;;
mao|57)
echo XKBLAYOUT="mao" >> /etc/keyboard.conf
;;
md|58)
echo XKBLAYOUT="md" >> /etc/keyboard.conf
;;
me|59)
echo XKBLAYOUT="me" >> /etc/keyboard.conf
;;
mk|60)
echo XKBLAYOUT="mk" >> /etc/keyboard.conf
;;
ml|61)
echo XKBLAYOUT="ml" >> /etc/keyboard.conf
;;
mm|62)
echo XKBLAYOUT="mm" >> /etc/keyboard.conf
;;
mn|63)
echo XKBLAYOUT="mn" >> /etc/keyboard.conf
;;
mt|64)
echo XKBLAYOUT="mt" >> /etc/keyboard.conf
;;
mv|65)
echo XKBLAYOUT="mv" >> /etc/keyboard.conf
;;
ng|66)
echo XKBLAYOUT="ng" >> /etc/keyboard.conf
;;
nl|67)
echo XKBLAYOUT="nl" >> /etc/keyboard.conf
;;
no|68)
echo XKBLAYOUT="no" >> /etc/keyboard.conf
;;
np|69)
echo XKBLAYOUT="np" >> /etc/keyboard.conf
;;
ph|70)
echo XKBLAYOUT="ph" >> /etc/keyboard.conf
;;
pk|71)
echo XKBLAYOUT="pk" >> /etc/keyboard.conf
;;
pl|72)
echo XKBLAYOUT="pl" >> /etc/keyboard.conf
;;
pt|73)
echo XKBLAYOUT="pt" >> /etc/keyboard.conf
;;
ro|74)
echo XKBLAYOUT="ro" >> /etc/keyboard.conf
;;
rs|75)
echo XKBLAYOUT="rs" >> /etc/keyboard.conf
;;
ru|76)
echo XKBLAYOUT="ru" >> /etc/keyboard.conf
;;
se|77)
echo XKBLAYOUT="se" >> /etc/keyboard.conf
;;
si|78)
echo XKBLAYOUT="si" >> /etc/keyboard.conf
;;
sk|79)
echo XKBLAYOUT="sk" >> /etc/keyboard.conf
;;
sn|80)
echo XKBLAYOUT="sn" >> /etc/keyboard.conf
;;
sy|81)
echo XKBLAYOUT="sy" >> /etc/keyboard.conf
;;
th|82)
echo XKBLAYOUT="th" >> /etc/keyboard.conf
;;
tj|83)
echo XKBLAYOUT="tj" >> /etc/keyboard.conf
;;
tm|84)
echo XKBLAYOUT="tm" >> /etc/keyboard.conf
;;
tr|85)
echo XKBLAYOUT="tr" >> /etc/keyboard.conf
;;
tw|86)
echo XKBLAYOUT="tw" >> /etc/keyboard.conf
;;
tz|87)
echo XKBLAYOUT="tz" >> /etc/keyboard.conf
;;
ua|88)
echo XKBLAYOUT="ua" >> /etc/keyboard.conf
;;
us|89)
echo XKBLAYOUT="us" >> /etc/keyboard.conf
;;
uz|90)
echo XKBLAYOUT="uz" >> /etc/keyboard.conf
;;
vn|91)
echo XKBLAYOUT="vn" >> /etc/keyboard.conf
;;
za|92)
echo XKBLAYOUT="za" >> /etc/keyboard.conf
;;
*)
echo XKBLAYOUT="it" >> /etc/keyboard.conf
;;
esac
#Load Selected Keymap
sleep 1
keyboardctl -s
fi
* Load script via systemd (currently working on)
* Run keyboardctl.service after the execution of keymap_selection.sh
Offline
Solution Found:
* Install keyboardctl
* Create /bin/keymap_selection.sh
#!/bin/bash
arr=($(localectl list-x11-keymap-layouts | sed 's#nec_vndr/jp##g'))
echo "Keymap selection.."
echo
for value in "${arr[@]}"; do
printf "$((++i)): %-8s\n" "${value}"
done | column
echo
for (( i=10; i>0; i--)); do
printf "\rEnter keymap or number in $i second(s) and hit Enter to continue: "
read -s -n 5 -t 2 keymap
if [ $? -eq 0 ]
then
break
fi
done
echo
if [ -z $keymap ]; then
echo "Keymap not selected.. setting Italian as default!"
keymap="it"
sed -i '/^XKBLAYOUT/d' /etc/keyboard.conf
echo XKBLAYOUT="it" >> /etc/keyboard.conf
keyboardctl -s
else
echo "Your choice is: $keymap"
sed -i '/^XKBLAYOUT/d' /etc/keyboard.conf
sed -i '/^XKBLAYOUT/d' /etc/keyboard.conf
case "${keymap}" in
af|1)
echo XKBLAYOUT="af" >> /etc/keyboard.conf
;;
al|2)
echo XKBLAYOUT="al" >> /etc/keyboard.conf
;;
am|3)
echo XKBLAYOUT="am" >> /etc/keyboard.conf
;;
ara|4)
echo XKBLAYOUT="ara" >> /etc/keyboard.conf
;;
at|5)
echo XKBLAYOUT="at" >> /etc/keyboard.conf
;;
az|6)
echo XKBLAYOUT="az" >> /etc/keyboard.conf
;;
ba|7)
echo XKBLAYOUT="ba" >> /etc/keyboard.conf
;;
bd|8)
echo XKBLAYOUT="bd" >> /etc/keyboard.conf
;;
be|9)
echo XKBLAYOUT="be" >> /etc/keyboard.conf
;;
bg|10)
echo XKBLAYOUT="bg" >> /etc/keyboard.conf
;;
br|11)
echo XKBLAYOUT="br" >> /etc/keyboard.conf
;;
brai|12)
echo XKBLAYOUT="brai" >> /etc/keyboard.conf
;;
bt|13)
echo XKBLAYOUT="bt" >> /etc/keyboard.conf
;;
bw|14)
echo XKBLAYOUT="bw" >> /etc/keyboard.conf
;;
by|15)
echo XKBLAYOUT="by" >> /etc/keyboard.conf
;;
ca|16)
echo XKBLAYOUT="ca" >> /etc/keyboard.conf
;;
cd|17)
echo XKBLAYOUT="cd" >> /etc/keyboard.conf
;;
ch|18)
echo XKBLAYOUT="ch" >> /etc/keyboard.conf
;;
cm|19)
echo XKBLAYOUT="cm" >> /etc/keyboard.conf
;;
cn|20)
echo XKBLAYOUT="cn" >> /etc/keyboard.conf
;;
cz|21)
echo XKBLAYOUT="cz" >> /etc/keyboard.conf
;;
de|22)
echo XKBLAYOUT="de" >> /etc/keyboard.conf
;;
dk|23)
echo XKBLAYOUT="dk" >> /etc/keyboard.conf
;;
ee|24)
echo XKBLAYOUT="ee" >> /etc/keyboard.conf
;;
epo|25)
echo XKBLAYOUT="epo" >> /etc/keyboard.conf
;;
es|26)
echo XKBLAYOUT="es" >> /etc/keyboard.conf
;;
et|27)
echo XKBLAYOUT="et" >> /etc/keyboard.conf
;;
fi|28)
echo XKBLAYOUT="fi" >> /etc/keyboard.conf
;;
fo|29)
echo XKBLAYOUT="fo" >> /etc/keyboard.conf
;;
fr|30)
echo XKBLAYOUT="fr" >> /etc/keyboard.conf
;;
gb|31)
echo XKBLAYOUT="gb" >> /etc/keyboard.conf
;;
ge|32)
echo XKBLAYOUT="ge" >> /etc/keyboard.conf
;;
gh|33)
echo XKBLAYOUT="gh" >> /etc/keyboard.conf
;;
gn|34)
echo XKBLAYOUT="gn" >> /etc/keyboard.conf
;;
gr|35)
echo XKBLAYOUT="gr" >> /etc/keyboard.conf
;;
hr|36)
echo XKBLAYOUT="hr" >> /etc/keyboard.conf
;;
hu|37)
echo XKBLAYOUT="hu" >> /etc/keyboard.conf
;;
ie|38)
echo XKBLAYOUT="ie" >> /etc/keyboard.conf
;;
il|39)
echo XKBLAYOUT="il" >> /etc/keyboard.conf
;;
in|40)
echo XKBLAYOUT="in" >> /etc/keyboard.conf
;;
iq|41)
echo XKBLAYOUT="iq" >> /etc/keyboard.conf
;;
ir|42)
echo XKBLAYOUT="ir" >> /etc/keyboard.conf
;;
is|43)
echo XKBLAYOUT="is" >> /etc/keyboard.conf
;;
it|44)
echo XKBLAYOUT="it" >> /etc/keyboard.conf
;;
jp|45)
echo XKBLAYOUT="jp" >> /etc/keyboard.conf
;;
ke|46)
echo XKBLAYOUT="ke" >> /etc/keyboard.conf
;;
kg|47)
echo XKBLAYOUT="kg" >> /etc/keyboard.conf
;;
kh|48)
echo XKBLAYOUT="kh" >> /etc/keyboard.conf
;;
kr|49)
echo XKBLAYOUT="kr" >> /etc/keyboard.conf
;;
kz|50)
echo XKBLAYOUT="kz" >> /etc/keyboard.conf
;;
la|51)
echo XKBLAYOUT="la" >> /etc/keyboard.conf
;;
latam|52)
echo XKBLAYOUT="latam" >> /etc/keyboard.conf
;;
lk|53)
echo XKBLAYOUT="lk" >> /etc/keyboard.conf
;;
lt|54)
echo XKBLAYOUT="lt" >> /etc/keyboard.conf
;;
lv|55)
echo XKBLAYOUT="lv" >> /etc/keyboard.conf
;;
ma|56)
echo XKBLAYOUT="ma" >> /etc/keyboard.conf
;;
mao|57)
echo XKBLAYOUT="mao" >> /etc/keyboard.conf
;;
md|58)
echo XKBLAYOUT="md" >> /etc/keyboard.conf
;;
me|59)
echo XKBLAYOUT="me" >> /etc/keyboard.conf
;;
mk|60)
echo XKBLAYOUT="mk" >> /etc/keyboard.conf
;;
ml|61)
echo XKBLAYOUT="ml" >> /etc/keyboard.conf
;;
mm|62)
echo XKBLAYOUT="mm" >> /etc/keyboard.conf
;;
mn|63)
echo XKBLAYOUT="mn" >> /etc/keyboard.conf
;;
mt|64)
echo XKBLAYOUT="mt" >> /etc/keyboard.conf
;;
mv|65)
echo XKBLAYOUT="mv" >> /etc/keyboard.conf
;;
ng|66)
echo XKBLAYOUT="ng" >> /etc/keyboard.conf
;;
nl|67)
echo XKBLAYOUT="nl" >> /etc/keyboard.conf
;;
no|68)
echo XKBLAYOUT="no" >> /etc/keyboard.conf
;;
np|69)
echo XKBLAYOUT="np" >> /etc/keyboard.conf
;;
ph|70)
echo XKBLAYOUT="ph" >> /etc/keyboard.conf
;;
pk|71)
echo XKBLAYOUT="pk" >> /etc/keyboard.conf
;;
pl|72)
echo XKBLAYOUT="pl" >> /etc/keyboard.conf
;;
pt|73)
echo XKBLAYOUT="pt" >> /etc/keyboard.conf
;;
ro|74)
echo XKBLAYOUT="ro" >> /etc/keyboard.conf
;;
rs|75)
echo XKBLAYOUT="rs" >> /etc/keyboard.conf
;;
ru|76)
echo XKBLAYOUT="ru" >> /etc/keyboard.conf
;;
se|77)
echo XKBLAYOUT="se" >> /etc/keyboard.conf
;;
si|78)
echo XKBLAYOUT="si" >> /etc/keyboard.conf
;;
sk|79)
echo XKBLAYOUT="sk" >> /etc/keyboard.conf
;;
sn|80)
echo XKBLAYOUT="sn" >> /etc/keyboard.conf
;;
sy|81)
echo XKBLAYOUT="sy" >> /etc/keyboard.conf
;;
th|82)
echo XKBLAYOUT="th" >> /etc/keyboard.conf
;;
tj|83)
echo XKBLAYOUT="tj" >> /etc/keyboard.conf
;;
tm|84)
echo XKBLAYOUT="tm" >> /etc/keyboard.conf
;;
tr|85)
echo XKBLAYOUT="tr" >> /etc/keyboard.conf
;;
tw|86)
echo XKBLAYOUT="tw" >> /etc/keyboard.conf
;;
tz|87)
echo XKBLAYOUT="tz" >> /etc/keyboard.conf
;;
ua|88)
echo XKBLAYOUT="ua" >> /etc/keyboard.conf
;;
us|89)
echo XKBLAYOUT="us" >> /etc/keyboard.conf
;;
uz|90)
echo XKBLAYOUT="uz" >> /etc/keyboard.conf
;;
vn|91)
echo XKBLAYOUT="vn" >> /etc/keyboard.conf
;;
za|92)
echo XKBLAYOUT="za" >> /etc/keyboard.conf
;;
*)
echo XKBLAYOUT="it" >> /etc/keyboard.conf
;;
esac
#Load Selected Keymap
sleep 1
keyboardctl -s
fi
* Create /etc/systemd/system/keymap_selection.service
[Unit]
Description=Keymap Selection
ConditionPathExists=/bin/keymap_selection.sh
JobTimeoutSec=30
Before=getty@tty1.service
After=sshd.service
[Timer]
OnActiveSec=30
[Service]
Type=forking
ExecStart=/bin/keymap_selection.sh
StandardInput=tty
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
KillMode=none
[Install]
WantedBy=multi-user.target
* Enable with systemctl enable keymap_selection.service
Last edited by danfossi (2014-09-22 12:10:27)
Offline
Pages: 1