Difference between revisions of "Activating Numlock on Bootup"

From ArchWiki
Jump to: navigation, search
m (Bash alternative: typo)
(GNOME: rm deprecated "from official repositories")
 
(41 intermediate revisions by 27 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.service}} daemon. Read [[Daemons]] for more details.
+
First create a script to set the numlock on relevant TTYs:
  
=== Customizing {{ic|getty@.service}} ===
+
{{hc|/usr/bin/numlock|<nowiki>
 +
#!/bin/bash
  
Unlike the separate service, this approach does not hardcode the number of VTs in a script. Create the following file.
+
for tty in /dev/tty{1..6}
 +
do
 +
    /usr/bin/setleds -D +num < "$tty";
 +
done
 +
</nowiki>}}
  
{{hc|/etc/systemd/system/getty@.service|<nowiki>
+
Then create and [[enable]] a systemd service:
.include /usr/lib/systemd/system/getty@.service
+
 
 +
{{hc|/etc/systemd/system/numlock.service|<nowiki>
 +
[Unit]
 +
Description=numlock
  
 
[Service]
 
[Service]
ExecStartPost=/bin/sh -c 'setleds +num < /dev/%I'</nowiki>
+
ExecStart=/usr/bin/numlock
}}
+
StandardInput=tty
 +
RemainAfterExit=yes
 +
 
 +
[Install]
 +
WantedBy=multi-user.target</nowiki>}}
 +
 
 +
=== Extending getty@.service ===
  
Now disable and reenable {{ic|getty@tty1.service}} to use the new template. Repeat this if you enabled additional instances. The default configuration spawns additional instances on demand using {{ic|/usr/lib/systemd/system/autovt@.service}}, which is a symlink to the default {{ic|getty@.service}}. We can add a symlink in {{ic|/etc/systemd/system}} to tell systemd to use our custom service file:
+
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:
  
{{bc|
+
{{hc|# systemctl edit getty\@.service|<nowiki>
# cd /etc/systemd/system
+
[Service]
# ln -s getty@.service autovt@.service
+
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>}}
  
 
=== Bash alternative ===
 
=== Bash alternative ===
Line 70: Line 91:
 
  NoUpgrade = usr/share/config/kdm/Xsetup
 
  NoUpgrade = usr/share/config/kdm/Xsetup
  
=== KDE4 Users ===
+
=== 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.
 
Go to System Settings, under the Hardware/Input Devices/Keyboard item you will find an option to select the behavior of NumLock.
Line 76: Line 97:
 
==== Alternate Method ====
 
==== Alternate Method ====
  
Alternatively, add the script the {{ic|~/.kde4/Autostart/numlockx}} containing:
+
Alternatively, add the script the {{ic|~/.kde4/Autostart/numlockx.sh}} containing:
  
 
  #!/bin/sh
 
  #!/bin/sh
Line 83: Line 104:
 
And make it executable:
 
And make it executable:
  
  $ chmod +x ~/.kde4/Autostart/numlockx
+
  $ chmod +x ~/.kde4/Autostart/numlockx.sh
 +
 
 +
==== 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 ===
 
=== GDM ===
Line 97: Line 132:
 
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 111: Line 146:
  
 
{{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}}, add the following line under the {{ic|[General]}} section:
 +
 +
[General]
 +
Numlock=on
  
 
=== SLiM ===
 
=== SLiM ===
Line 125: Line 174:
  
 
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 01:29, 13 March 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

KDM

If you use KDM as a login manager, add:

numlockx on

to the /usr/share/config/kdm/Xsetup, or the /opt/kde/share/config/kdm/Xsetup for KDM3.

Note that this file will be overwritten on update without creating a .pacnew file. To prevent this, add the following line to /etc/pacman.conf file (omit the leading slash in the path):

NoUpgrade = usr/share/config/kdm/Xsetup

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.

Alternate Method

Alternatively, add the script the ~/.kde4/Autostart/numlockx.sh containing:

#!/bin/sh
numlockx on

And make it executable:

$ chmod +x ~/.kde4/Autostart/numlockx.sh

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 numlockx (from extra) installed then add the following code to /etc/gdm/Init/Default:

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, add the following line under the [General] section:

[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