Problem analysis ================ * ubiquity installs open-vm-tools. * open-vm-tools calls "udevadm trigger" in it's postinst script (line 8). * udevadm triggers all udev rules which includes all input devices. * gdm-x-session reads /etc/default/keyboard and sets the keyboard layout. * gnome-shell sets the keyboard layout as well. ubiquity already sets /etc/default/keyboard, but does not change the keyboard layout in the GNOME session. Proposed solution ================= Let ubiquity also configure the GNOME session to use the selected keyboard layout. Analysis details ================ The change of the keyboard layout can be triggered by running udevadm trigger for the keyboard device. Example for QEMU: ``` sudo udevadm trigger -v /sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input0 ``` joural log on a fresh live system (before starting the installer): ``` systemd-logind[1207]: Watching system buttons on /dev/input/event0 (Power Button) /usr/libexec/gdm-x-session[4624]: (II) config/udev: removing device Power Button /usr/libexec/gdm-x-session[4624]: (**) Option "fd" "27" /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: device removed /usr/libexec/gdm-x-session[4624]: (II) UnloadModule: "libinput" /usr/libexec/gdm-x-session[4624]: (II) systemd-logind: releasing fd for 13:64 /usr/libexec/gdm-x-session[4624]: (II) config/udev: Adding input device Power Button (/dev/input/event0) /usr/libexec/gdm-x-session[4624]: (**) Power Button: Applying InputClass "libinput keyboard catchall" /usr/libexec/gdm-x-session[4624]: (II) Using input driver 'libinput' for 'Power Button' /usr/libexec/gdm-x-session[4624]: (II) systemd-logind: got fd for /dev/input/event0 13:64 fd 27 paused 0 /usr/libexec/gdm-x-session[4624]: (**) Power Button: always reports core events /usr/libexec/gdm-x-session[4624]: (**) Option "Device" "/dev/input/event0" /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: is tagged by udev as: Keyboard /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: device is a keyboard /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: device removed /usr/libexec/gdm-x-session[4624]: (**) Option "config_info" "udev:/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input0/event0" /usr/libexec/gdm-x-session[4624]: (II) XINPUT: Adding extended input device "Power Button" (type: KEYBOARD, id 6) /usr/libexec/gdm-x-session[4624]: (**) Option "xkb_model" "pc105" /usr/libexec/gdm-x-session[4624]: (**) Option "xkb_layout" "us" /usr/libexec/gdm-x-session[4624]: (WW) Option "xkb_variant" requires a string value /usr/libexec/gdm-x-session[4624]: (WW) Option "xkb_options" requires a string value /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: is tagged by udev as: Keyboard /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: device is a keyboard gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 31 with keysym 31 (keycode a). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 32 with keysym 32 (keycode b). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 33 with keysym 33 (keycode c). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 34 with keysym 34 (keycode d). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 35 with keysym 35 (keycode e). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 36 with keysym 36 (keycode f). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 37 with keysym 37 (keycode 10). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 38 with keysym 38 (keycode 11). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 39 with keysym 39 (keycode 12). ``` joural log after installer keyboard layout selection (and having /etc/default/keyboard): ``` /usr/libexec/gdm-x-session[4624]: (II) config/udev: removing device Power Button /usr/libexec/gdm-x-session[4624]: (**) Option "fd" "27" /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: device removed systemd-logind[1207]: Watching system buttons on /dev/input/event0 (Power Button) /usr/libexec/gdm-x-session[4624]: (II) UnloadModule: "libinput" /usr/libexec/gdm-x-session[4624]: (II) systemd-logind: releasing fd for 13:64 /usr/libexec/gdm-x-session[4624]: (II) config/udev: Adding input device Power Button (/dev/input/event0) /usr/libexec/gdm-x-session[4624]: (**) Power Button: Applying InputClass "libinput keyboard catchall" /usr/libexec/gdm-x-session[4624]: (II) Using input driver 'libinput' for 'Power Button' /usr/libexec/gdm-x-session[4624]: (II) systemd-logind: got fd for /dev/input/event0 13:64 fd 49 paused 0 /usr/libexec/gdm-x-session[4624]: (**) Power Button: always reports core events /usr/libexec/gdm-x-session[4624]: (**) Option "Device" "/dev/input/event0" /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: is tagged by udev as: Keyboard /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: device is a keyboard /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: device removed /usr/libexec/gdm-x-session[4624]: (**) Option "config_info" "udev:/sys/devices/LNXSYSTM:00/LNXPWRBN:00/input/input0/event0" /usr/libexec/gdm-x-session[4624]: (II) XINPUT: Adding extended input device "Power Button" (type: KEYBOARD, id 6) /usr/libexec/gdm-x-session[4624]: (**) Option "xkb_model" "pc105" /usr/libexec/gdm-x-session[4624]: (**) Option "xkb_layout" "de" /usr/libexec/gdm-x-session[4624]: (**) Option "xkb_variant" "neo" /usr/libexec/gdm-x-session[4624]: (WW) Option "xkb_options" requires a string value /usr/libexec/gdm-x-session[9289]: The XKEYBOARD keymap compiler (xkbcomp) reports: /usr/libexec/gdm-x-session[9289]: > Warning: Multiple interpretations of "Caps_Lock+AnyOfOrNone(all)" /usr/libexec/gdm-x-session[9289]: > Using last definition for duplicate fields /usr/libexec/gdm-x-session[9289]: > Warning: Multiple interpretations of "Shift_L+AnyOfOrNone(all)" /usr/libexec/gdm-x-session[9289]: > Using last definition for duplicate fields /usr/libexec/gdm-x-session[9289]: > Error: Key added to map for multiple modifiers /usr/libexec/gdm-x-session[9289]: > Using Mod2, ignoring Mod4. /usr/libexec/gdm-x-session[9289]: > Error: Key added to map for multiple modifiers /usr/libexec/gdm-x-session[9289]: > Using Mod3, ignoring Mod5. /usr/libexec/gdm-x-session[9289]: Errors from xkbcomp are not fatal to the X server /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: is tagged by udev as: Keyboard /usr/libexec/gdm-x-session[4624]: (II) event0 - Power Button: device is a keyboard /usr/libexec/gdm-x-session[4624]: (EE) event1 - AT Translated Set 2 keyboard: client bug: event processing lagging behind by 22ms, your system is too slow gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 32 with keysym 32 (keycode b). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 31 with keysym 31 (keycode a). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 33 with keysym 33 (keycode c). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 34 with keysym 34 (keycode d). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 35 with keysym 35 (keycode e). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 36 with keysym 36 (keycode f). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 37 with keysym 37 (keycode 10). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 38 with keysym 38 (keycode 11). gnome-shell[4794]: Window manager warning: Overwriting existing binding of keysym 39 with keysym 39 (keycode 12). ```