Por supuesto, lo más limpio sería corregir el error, pero como solución alternativa, el script de fondo a continuación hará el trabajo:
#!/usr/bin/env python3
import subprocess
import time
key = "org.gnome.settings-daemon.peripherals.keyboard numlock-state"
while True:
time.sleep(1)
state = subprocess.check_output([
"/bin/bash", "-c", "gsettings get "+key]).decode("utf-8").strip()
if state != "'on'":
subprocess.Popen([
"/bin/bash", "-c", "gsettings set "+key+" 'on'"])
Cómo utilizar
- Copie el script anterior en un archivo vacío, guárdelo como
NM_on.py
Pruébelo en segundo plano con el comando:
python3 /path/to/NM_on.py
Si todo funciona bien, agréguelo a Aplicaciones de inicio: Tablero> Aplicaciones de inicio> Agregar, agregue el comando:
/bin/bash -c "sleep 10 && python3 /path/to/NM_on.py"
Explicación
Podemos obtener el Num Lock
estado actual de más de una manera:
ejecutando el comando:
xset q
que dará una salida como:
Keyboard Control:
auto repeat: on key click percent: 0 LED mask: 00000000
XKB indicators:
00: Caps Lock: off 01: Num Lock: off 02: Scroll Lock: off
03: Compose: off 04: Kana: off 05: Sleep: off
06: Suspend: off 07: Mute: off 08: Misc: off
09: Mail: off 10: Charging: off 11: Shift Lock: off
12: Group 2: off 13: Mouse Keys: off
auto repeat delay: 500 repeat rate: 33
.....
o con el comando:
gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
que simplemente regresa 'on'
, 'off'
o 'unknown'
.
Dado que este último es extremadamente liviano, podemos usarlo en un script de fondo para verificar una vez por segundo y establecer el valor 'on'
, si es necesario, con el comando:
gsettings set org.gnome.settings-daemon.peripherals.keyboard numlock-state 'on'
y así es ...
Editar
Por alguna razón, me perdí tu último párrafo, en el que te referías a otra respuesta con una solución similar.
Teóricamente, siempre tengo un problema con los scripts que ciegamente (re) aplican configuraciones, sin verificar el estado actual. No podría ser un argumento para hacerlo, si el comando
gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
para obtener el valor actual, sería más exigente que simplemente ejecutar
numlockx on
para (re) configurar numlockx on
.
Mirando el momento en que ambos comandos deben terminar (que es al menos una indicación), es al revés; El comando
gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
parece ser más "ligero".
¿Ejecutar un script de fondo es una mala idea?
Por supuesto, si no tiene ninguna razón para ejecutar un script de fondo, entonces no lo haga. Al mismo tiempo, si un script de fondo está bien escrito, probado exhaustivamente, los procedimientos están optimizados de manera inteligente, y si no agrega ningún efecto notable en la ocupación del procesador, sería una tontería no usarlo como una solución alternativa si agrega importantes funcionalidad o le ahorra tiempo.
Constantemente tengo al menos 4-8 scripts de fondo ejecutándose. La mayoría de ellos durante semanas sin reiniciar. Nunca noté ningún efecto en mi (s) sistema (s) de edad avanzada. Tenga en cuenta que su sistema ejecuta numerosos bucles de todos modos.
gsettings get org.gnome.settings-daemon.peripherals.keyboard numlock-state
aún regresa'on'
.