¿Cómo configuro Xmodmap al iniciar sesión?

46

Como la distribución de mi teclado no me conviene, ejecuto xmodmapel inicio de sesión. El script se nombra .profiley funciona bien, pero rompe la interfaz de Unity.

Quiero saber dónde poner la xmodmaplínea para que se ejecute en mi inicio de sesión y no rompa nada.

Ya he intentado ponerlo en los archivos .bash_loginy .bash_profile, sin éxito ( xmodmapno configura mi teclado).

¿Cuáles son mis opciones?

Thiago Moraes
fuente
44
¿Cómo se rompe la interfaz de la unidad?
djeikyb
1
Me gustaría agregar que si el tiempo de ejecución de xmodmap es demasiado largo, debe eliminar todas las entradas que no modificó a mano. Mantener solo los cambios en su archivo de entrada hará que xmodmap se ejecute mucho más rápido.
user1071575

Respuestas:

29

El lugar correcto para colocar xmodmap ~/.Xmodmap(para que sus cambios se lean al inicio) está en ~/.xinitrc(vea la explicación a continuación), aunque podría colocar alternativamente el xmodmapcomando como un elemento de inicio ( /usr/bin/xmodmap /home/user/.Xmodmap). Puedo decir que para 12.04 (y presumiblemente 12.10) que estas dos alternativas definitivamente funcionan, ya que de cualquier manera se leen después de iniciar sesión lightdm. (Cambié Volver al desplazamiento a la derecha , y el cambio solo entró en vigencia después de ingresar mi contraseña e iniciar sesión).

Tenga en cuenta: si está en Xfce, en las preguntas frecuentes oficiales de Xfce se indica que es posible que deba crear un elemento de inicio en lugar de usarlo ~/.xinitrc, y que es posible que deba retrasar la ejecución para que los xmodmapcambios no se sobrescriban setxkbmap. Puede usar un retraso para lograr esto en su entrada de inicio:

/bin/bash -c "sleep 20; /usr/bin/xmodmap /home/$USER/.Xmodmap"

(Para la entrada de inicio es necesario especificar rutas absolutas)

Cada vez que setxkbmapse ejecuta para cambiar la distribución del teclado, deberá ejecutar xmodmap ~/.Xmodmapnuevamente en el terminal.

Creando ~/.xinitrc

Cree un archivo en su carpeta de inicio llamado .xinitrccon

touch .xinitrc

y colocar en ella:

xmodmap ~/.Xmodmap

Su Xmodmaparchivo no debe tener entradas en el xmodmap -e " "estilo que se usa en el terminal para configurar temporalmente los valores. Debe tener entradas en este formato:

keycode 65 = Tab
keycode 23 = Space

A menudo es confuso cuál de los diversos Xarchivos (como .xprofile, .xinitrcetc.) se leen al inicio, pero .xinitrcparece que todavía se leen en 12.04, mientras que .Xmodmapo .xinputrcno se leen por sí mismos.


fuente
55
Tenga en cuenta que si realiza sus cambios con xmodmap -e '..., puede recuperar el formato correcto para xmodmap .Xmodmapcon xmodmap -pke, que imprime la asignación actual, aunque querrá filtrar esto solo a las líneas que se aplican al cambio que realizó.
Barry Kelly el
1
Esto no funcionó para mí. He creado .Xmodmap y .xinitrc | Luego coloqué xmodmap ~ / .Xmodmap en .xinitrc Y luego dentro de .Xmodmad tengo el código de clave 166 = Código de clave anterior 167 = Siguiente
miguelmorales85
Parece que .xinitrc ya no se inicia automáticamente en Ubuntu 17.10. Tendrá que iniciarlo automáticamente con este comando: / bin / bash -c "sleep 15 && /home/USERNAME/.xinitrc"
thebunnyrules
9

Estoy usando ElementaryOS (con su administrador de ventanas basado en GNOME) y encontré una solución mediante el uso de xdgscripts de inicio automático. Muchos administradores de ventanas están utilizando xdg, por lo que supongo que este enfoque también funcionará en otros entornos. Al menos debería funcionar con GNOME.

