Difference between revisions of "Activating Numlock on Bootup"

From ArchWiki
Jump to: navigation, search
m (Alternate Method 2)
(GDM: Change /etc/gdm/Init to xprofile.)
 
(38 intermediate revisions by 26 users not shown)
Line 1: Line 1:
 
[[Category:Boot process]]
 
[[Category:Boot process]]
[[Category:Desktop environments]]
 
 
[[Category:Keyboards]]
 
[[Category:Keyboards]]
 
[[de:Numlock]]
 
[[de:Numlock]]
 
[[es:Activating Numlock on Bootup]]
 
[[es:Activating Numlock on Bootup]]
 
[[it:Activating Numlock on Bootup]]
 
[[it:Activating Numlock on Bootup]]
[[ja:Activating Numlock on Bootup]]
+
[[ja:起動時に Numlock を有効化]]
 
[[ru:Activating Numlock on Bootup]]
 
[[ru:Activating Numlock on Bootup]]
[[tr:Açılışta_numlock_etkinleştirme]]
+
[[tr:Açılışta numlock etkinleştirme]]
[[zh-CN:Activating Numlock on Bootup]]
+
[[zh-hans:Activating Numlock on Bootup]]
 
== Console ==
 
== Console ==
  
 
=== Using a separate service ===
 
=== Using a separate service ===
  
[[Pacman|Install]] the package {{aur|systemd-numlockontty}} from the [[AUR]].
+
{{Tip|These steps can be automated by [[install]]ing the {{AUR|systemd-numlockontty}} package and [[enabling]] the {{ic|numLockOnTty}} service.}}
  
Now you should enable the {{ic|numLockOnTty}} daemon. Read [[Daemons]] for more details.
+
First create a script to set the numlock on relevant TTYs:
  
=== Extending {{ic|getty@.service}} ===
+
{{hc|/usr/bin/numlock|<nowiki>
 +
#!/bin/bash
  
This is simpler than using a separate service (especially since systemd-198) and does not hardcode the number of VTs in a script. Create a directory for drop-in configuration files:
+
for tty in /dev/tty{1..6}
 +
do
 +
    /usr/bin/setleds -D +num < "$tty";
 +
done
 +
</nowiki>}}
 +
 
 +
Then create and [[enable]] a systemd service:
 +
 
 +
{{hc|/etc/systemd/system/numlock.service|<nowiki>
 +
[Unit]
 +
Description=numlock
 +
 
 +
[Service]
 +
ExecStart=/usr/bin/numlock
 +
StandardInput=tty
 +
RemainAfterExit=yes
  
{{bc|# mkdir /etc/systemd/system/getty@.service.d}}
+
[Install]
 +
WantedBy=multi-user.target</nowiki>}}
  
Now add the following file in this directory.
+
=== Extending getty@.service ===
  
{{hc|activate-numlock.conf|<nowiki>
+
This is simpler than using a separate service (especially since systemd-198) 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:
 +
 
 +
{{hc|# systemctl edit getty\@.service|<nowiki>
 
[Service]
 
[Service]
ExecStartPost=/bin/sh -c 'setleds +num < /dev/%I'
+
ExecStartPre=/bin/sh -c 'setleds +num < /dev/%I'
 +
</nowiki>}}
 +
 
 +
To disable the num-lock activation hint displaying on the login screen, edit getty@tty1.service and add {{ic|--nohints}} to agetty options:
 +
 
 +
{{hc|# systemctl edit getty@tty1.service|<nowiki>
 +
[Service]
 +
ExecStart=
 +
ExecStart=-/sbin/agetty --nohints --noclear %I $TERM
 
</nowiki>}}
 
</nowiki>}}
  
Line 53: Line 79:
 
  exec window_manager
 
  exec window_manager
  
=== KDM ===
+
=== KDE Plasma Users ===
 
 
If you use KDM as a login manager, add:
 
 
 
numlockx on
 
 
 
to the {{ic|/usr/share/config/kdm/Xsetup}}, or the {{ic|/opt/kde/share/config/kdm/Xsetup}} for KDM3.
 
 
 
Note that this file will be overwritten on update without creating a {{ic|.pacnew}} file. To prevent this, add the following line to {{ic|/etc/pacman.conf}} file (omit the leading slash in the path):
 
 
 
NoUpgrade = usr/share/config/kdm/Xsetup
 
 
 
=== KDE4 Users ===
 
  
 
Go to System Settings, under the Hardware/Input Devices/Keyboard item you will find an option to select the behavior of NumLock.
 
Go to System Settings, under the Hardware/Input Devices/Keyboard item you will find an option to select the behavior of NumLock.
  
==== Alternate Method ====
+
=== GDM ===
  
Alternatively, add the script the {{ic|~/.kde4/Autostart/numlockx}} containing:
+
{{Note|GDM does not execute scripts in {{ic|/etc/gdm/Init}} anymore.}}
  
#!/bin/sh
+
Make sure that you have {{Pkg|numlockx}} installed then add the following code to [[xprofile|~/.xprofile]]:
numlockx on
 
 
 
And make it executable:
 
 
 
$ chmod +x ~/.kde4/Autostart/numlockx
 
 
 
==== Alternate Method 2 ====
 
 
 
This method enables num lock in KDM login screen (e.g. numeric password)
 
 
 
1) Disable "Themed Greeter" in System Settings -> Login Screen
 
 
 
2) in file /usr/share/config/kdm/kdmrc find section
 
 
 
  [X-*-Greeter]
 
 
 
