/usr/share/cinnamon/cinnamon-desktop-migrate-mediakeys is in cinnamon-desktop-data 3.6.2-2.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 | #!/usr/bin/python3
from gi.repository import Gio
import os
OLD_MEDIA_KEYS_PATH = "/org/cinnamon/settings-daemon/plugins/media-keys/"
OLD_MEDIA_KEYS_SCHEMA = "org.cinnamon.settings-daemon.plugins.media-keys"
NEW_MEDIA_KEYS_SCHEMA = "org.cinnamon.desktop.keybindings.media-keys"
OLD_WM_KEYBINDINGS_PATH = "/org/cinnamon/muffin/keybindings/"
OLD_WM_KEYBINDINGS_SCHEMA = "org.cinnamon.muffin.keybindings"
NEW_WM_KEYBINDINGS_SCHEMA = "org.cinnamon.desktop.keybindings.wm"
OLD_CUSTOM_KEYS_PARENT_SCHEMA = "org.cinnamon.keybindings"
OLD_CUSTOM_KEYS_BASENAME = "/org/cinnamon/keybindings/custom-keybindings"
OLD_CUSTOM_KEYS_SCHEMA = "org.cinnamon.keybindings.custom-keybinding"
NEW_CUSTOM_KEYS_PARENT_SCHEMA = "org.cinnamon.desktop.keybindings"
NEW_CUSTOM_KEYS_BASENAME = "/org/cinnamon/desktop/keybindings/custom-keybindings"
NEW_CUSTOM_KEYS_SCHEMA = "org.cinnamon.desktop.keybindings.custom-keybinding"
def migrate(old, new, array):
old_settings = Gio.Settings.new(old)
new_settings = Gio.Settings.new(new)
old_list = old_settings.list_keys()
new_list = new_settings.list_keys()
for k in new_list:
try:
try:
if k in old_list and old_settings.get_user_value(k) is not None:
if array:
new_settings.set_value(k, old_settings.get_value(k))
else:
ov = old_settings.get_string(k)
new_settings.set_strv(k, (ov,))
except:
if k in old_list:
if array:
if len(old_settings.get_strv(k)) > 0:
new_settings.set_value(k, old_settings.get_value(k))
else:
ov = old_settings.get_string(k)
if ov != "":
new_settings.set_strv(k, (ov,))
except:
print("Problem migrating key %s from %s to %s, skipping it" % (k, old, new))
Gio.Settings.sync()
def migrate_custom_keys():
old_parent = Gio.Settings.new(OLD_CUSTOM_KEYS_PARENT_SCHEMA)
new_parent = Gio.Settings.new(NEW_CUSTOM_KEYS_PARENT_SCHEMA)
custom_list = old_parent.get_strv("custom-list")
new_parent.set_strv("custom-list", custom_list)
old_parent.set_strv("custom-list", None)
for entry in custom_list:
old_custom_path = OLD_CUSTOM_KEYS_BASENAME + "/" + entry + "/"
old_schema = Gio.Settings.new_with_path(OLD_CUSTOM_KEYS_SCHEMA, old_custom_path)
new_custom_path = NEW_CUSTOM_KEYS_BASENAME + "/" + entry + "/"
new_schema = Gio.Settings.new_with_path(NEW_CUSTOM_KEYS_SCHEMA, new_custom_path)
new_schema.set_string("name", old_schema.get_string("name"))
new_schema.set_string("command", old_schema.get_string("command"))
new_schema.set_strv("binding", (old_schema.get_string("binding"),))
old_schema.delay()
old_schema.reset("name")
old_schema.reset("command")
old_schema.reset("binding")
old_schema.apply()
Gio.Settings.sync()
if os.path.exists(os.path.expanduser("~/.cinnamon/.keybindings-migration-2.4-complete-do-not-erase")):
print("Migration has been performed already for this user.")
exit(0)
print("Migrating keybindings from previous release...")
try:
source = Gio.SettingsSchemaSource.get_default()
if source.lookup(OLD_MEDIA_KEYS_SCHEMA, True) != None:
migrate(OLD_MEDIA_KEYS_SCHEMA, NEW_MEDIA_KEYS_SCHEMA, False)
print(" ... media keybindings: done.")
if source.lookup(OLD_WM_KEYBINDINGS_SCHEMA, True) != None:
migrate(OLD_WM_KEYBINDINGS_SCHEMA, NEW_WM_KEYBINDINGS_SCHEMA, True)
print(" ... wm keybindings: done.")
if source.lookup(OLD_CUSTOM_KEYS_PARENT_SCHEMA, True) != None:
migrate_custom_keys()
print(" ... custom keybindings: done.")
Gio.Settings.sync()
open(os.path.expanduser("~/.cinnamon/.keybindings-migration-2.4-complete-do-not-erase"), "w").close()
except Exception as detail:
print(" !! %s" % detail)
print(" Done.")
exit(0)
|