[linux] abort un/installing to ibus if dconf doesn't find key

but continue to un/install the kmp
ibus on stock bionic needs more investigation
This commit is contained in:
glasseyes 2018-09-12 13:15:30 +07:00
parent 12ab8f963a
commit 637712e85c
2 changed files with 4 additions and 4 deletions

View file

@ -194,7 +194,6 @@ def install_kmp(inputfile, online=False):
checkandsaveico(fpath)
copy2(fpath+".bmp", kbdir)
if install_to_ibus:
print("Installing", kbid, "into IBus")
if sys.version_info.major == 3 and sys.version_info.minor < 6:
dconfreadresult = subprocess.run(["dconf", "read", "/desktop/ibus/general/preload-engines"],
stdout=subprocess.PIPE, stderr= subprocess.STDOUT)
@ -203,9 +202,10 @@ def install_kmp(inputfile, online=False):
dconfreadresult = subprocess.run(["dconf", "read", "/desktop/ibus/general/preload-engines"],
stdout=subprocess.PIPE, stderr= subprocess.STDOUT, encoding="UTF8")
dconfread = dconfreadresult.stdout
if (dconfreadresult.returncode == 0):
if (dconfreadresult.returncode == 0) and dconfread:
preload_engines = literal_eval(dconfread)
preload_engines.append(kmn_file)
print("Installing", kbid, "into IBus")
if sys.version_info.major == 3 and sys.version_info.minor < 6:
dconfwriteresult = subprocess.run(["dconf", "write", "/desktop/ibus/general/preload-engines", str(preload_engines)],
stdout=subprocess.PIPE, stderr= subprocess.STDOUT)

View file

@ -9,7 +9,6 @@ from shutil import rmtree
def uninstall_from_ibus(keyboardid):
kbdir = os.path.join('/usr/local/share/keyman', keyboardid)
kmnfile = os.path.join(kbdir, keyboardid+".kmn")
print("Uninstalling", kmnfile, "from IBus")
if sys.version_info.major == 3 and sys.version_info.minor < 6:
result = subprocess.run(["dconf", "read", "/desktop/ibus/general/preload-engines"],
stdout=subprocess.PIPE, stderr= subprocess.STDOUT)
@ -19,12 +18,13 @@ def uninstall_from_ibus(keyboardid):
result = subprocess.run(["dconf", "read", "/desktop/ibus/general/preload-engines"],
stdout=subprocess.PIPE, stderr= subprocess.STDOUT, encoding="UTF8")
dconfread = result.stdout
if (result.returncode == 0):
if (result.returncode == 0) and dconfread:
preload_engines = ast.literal_eval(dconfread)
if kmnfile not in preload_engines:
print(kmnfile, "is not installed in IBus")
return
preload_engines.remove(kmnfile)
print("Uninstalling", kmnfile, "from IBus")
if sys.version_info.major == 3 and sys.version_info.minor < 6:
result2 = subprocess.run(["dconf", "write", "/desktop/ibus/general/preload-engines", str(preload_engines)],
stdout=subprocess.PIPE, stderr= subprocess.STDOUT)