xdg ejecuta scripts ~/.config/autostartal iniciar sesión en una sesión X. Para cargar la configuración de xmodmap al iniciar sesión, agregue el siguiente script a ~/.config/autostart/xmodmap.desktop:

[Desktop Entry]
Name[en_US]=Xmodmap
Comment[en_US]=xmodmap ~/.Xmodmap
Exec=/usr/bin/xmodmap .Xmodmap
Icon=application-default-icon
X-GNOME-Autostart-enabled=true
Type=Application

Luego cierre sesión e inicie sesión nuevamente, y su configuración Xmodmap debería haberse cargado.

Si no funciona, intente ejecutar xmodmap en la terminal para ver si se queja de xmodmap:

$ xmodmap ~/.Xmodmap

Si no obtiene ningún error, ejecute el siguiente comando para depurar:

$ sudo cat /var/log/syslog | grep -B 5 -A 5 xmodmap
kontrollanten
fuente
En Linux Mint 17 (basado en: Ubuntu 14.04.5), el enfoque de inicio automático funcionó perfectamente para mí después de ~/.xinitrcque falló el uso de un archivo. Como señaló hxpax, los usuarios de Mint (probablemente la mayoría / todos los Linux derivados de Debian) pueden usar un cuadro de diálogo GUI para agregar entradas de inicio automático Main Menu --> Preferences --> Startup Applications.
Mattst
2
Ubuntu 18.04
trabajado
2

No tengo la interfaz de la unidad frente a mí en este momento, pero intente hacer clic en el botón Aplicaciones en el iniciador, luego escriba inicio. Debería haber una aplicación llamada Aplicaciones de inicio (o alguna similar). Haga clic en él y agregue su comando xmodmap (por ejemplo xmodmap /home/thiago/.Xmodmap).

djeikyb
fuente
Lo intenté hace un tiempo pero no funcionó para mí. Ahora estoy en Windows, pero lo intentaré más tarde e informaré aquí si funciona. thx
Thiago Moraes
2
@Thiago Moraes ¿Funciona este comando básico (si no, publique el error)? xmodmap .Xmodmap
djeikyb
+1 esto funciona. Para ser más explícitos he utilizado la ruta completa para .Xmodmap
pwned
3
esto no funciona. Estoy usando 16.04
miguelmorales85
@ miguelmorales85 ¿funciona el comando básico en su terminal? ¿Intentaste usar una ruta absoluta?
djeikyb
2

En Mint 17/18, puedo lograr que coloque mis scripts en la Aplicación de inicio, con 1 segundo de retraso.

Como Mint 18 se deriva de Ubuntu 1604, creo que puede hacer lo mismo o instalar el panel de administración de la aplicación de inicio primero si no está allí.

Espero eso ayude.

hxpax
fuente
+1 funciona bien. No necesitaba demora en Linux Mint 17.
Mattst
@mattst Sí, el retraso es opcional.
hxpax
Necesitaba un retraso de 5 segundos para que esto funcionara. Por lo tanto, utilicé el siguiente script de shell de inicio: gist.github.com/ghagerer/58212241e37229f9d6fe3a133b34be97
Gerhard Hagerer el
0

No estaba muy contento con ninguna de las sugerencias anteriores (la opción .bashrc no era realmente viable ya que ejecuta xmodmap en cada nueva terminal)

Toqué un script llamado xmodstartup.shen mi carpeta de inicio

  #!/bin/bash           
  sleep 1;               
  echo "running xmodmap" 
  xmodmap ~/.Xmodmap     

con eso salvado, entonces lo hice sudo chmod +x xmodstartup.sh

luego simplemente agregué el archivo ejecutable a la ventana "preferencias de la aplicación de inicio" de gnome. bish bosh, diseño en inglés y español en altgr:)

Jay Edwards
fuente
-1

Poner xmodmap cambia ~/.bashrco /etc/bash.bashrcno rompe nada.

El único inconveniente es que uno tiene que abrir un terminal después de cada arranque para activarlo.

Rasmus
fuente
3
Ya estoy haciendo eso, pero el problema es que en cada terminal que abro, este comando se ejecuta. Es solo un momento, pero es un poco molesto y preferiría una solución real. gracias de todos modos
Thiago Moraes