Right after that line, add this:
 
 
 
  NumLock=On
 
 
 
=== GDM ===
 
 
 
First make sure that you have {{Pkg|numlockx}} (from extra) installed then add the following code to {{ic|/etc/gdm/Init/Default}}:
 
  
 
  if [ -x /usr/bin/numlockx ]; then
 
  if [ -x /usr/bin/numlockx ]; then
Line 106: Line 97:
 
When not using the GDM login manager, numlockx can be added to GNOME's start-up applications.
 
When not using the GDM login manager, numlockx can be added to GNOME's start-up applications.
  
[[pacman|Install]] {{Pkg|numlockx}} from the [[Official Repositories|official repositories]]. Then, add a start-up command to launch {{ic|numlockx}}.
+
[[Install]] the {{Pkg|numlockx}} package. Then, add a start-up command to launch {{ic|numlockx}}.
 
  $ gnome-session-properties
 
  $ gnome-session-properties
  
 
The above command opens the '''Startup Applications Preferences''' applet. Click '''''Add'''''  and enter the following:
 
The above command opens the '''Startup Applications Preferences''' applet. Click '''''Add'''''  and enter the following:
  
{| border="0"
+
{| class="wikitable"
 
| Name:      ||  ''Numlockx''
 
| Name:      ||  ''Numlockx''
 
|-
 
|-
Line 120: Line 111:
  
 
{{note|This is not a system-wide change, repeat these steps for each user wishing to activate NumLock after logging in.}}
 
{{note|This is not a system-wide change, repeat these steps for each user wishing to activate NumLock after logging in.}}
 +
 +
=== Xfce ===
 +
 +
In the file {{ic|~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml}}, make sure the following values are set to true:
 +
 +
<property name="Numlock" type="bool" value="true"/>
 +
<property name="RestoreNumlock" type="bool" value="true"/>
 +
 +
=== SDDM ===
 +
 +
In the file {{ic|/etc/sddm.conf}}, under the {{ic|[General]}} section, set ''Numlock'' value to ''on'' :
 +
 +
[General]
 +
...
 +
Numlock=on
  
 
=== SLiM ===
 
=== SLiM ===
Line 134: Line 140:
  
 
And then save the file.
 
And then save the file.
 +
 +
=== LightDM ===
 +
See [[LightDM#NumLock on by default]].
 +
 +
=== LXDM ===
 +
 +
Set the option in {{ic|/etc/lxdm/lxdm.conf}}:
 +
 +
numlock=1
 +
 +
=== LXQt ===
 +
 +
Set the option in {{ic|~/.config/lxqt/session.conf}}:
 +
 +
numlock=true

Latest revision as of 05:26, 22 August 2017

Console

Using a separate service

Tip: These steps can be automated by installing the systemd-numlockonttyAUR package and enabling the numLockOnTty service.

First create a script to set the numlock on relevant TTYs:

/usr/bin/numlock
#!/bin/bash

for tty in /dev/tty{1..6}
do
    /usr/bin/setleds -D +num < "$tty";
done

Then create and enable a systemd service:

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

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

[Install]
WantedBy=multi-user.target

Extending getty@.service

This is simpler than using a separate service (especially since systemd-198) 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:

# systemctl edit getty\@.service
[Service]
ExecStartPre=/bin/sh -c 'setleds +num < /dev/%I'

To disable the num-lock activation hint displaying on the login screen, edit getty@tty1.service and add --nohints to agetty options:

# systemctl edit getty@tty1.service
[Service]
ExecStart=
ExecStart=-/sbin/agetty --nohints --noclear %I $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 exec:

#!/bin/sh
#
# ~/.xinitrc
#
# Executed by startx (run your window manager from here)
#

numlockx &

exec window_manager

KDE Plasma Users

Go to System Settings, under the Hardware/Input Devices/Keyboard item you will find an option to select the behavior of NumLock.

GDM

Note: GDM does not execute scripts in /etc/gdm/Init anymore.

Make sure that you have numlockx installed then add the following code to ~/.xprofile:

if [ -x /usr/bin/numlockx ]; then
      /usr/bin/numlockx on
fi

GNOME

When not using the GDM login manager, numlockx can be added to GNOME's start-up applications.

Install the numlockx package. Then, add a start-up command to launch numlockx.

$ gnome-session-properties

The above command opens the Startup Applications Preferences applet. Click Add and enter the following:

Name: Numlockx
Command: /usr/bin/numlockx on
Comment: Turns on numlock.
Note: This is not a system-wide change, repeat these steps for each user wishing to activate NumLock after logging in.

Xfce

In the file ~/.config/xfce4/xfconf/xfce-perchannel-xml/keyboards.xml, make sure the following values are set to true:

<property name="Numlock" type="bool" value="true"/>
<property name="RestoreNumlock" type="bool" value="true"/>

SDDM

In the file /etc/sddm.conf, under the [General] section, set Numlock value to on :

[General]
...
Numlock=on

SLiM

In the file /etc/slim.conf find the line and uncomment it (remove the #):

#numlock             on

OpenBox

In the file ~/.config/openbox/autostart add the line:

numlockx &

And then save the file.

LightDM

See LightDM#NumLock on by default.

LXDM

Set the option in /etc/lxdm/lxdm.conf:

numlock=1

LXQt

Set the option in ~/.config/lxqt/session.conf:

numlock=true