Activating numlock on bootup (Magyar)

Console
Early bootup (mkinitcpio)
You can enable numlock right after the kernel boots in the
initramfs
. This is the only way to ensure numlock is on even during
full-disk encryption
password entry. Install
mkinitcpio-numlock
AUR
and add the
numlock
mkinitcpio
hook before
encrypt
in the
/etc/mkinitcpio.conf
HOOKS array:
/etc/mkinitcpio.conf
...
HOOKS=(base udev autodetect microcode modconf kms keyboard keymap consolefont
numlock
block encrypt lvm2 filesystems fsck)
...
Then
regenerate the initramfs
for the change to take effect.
An advantage of using this method is that the numlock setting will be replicated in the later boot process, and new virtual consoles will default to having numlock on.
With systemd service
Tip
These steps can be automated by
installing
the
systemd-numlockontty
AUR
package and
enabling
the
numLockOnTty
service.
First install the
numlockx
package.
Then create a script to set the numlock on relevant TTYs:
/usr/local/bin/numlock
#!/bin/bash

for tty in /dev/tty{1..6}
do
    /usr/bin/setleds -D +num < "$tty";
done
Once the script is created, you will need to make it
executable
. Otherwise the script cannot run.
Then create and
enable
a systemd service:
/etc/systemd/system/numlock.service
[Unit]
Description=numlock

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

[Install]
WantedBy=multi-user.target
Extending getty@.service
This is simpler than using a separate service and does not hardcode the number of VTs in a script. Create a
drop-in snippet
for
getty@.service
which are applied on top of the original unit:
/etc/systemd/system/getty@.service.d/activate-numlock.conf
[Service]
ExecStartPre=/bin/sh -c 'setleds -D +num < /dev/%I'
Note
If you experience any problems, try replacing
ExecStartPre
with
ExecStartPost
, and/or disabling the hint as described below.
To disable the numlock activation hint displaying on the login screen,
edit
getty@tty1.service
and add
--nohints
to
agetty
options:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noreset --nohints --noclear - ${TERM}
Bash alternative
Add
setleds -D +num
to
~/.bash_profile
. Note that, unlike the other methods, this will not take effect until after you log in.
X.org
Various methods are available.
startx
Install the
numlockx
package and add it to the
xinitrc
file before any
exec
statement:
~/.xinitrc
numlockx &
exec
window manager
MATE
By default, MATE saves the last state on logout and restores it during the next login. To enable numlock on every login, you must change the following
dconf
properties:
$ dconf write org.mate.peripherals-keyboard remember-numlock-state false
$ dconf write org.mate.peripherals-keyboard numlock-state 'on'
KDE Plasma
Go to
System Settings > Input & Output > Keyboard
, in the
Hardware
tab, in the
NumLock on Plasma Startup
section, choose the desired NumLock behavior.
For this to work, make sure that
System Settings > System > Session > Background Services > Keyboard Daemon
is enabled.
Note
If the
Background Services
section is not accessible through
System Settings
in KDE Plasma, running the shell command
kcmshell6 kcm_kded
(substituting for your
kcmshell
version as necessary) should yield this menu.
GNOME
Run the following command:
$ gsettings set org.gnome.desktop.peripherals.keyboard numlock-state true
In order to remember last state of numlock key (whether you disabled or enabled), use:
$ gsettings set org.gnome.desktop.peripherals.keyboard remember-numlock-state true
Alternatively, you can use add
numlockx on
(from
numlockx
) to a startup script or
~/.profile
.
GDM
Create the following keyfile:
/etc/dconf/db/gdm.d/90-numlock
[org/gnome/desktop/peripherals/keyboard]
numlock-state=true
remember-numlock-state=true
And run the following command:
# dconf update
Xfce
In the file
~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml
, make sure the following values are set to true:
~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml
<property name="Numlock" type="bool" value="true"/>
<property name="RestoreNumlock" type="bool" value="true"/>
Note
If the file does not exist then open
Settings > Keyboard
, then check and uncheck the
Restore num lock state on startup
. This will create the
keyboards.xml
file.
SDDM
In the file
/etc/sddm.conf
, under the
[General]
section, set
Numlock=on
:
[General]
...
Numlock=on
SLiM
In the file
/etc/slim.conf
, find the line and uncomment it (remove the
#
):
/etc/slim.conf
numlock             on
OpenBox
In the autostart file, add:
~/.config/openbox/autostart
numlockx &
LightDM
See
LightDM#NumLock on by default
.
LXDM
Set the option in
lxdm.conf
:
/etc/lxdm/lxdm.conf
numlock=1
LXQt
Set the option in
~/.config/lxqt/session.conf
:
~/.config/lxqt/session.conf
[Keyboard]
numlock=true
Wayland
Sway
See
Sway#Initially enable CapsLock/NumLock
.
Hyprland
Set the option in
~/.config/hypr/hyprland.conf
:
~/.config/hypr/hyprland.conf
input {
  numlock_by_default = true
  ...
}
SDDM with KWIN (KDE Plasma)
The factual accuracy of this article or section is disputed.
Reason:
This has been reported to not work, see alternative at
Activating_numlock_on_bootup#KDE_Plasma
. (Discuss in
Talk:Activating numlock on bootup (Magyar)
)
Set the option in
/var/lib/sddm/.config/kcminputrc
:
/var/lib/sddm/.config/kcminputrc
[Keyboard]
NumLock=0
DWL
Initialize the
xkb_rules
struct with the
numpad:mac
option:
[dwl_source_root]/config.def.h
static const struct xkb_rule_names xkb_rules = {
  .options = "numpad:mac",
};