Run setxkbmap as the ubuntu user
This is a partial fix to canonical/ubuntu-desktop-installer#832. The last missing piece is to set the DISPLAY environment variable but this can be done in the subiquity startup script in UDI.
This commit is contained in:
parent
29c12fb152
commit
9ce42f3bc1
|
@ -17,6 +17,7 @@ import logging
|
|||
from typing import Dict, Optional
|
||||
import os
|
||||
import shutil
|
||||
import sys
|
||||
|
||||
import attr
|
||||
|
||||
|
@ -204,9 +205,23 @@ class KeyboardController(SubiquityController):
|
|||
[resource_path('bin/subiquity-loadkeys')],
|
||||
]
|
||||
if shutil.which('setxkbmap'):
|
||||
setxkbmap = ['setxkbmap', '-layout', self.model.setting.layout]
|
||||
command = """\
|
||||
import os
|
||||
import pwd
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
os.seteuid(pwd.getpwnam("ubuntu").pw_uid)
|
||||
cmd = ["setxkbmap", "-layout", sys.argv[1]]
|
||||
if len(sys.argv) > 2:
|
||||
cmd.extend(["-variant", sys.argv[2]])
|
||||
subprocess.run(cmd)
|
||||
"""
|
||||
setxkbmap = [
|
||||
sys.executable, '-c', command, self.model.setting.layout
|
||||
]
|
||||
if self.model.setting.variant:
|
||||
setxkbmap.extend(['-variant', self.model.setting.variant])
|
||||
setxkbmap.append(self.model.setting.variant)
|
||||
cmds.append(setxkbmap)
|
||||
if self.opts.dry_run:
|
||||
scale = os.environ.get('SUBIQUITY_REPLAY_TIMESCALE', "1")
|
||||
|
|
Loading…
Reference in New Issue