tools: Migrate changed overrides settings
While the new per-desktop overrides in GIO are easier to use for both developers and users, it is still inconvenient for everyone who changed the defaults using the old overrides hack to lose their settings. Address this by running a small script on startup that migrates existing settings. https://bugzilla.gnome.org/show_bug.cgi?id=786496
This commit is contained in:
parent
393d7246cc
commit
d57dc94d9e
5
data/gnome-shell-overrides-migration.desktop.in
Normal file
5
data/gnome-shell-overrides-migration.desktop.in
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=GNOME settings overrides migration
|
||||||
|
NoDisplay=True
|
||||||
|
Exec=@libexecdir@/gnome-shell-overrides-migration.sh
|
@ -94,6 +94,15 @@ schema = configure_file(
|
|||||||
)
|
)
|
||||||
install_data('00_org.gnome.shell.gschema.override', install_dir: schemadir)
|
install_data('00_org.gnome.shell.gschema.override', install_dir: schemadir)
|
||||||
|
|
||||||
|
overrides_migration_conf = configuration_data()
|
||||||
|
overrides_migration_conf.set('libexecdir', libexecdir)
|
||||||
|
overrides_migration = configure_file(
|
||||||
|
input: 'gnome-shell-overrides-migration.desktop.in',
|
||||||
|
output: 'gnome-shell-overrides-migration.desktop',
|
||||||
|
configuration: overrides_migration_conf,
|
||||||
|
install_dir: autostartdir
|
||||||
|
)
|
||||||
|
|
||||||
if have_systemd
|
if have_systemd
|
||||||
unitconf = configuration_data()
|
unitconf = configuration_data()
|
||||||
unitconf.set('bindir', bindir)
|
unitconf.set('bindir', bindir)
|
||||||
|
@ -44,10 +44,12 @@ datadir = join_paths(prefix, get_option('datadir'))
|
|||||||
libdir = join_paths(prefix, get_option('libdir'))
|
libdir = join_paths(prefix, get_option('libdir'))
|
||||||
libexecdir = join_paths(prefix, get_option('libexecdir'))
|
libexecdir = join_paths(prefix, get_option('libexecdir'))
|
||||||
mandir = join_paths(prefix, get_option('mandir'))
|
mandir = join_paths(prefix, get_option('mandir'))
|
||||||
|
sysconfdir = join_paths(prefix, get_option('sysconfdir'))
|
||||||
|
|
||||||
pkgdatadir = join_paths(datadir, meson.project_name())
|
pkgdatadir = join_paths(datadir, meson.project_name())
|
||||||
pkglibdir = join_paths(libdir, meson.project_name())
|
pkglibdir = join_paths(libdir, meson.project_name())
|
||||||
|
|
||||||
|
autostartdir = join_paths(sysconfdir, 'xdg', 'autostart')
|
||||||
convertdir = join_paths(datadir, 'GConf', 'gsettings')
|
convertdir = join_paths(datadir, 'GConf', 'gsettings')
|
||||||
desktopdir = join_paths(datadir, 'applications')
|
desktopdir = join_paths(datadir, 'applications')
|
||||||
ifacedir = join_paths(datadir, 'dbus-1', 'interfaces')
|
ifacedir = join_paths(datadir, 'dbus-1', 'interfaces')
|
||||||
@ -203,6 +205,7 @@ subdir('src')
|
|||||||
subdir('po')
|
subdir('po')
|
||||||
subdir('data')
|
subdir('data')
|
||||||
subdir('tests')
|
subdir('tests')
|
||||||
|
subdir('tools')
|
||||||
|
|
||||||
if get_option('gtk_doc')
|
if get_option('gtk_doc')
|
||||||
subdir('docs/reference')
|
subdir('docs/reference')
|
||||||
|
38
tools/gnome-shell-overrides-migration.sh
Executable file
38
tools/gnome-shell-overrides-migration.sh
Executable file
@ -0,0 +1,38 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
PKG_DATA_DIR=${XDG_DATA_HOME:-$HOME/.local/share}/gnome-shell
|
||||||
|
|
||||||
|
MIGRATION_GUARD=$PKG_DATA_DIR/gnome-overrides-migrated
|
||||||
|
OVERRIDE_SCHEMA=
|
||||||
|
|
||||||
|
if [ -f $MIGRATION_GUARD ]; then
|
||||||
|
exit # already migrated
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Find the right session
|
||||||
|
if echo $XDG_CURRENT_DESKTOP | grep -q -v GNOME; then
|
||||||
|
exit # not a GNOME session
|
||||||
|
fi
|
||||||
|
|
||||||
|
if echo $XDG_CURRENT_DESKTOP | grep -q Classic; then
|
||||||
|
OVERRIDE_SCHEMA=org.gnome.shell.extensions.classic-overrides
|
||||||
|
else
|
||||||
|
OVERRIDE_SCHEMA=org.gnome.shell.overrides
|
||||||
|
fi
|
||||||
|
|
||||||
|
mkdir -p $PKG_DATA_DIR
|
||||||
|
|
||||||
|
for k in `gsettings list-keys $OVERRIDE_SCHEMA`
|
||||||
|
do
|
||||||
|
if [ $k = button-layout ]; then
|
||||||
|
orig_schema=org.gnome.desktop.wm.preferences
|
||||||
|
else
|
||||||
|
orig_schema=org.gnome.mutter
|
||||||
|
fi
|
||||||
|
|
||||||
|
oldValue=`gsettings get $OVERRIDE_SCHEMA $k`
|
||||||
|
curValue=`gsettings get $orig_schema $k`
|
||||||
|
if [ $oldValue != $curValue ]; then
|
||||||
|
gsettings set $orig_schema $k $oldValue
|
||||||
|
fi
|
||||||
|
done && touch $MIGRATION_GUARD
|
4
tools/meson.build
Normal file
4
tools/meson.build
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
install_data('gnome-shell-overrides-migration.sh',
|
||||||
|
install_dir: libexecdir,
|
||||||
|
install_mode: 'rwxr-xr-x'
|
||||||
|
)
|
Loading…
Reference in New Issue
Block a user