debian/0000775000000000000000000000000012321122275007165 5ustar debian/gnome-settings-daemon.install0000664000000000000000000000032012321122275014754 0ustar etc usr/lib/gnome-settings-daemon* usr/share/dbus-1 usr/share/icons usr/share/locale usr/share/gnome-settings-daemon usr/share/polkit-1 debian/source_gnome-settings-daemon.py /usr/share/apport/package-hooks debian/source/0000775000000000000000000000000012321122275010465 5ustar debian/source/format0000664000000000000000000000001412321122275011673 0ustar 3.0 (quilt) debian/source_gnome-settings-daemon.py0000664000000000000000000000157412321122275015332 0ustar import os, apport.packaging, re from apport.hookutils import * def add_info(report): # the issue is not in the gnome-settings-daemon code so reassign if "Stacktrace" in report and "/usr/lib/gnome-settings-daemon-3.0" in report["Stacktrace"]: for words in report["Stacktrace"].split(): if words.startswith("/usr/lib/gnome-settings-daemon-3.0"): if apport.packaging.get_file_package(words) != 'gnome-settings-daemon': report.add_package_info(apport.packaging.get_file_package(words)) return # update the title to reflect the component and tab component = re.compile("lib(\w*).so").search(words).groups(1)[0] report['Title'] = '[%s]: %s' % (component, report.get('Title', report.standard_title())) report['Tags'] = '%s %s' % (report.get('Tags', ""), component) break # Stop on the first .so that's the interesting one debian/gnome-update-wallpaper-cache.c0000664000000000000000000000406712321122275014753 0ustar /* * Copyright (C) 2010 Canonical, Ltd. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License version 3.0 for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Authored by Didier Roche * * Bug: https://bugs.launchpad.net/bugs/530024 */ #include #include #define GNOME_DESKTOP_USE_UNSTABLE_API #include static GOptionEntry entries[] = { { NULL } }; main (int argc, char *argv[]) { GOptionContext *context = NULL; GError *error = NULL; GdkScreen *screen; GdkRectangle rect; GnomeBG *bg; GSettings *settings; GdkPixbuf *pixbuf; gdk_init (&argc, &argv); context = g_option_context_new ("- refresh wallpaper cache"); g_option_context_add_main_entries (context, entries, NULL); if (!g_option_context_parse (context, &argc, &argv, &error)) { g_printerr ("option parsing failed: %s\n", error->message); g_option_context_free(context); g_error_free (error); return (1); } if (context) g_option_context_free (context); /* cache only the first monitor */ screen = gdk_screen_get_default (); gdk_screen_get_monitor_geometry (screen, 0, &rect); bg = gnome_bg_new (); settings = g_settings_new ("org.gnome.desktop.background"); gnome_bg_load_from_preferences (bg, settings); pixbuf = gdk_pixbuf_new (GDK_COLORSPACE_RGB, FALSE, 8, rect.width, rect.height); gnome_bg_draw (bg, pixbuf, screen, FALSE); g_object_unref (settings); return (0); } debian/gnome-settings-daemon.maintscript0000664000000000000000000000100012321122275015637 0ustar rm_conffile /etc/gnome/config/Editres.ad 3.6.3-0ubuntu3~ rm_conffile /etc/gnome/config/Emacs.ad 3.6.3-0ubuntu3~ rm_conffile /etc/gnome/config/General.ad 3.6.3-0ubuntu3~ rm_conffile /etc/gnome/config/Motif.ad 3.6.3-0ubuntu3~ rm_conffile /etc/gnome/config/Tk.ad 3.6.3-0ubuntu3~ rm_conffile /etc/gnome/config/Xaw.ad 3.6.3-0ubuntu3~ rm_conffile /etc/dbus-1/system.d/org.gnome.SettingsDaemon.DateTimeMechanism.conf 3.6.4-0ubuntu7~ rm_conffile /etc/xdg/autostart/gnome-fallback-mount-helper.desktop 3.8.6.1-0ubuntu9~ debian/gnome-settings-daemon-schemas.gsettings-override0000664000000000000000000000017512321122275020563 0ustar [org.gnome.desktop.wm.keybindings] switch-input-source=['space'] switch-input-source-backward=['space'] debian/rules0000775000000000000000000000257512321122275010256 0ustar #!/usr/bin/make -f include /usr/share/cdbs/1/rules/autoreconf.mk include /usr/share/cdbs/1/rules/debhelper.mk include /usr/share/cdbs/1/rules/utils.mk include /usr/share/cdbs/1/class/gnome.mk include /usr/share/gnome-pkg-tools/1/rules/uploaders.mk include /usr/share/gnome-pkg-tools/1/rules/gnome-get-source.mk LDFLAGS += -Wl,-O1 -Wl,-z,defs -Wl,--warn-unresolved-symbols -Wl,--as-needed DEB_DH_MAKESHLIBS_ARGS_ALL += --no-act DEB_CONFIGURE_EXTRA_FLAGS = --enable-systemd --disable-packagekit --enable-ibus build/gnome-settings-daemon:: gcc -o gnome-settings-daemon/gnome-update-wallpaper-cache debian/gnome-update-wallpaper-cache.c `pkg-config --cflags --libs glib-2.0 gdk-3.0 gdk-x11-3.0 gio-2.0 gnome-desktop-3.0` install/gnome-settings-daemon:: /usr/bin/install -c gnome-settings-daemon/gnome-update-wallpaper-cache 'debian/tmp/usr/lib/gnome-settings-daemon' install -m 644 -D debian/gnome-settings-daemon.user-session.upstart debian/gnome-settings-daemon/usr/share/upstart/sessions/gnome-settings-daemon.conf install -m 644 -D debian/gnome-settings-daemon.user-session.desktop debian/gnome-settings-daemon/usr/share/upstart/xdg/autostart/gnome-settings-daemon.desktop binary-install/gnome-settings-daemon:: find debian -name '*.a' -delete find debian -name '*.la' -delete common-binary-post-install-arch:: list-missing clean:: rm -f gnome-settings-daemon/gnome-update-wallpaper-cache debian/gnome-settings-daemon-schemas.install0000664000000000000000000000004312321122275016377 0ustar usr/share/GConf usr/share/glib-2.0 debian/gnome-settings-daemon.user-session.desktop0000664000000000000000000000020212321122275017414 0ustar [Desktop Entry] Type=Application Name=GNOME Settings Daemon Exec=/usr/lib/gnome-settings-daemon/gnome-settings-daemon Hidden=true debian/gnome-settings-daemon-dev.install0000664000000000000000000000003612321122275015534 0ustar usr/include usr/lib/pkgconfig debian/gnome-settings-daemon.postinst0000664000000000000000000000077312321122275015205 0ustar #! /bin/sh set -e #DEBHELPER# # Remove obsolete conffiles case "$1" in configure) if dpkg --compare-versions "$2" lt-nl "2.24.1"; then rm -rf /etc/gnome/config/xrdb fi if dpkg --compare-versions "$2" lt-nl "2.26.1"; then rm -f /etc/xdg/autostart/gnome-settings-daemon.desktop fi if dpkg --compare-versions "$2" lt-nl "3.6.3-0ubuntu3"; then if [ -d /etc/gnome/config ]; then rmdir --ignore-fail-on-non-empty /etc/gnome/config fi fi esac debian/compat0000664000000000000000000000000212321122275010363 0ustar 9 debian/changelog0000664000000000000000000023166512321122275011054 0ustar gnome-settings-daemon (3.8.6.1-0ubuntu11) trusty; urgency=medium [ Jackson Doak ] * Add git_micmute.patch to add XF86AudioMicMute as a mic mute key [ Robert Ancell ] * debian/patches/90_set_gmenus_xsettings.patch: - Fix error in patch for watching Shell D-Bus names (LP: #1278467) -- Robert Ancell Wed, 09 Apr 2014 13:38:55 +1200 gnome-settings-daemon (3.8.6.1-0ubuntu10) trusty; urgency=medium * gnome-settings-daemon.user-session.upstart: Use XDG_CURRENT_DESKTOP as the instance specifier for gnome-session upstart jobs, since other sessions apart from ubuntu will need to use u-s-d (LP: #1224217) -- Tim Lunn Wed, 12 Mar 2014 16:47:04 +1100 gnome-settings-daemon (3.8.6.1-0ubuntu9) trusty; urgency=medium * debian/patches/git_enable_auto_hidpi.patch: enable hidpi on screen configurations where it makes sense * debian/patches/git_revert_remove_automount_helper.patch: - drop that revert, gnome-shell does the mounting and unity uses u-s-d * debian/gnome-settings-daemon.maintscript: - clean corresponding xdg autostart on upgrade -- Sebastien Bacher Thu, 20 Feb 2014 11:38:39 +0100 gnome-settings-daemon (3.8.6.1-0ubuntu8) trusty; urgency=medium * I hate control.in files. * Apply ubuntu7 control changes to control.in. -- Dimitri John Ledkov Fri, 07 Feb 2014 17:02:23 +0000 gnome-settings-daemon (3.8.6.1-0ubuntu7) trusty; urgency=medium * Mark gnome-settings-daemon-schemas as arch:all. * Mark gnome-settings-daemon-schemas to replace gnome-settings-daemon. * Make gnome-settings-daemon depend on strict matching version of the schemas package. -- Dimitri John Ledkov Fri, 07 Feb 2014 16:32:19 +0000 gnome-settings-daemon (3.8.6.1-0ubuntu6) trusty; urgency=medium [ Robert Ancell ] * debian/control: * debian/gnome-settings-daemon.install: * debian/gnome-settings-daemon-schemas.install: * debian/gnome-settings-daemon-schemas.gsettings-override: - Split out schemas so unity-settings-daemon can use them -- Dimitri John Ledkov Fri, 07 Feb 2014 15:53:09 +0000 gnome-settings-daemon (3.8.6.1-0ubuntu5) trusty; urgency=medium * Make gnome-settings-daemon start on all gnome-session instances, but ubuntu/unity. -- Dimitri John Ledkov Fri, 07 Feb 2014 14:39:59 +0000 gnome-settings-daemon (3.8.6.1-0ubuntu4) trusty; urgency=medium * debian/patches/git_new_screencast_keybinding.patch: git patch to add required keybinding for gnome-shell screencasts. This is required by gnome-shell 3.10 (LP: #1265127) -- Tim Lunn Fri, 07 Feb 2014 11:20:02 +0100 gnome-settings-daemon (3.8.6.1-0ubuntu3) trusty; urgency=medium * debian/patches/git_hidpi_scalling.patch: - backport upstream change to support hi-dpi screens/scaling. You can change the scaling value by writting the "org.gnome.desktop.interface scaling-factor" gsettings key -- Sebastien Bacher Mon, 03 Feb 2014 16:17:44 +0000 gnome-settings-daemon (3.8.6.1-0ubuntu2) trusty; urgency=low * debian/patches/git_xsettings_segfaults.patch: - "unwatch dbus before destroying xsettings managers" (lp: #1232419) -- Sebastien Bacher Tue, 12 Nov 2013 20:32:18 +0100 gnome-settings-daemon (3.8.6.1-0ubuntu1) trusty; urgency=low * New upstream version * debian/patches/git_thumbnail_cleaning_use_less_ios.patch, git_keyboard-Don-t-set-the-XKB-group-switching-option.patch: - dropped, the changes are in the new version -- Sebastien Bacher Wed, 06 Nov 2013 11:23:01 +0100 gnome-settings-daemon (3.8.5-0ubuntu12) trusty; urgency=low * debian/patches/fix_media_keys_on_unity.patch: Another reworking. Try to start the legacy keygrabber all the time. Only don't if we're running shell. Should fix keygrabber in environments without panel or Unity. -- Iain Lane Tue, 29 Oct 2013 17:03:35 +0000 gnome-settings-daemon (3.8.5-0ubuntu11.1) saucy; urgency=low * debian/patches/git_keyboard-Don-t-set-the-XKB-group-switching-option.patch: - If the user has the grp xkb option enabled, pressing the specified key might result in a Next Group keysym instead of the normal one. g-s-d doesn't use the option, and prevents it from being used with the patch. * debian/patches/unity-modifier-media-keys.patch: - Caps lock, next group, double modifier workarounds (lp: #1218322) -- William Hua Thu, 24 Oct 2013 10:46:19 -0400 gnome-settings-daemon (3.8.5-0ubuntu11) saucy; urgency=low * debian/patches/ubuntu-lid-open-reset-ideletime.patch: change idle-timeout-reset key sequence from Alt to Shift (lp: #1227920) -- Stephen M. Webb Tue, 22 Oct 2013 21:46:42 -0400 gnome-settings-daemon (3.8.5-0ubuntu10) saucy; urgency=low * debian/patches/unity-modifier-media-keys.patch: - Support modifier-only keyboard shortcuts (lp: #1218322) -- William Hua Wed, 16 Oct 2013 16:58:35 -0400 gnome-settings-daemon (3.8.5-0ubuntu9) saucy; urgency=low * debian/patches/git_touchpad_scrolling.patch: let enable edge scrolling, on touchpads that don't support 2 fingers scrolling (lp: #1221367) -- Sebastien Bacher Wed, 16 Oct 2013 16:57:37 +0200 gnome-settings-daemon (3.8.5-0ubuntu8) saucy; urgency=low * debian/patches/fix_media_keys_on_unity.patch: Don't rely on org.gnome.ScreenSaver as this might not be available (it's only a recommends of ubuntu-desktop). Use the names owned by (critical components of) the DEs themselves instead. (LP: #1237564) -- Iain Lane Wed, 16 Oct 2013 09:39:12 +0100 gnome-settings-daemon (3.8.5-0ubuntu7) saucy; urgency=low [ Ikuya Awashiro ] * debian/patches/series: - removed git_revert_hardcoded_input_methods.patch. - Hard coded input methods required for some language. (lp: #1230265) [ Tim ] * debian/patches/fix_media_keys_on_unity.patch: Revise patch to load legacy keygrabber for all non-gnome-shell sessions (LP: #1235625) [ Iain Lane ] * Rename on_unity_appeared in the above patch. -- Iain Lane Mon, 07 Oct 2013 17:06:51 +0100 gnome-settings-daemon (3.8.5-0ubuntu6) saucy; urgency=low * debian/patches/git_thumbnail_cleaning_use_less_ios.patch: - Optimise for "do nothing" when cleaning thumbnails (lp: #505085) -- Sebastien Bacher Fri, 04 Oct 2013 18:21:45 +0200 gnome-settings-daemon (3.8.5-0ubuntu5) saucy; urgency=low * debian/patches/git_hardcode_deprecated_gtk_settings.patch: - revert previous change, it's buggy (lp: #1228886). GNOME/GTK upstream decided to drop support for some of their settings in 3.10, but: - those settings are still there and working in saucy - they shouldn't have been dropped without discussion - the fix is to workaround issues with a ppa, which can be solved by simply adding those gsettings key to the schemas in the ppa version -- Sebastien Bacher Fri, 27 Sep 2013 16:46:04 +0200 gnome-settings-daemon (3.8.5-0ubuntu4) saucy; urgency=low * debian/patches/git_hardcode_deprecated_gtk_settings.patch: git patch to make things work with gsettings schemas 3.10 (LP: #1227537) -- Tim Lunn Thu, 19 Sep 2013 19:20:34 +1000 gnome-settings-daemon (3.8.5-0ubuntu3) saucy; urgency=low * debian/patches/53_sync_input_sources_to_accountsservice.patch: - Fix type mismatch between g-s-d and accountsservice (LP: #1225785) -- William Hua Sun, 15 Sep 2013 18:02:02 -0400 gnome-settings-daemon (3.8.5-0ubuntu2) saucy; urgency=low * debian/patches/ubuntu-lid-close-suspend.patch: - Updated to make sure we lock the screen when closing lid without suspend action (LP: #1223070) -- Tim Lunn Tue, 10 Sep 2013 09:28:14 +1000 gnome-settings-daemon (3.8.5-0ubuntu1) saucy; urgency=low [ Tim Lunn ] * Refreshed patches * debian/patches: - fix_media_keys_on_unity.patch: Use legacy media keys keygrabber when running Unity - git_revert_remove_automount_helper.patch: bring back the automount helper, revert upstream commit and port to dbus session tracking. - fix_screenshots_on_unity.patch: bring back support for screenshots via gnome-screenshot when using unity. - ubuntu-lid-close-suspend.patch: Reimplement support for setting lid close suspend actions - ubuntu-fix-desktop-file.patch: Autostart in Unity too - fix_input_switching_on_unity.patch: Bring back support for input switching under Unity - 63_gnome_disable_background_plugin.patch: Disable loading of background plugin for GNOME session (LP: #1219148) * Dropped obsolete patches: - power-check-null-devices.patch, Dropped: Applied in new version - 51_lock_screen_on_suspend.patch, Superseded by handling this key in gnome-screensaver. With that, g-screensaver mirrors what's done in g-shell, and avoids patching settings-daemon. * gnome-settings-daemon.gsettings-override: - Update switch input source keys for 3.8 [ Jeremy Bicha ] * New upstream release (LP: #1219486) - Two-finger scrolling enabled by default (LP: #1217166) - But use edge scrolling if two-finger scrolling isn't available (LP: #1221367) - Fix Super+Space switch-input-source shortcut in Unity (LP: #1201679) * debian/control.in: - Bump minimum glib, gsettings-desktop-schemas, gnome-desktop3, gtk, libpulse, and libwacom - Build-depend on librsvg2-dev - This update needs changes to gnome-control-center so break older versions * Refreshed patches * revert_background_dropping.patch: - Don't drop the background plugin yet, GNOME Fallback & Unity still need it (when Nautilus isn't handling the desktop) * Dropped obsolete patches: - bugzilla_segfault_dpms.patch: Applied in new version - 47_delay_pa_connect_to_idle.patch: Applied in new version - power-no-fallback-notifications.patch: Applied in new version - 60_unity_hide_status_icon.patch - 61_unity_use_application_indicator.patch - 63_unity_start_mounter.patch - logind_support.patch - and patches backported from 3.8 * Disabled patch that need to be rewritten or dropped: - 48_register_client_before_idle_callbacks.patch * debian/patches/touchscreen_rotation.patch: - Updated with latest version from bugzilla * debian/patches/git_revert_hardcoded_input_methods.patch: - Add patch from git (and also applied in Fedora 19) to not hardcode input methods based on the current locale [ Rico Tzschichholz ] * debian/patches: - 16_use_synchronous_notifications.patch: Refreshed -- Jeremy Bicha Mon, 09 Sep 2013 10:21:09 -0400 gnome-settings-daemon (3.6.4-0ubuntu19) saucy; urgency=low * Install the ibus dbus service (LP: #1194138) -- Jeremy Bicha Thu, 29 Aug 2013 11:14:56 -0400 gnome-settings-daemon (3.6.4-0ubuntu18) saucy; urgency=low * debian/patches/sync_input_sources_to_accountsservice.patch: - Update user's accountsservice input sources whenever they change. [ Aron Xu ] * debian/control.in: - Move ibus from Depends to Recommends (lp: #1218342). -- William Hua Thu, 29 Aug 2013 16:10:41 +0200 gnome-settings-daemon (3.6.4-0ubuntu17) saucy; urgency=low * debian/patches/git_keybindings_add_screen_reader_toggle.patch: - Add keyboard shortcut to enable/disable the screen reader. -- Luke Yelavich Fri, 23 Aug 2013 16:08:29 +1000 gnome-settings-daemon (3.6.4-0ubuntu16) saucy; urgency=low [ William Hua ] * debian/control.in: - Depend on IBus 1.5.0. * debian/patches/revert_new_ibus_use.patch: - Drop upstream revert. * debian/patches/ibus-ubuntu-session.patch: - Check for Ubuntu session too * debian/patches/git_keyboard_Adapt_to_gnome_xkb_info_API_change.patch: * debian/patches/git_keyboard_Adapt_to_gnome_xkb_info_API_change_2.patch: - Take upstream's 8174dcd701de399ff28a19efbe9744744b802ce8 and 55fee0c57563b95deddc4396eec87ab6bee35d34 and so we can work with gnome-desktop 3.8. [ Jeremy Bicha ] * debian/gnome-settings-daemon.gsettings-override: - Set switch-input-source keyboard shortcut to Super+Space to match ibus, GNOME 3.8 and Windows 8 default -- Jeremy Bicha Wed, 21 Aug 2013 11:22:42 -0400 gnome-settings-daemon (3.6.4-0ubuntu15) saucy; urgency=low * debian/patches/0001-Fix-media-keys-handling-with-GTK-3.7.8.patch: Fix media-keys handling with GTK 3.8 and XI 2.3. -- Iain Lane Thu, 27 Jun 2013 10:34:06 +0100 gnome-settings-daemon (3.6.4-0ubuntu14) saucy; urgency=low * Actually, gnome-session will still be used with Unity 7; remove the unnecessary 'starting unity' condition from the user session job. -- Iain Lane Sat, 22 Jun 2013 00:50:35 +0100 gnome-settings-daemon (3.6.4-0ubuntu13) saucy; urgency=low [ Iain Lane ] * Start gsd via user session if starting 'unity' too. This is in preparation for starting unity directly. [ Martin Pitt ] * Add logind_support.patch: Inhibit logind's lid handling while g-s-d is running, as in g-s-d 3.6 the power plugin is handling the lid by itself still. This can be dropped when moving to 3.8. (LP: #1180513) -- Martin Pitt Tue, 18 Jun 2013 16:42:10 +0200 gnome-settings-daemon (3.6.4-0ubuntu12) saucy; urgency=low * Rebuild for gnome-desktop 3.8 transition (LP: 1184812) - debian/patches/git_xrandr_dont_include_labeller_widget.patch -- Tim Lunn Tue, 28 May 2013 10:04:36 +1000 gnome-settings-daemon (3.6.4-0ubuntu11) saucy; urgency=low * debian/patches/git_sound_not_polling.patch: Create directory with correct permissions * debian/patches/fix_broken_user_sounds_permissions.patch: Fix broken permissions from previous upload if necessary. -- Iain Lane Fri, 17 May 2013 12:26:49 +0100 gnome-settings-daemon (3.6.4-0ubuntu10) saucy; urgency=low [ Martin Pitt ] * Drop 51_lock_screen_on_suspend.patch: Superseded by handling this key in gnome-screensaver. With that, g-screensaver mirrors what's being done in g-shell, and avoids patching settings-daemon. [ Sebastien Bacher ] * debian/patches/git_housekeeping_ignore_list.patch: - correctly handle ignore list for disk space notifications (lp: #881376) * debian/patches/git_glib_get_xdg_dirs.patch: - use glib to get xdg dirs (rather than reading the environment) * debian/patches/git_sound_not_polling.patch: - don't poll on non existant directories -- Sebastien Bacher Mon, 13 May 2013 15:28:42 +0200 gnome-settings-daemon (3.6.4-0ubuntu9) saucy; urgency=low [ Sebastien Bacher ] * debian/patches/revert_new_ibus_use.patch: - list gsd-keyboard-xkb.c for translation [ Martin Pitt ] * Switch to logind for session tracking. -- Martin Pitt Mon, 29 Apr 2013 10:13:43 -0700 gnome-settings-daemon (3.6.4-0ubuntu8) raring; urgency=low * debian/control.in: - Breaks on g-c-c and indicator-datetime versions using the old interface - recommends systemd-service (lp: #1153567) * debian/gnome-settings-daemon.install: - updated for the patch being dropped * debian/gnome-settings-daemon.main: - clean org.gnome.SettingsDaemon.DateTimeMechanism.conf conffile * debian/patches/revert_git_datetime_dropping.patch: - drop the upstream's revert -- Sebastien Bacher Tue, 26 Mar 2013 21:20:26 +0100 gnome-settings-daemon (3.6.4-0ubuntu7) raring; urgency=low * Add upstart user session job for gnome-settings-daemon. -- Stéphane Graber Tue, 12 Mar 2013 15:06:05 -0400 gnome-settings-daemon (3.6.4-0ubuntu6) raring; urgency=low * debian/patches/nexus_orientation.patch: Fix memory leak when building pathnames, thanks Jean-Baptiste Lallement! (LP: #1123930) -- Jani Monoses Wed, 13 Feb 2013 13:25:19 +0200 gnome-settings-daemon (3.6.4-0ubuntu5) raring; urgency=low * debian/patches/nexus_orientation.patch: Wait until a DBus connection to the xrandr module is in place before trying to change orientation. -- Jani Monoses Tue, 12 Feb 2013 00:07:12 +0200 gnome-settings-daemon (3.6.4-0ubuntu4) raring; urgency=low * debian/patches/nexus_orientation.patch: Correctly set up portrait orientation on first run. Disable the timer that polls the accelerometer on the Nexus 7 if the orientation-lock gsetting is set. -- Jani Monoses Mon, 11 Feb 2013 13:14:46 +0200 gnome-settings-daemon (3.6.4-0ubuntu3) raring; urgency=low * debian/patches/nexus_orientation.patch: Set up a timer to poll sysfs attributes when an MPU6050 sensor is detected and calculate screen orientation based on these raw accelerometer readings. The kernel driver for this sensor used on the Nexus 7 does not currently provide the interface expected by the current code in g-s-d, hence this approach until the final one is decided upon. -- Jani Monoses Wed, 30 Jan 2013 14:13:45 +0200 gnome-settings-daemon (3.6.4-0ubuntu2) raring; urgency=low * debian/patches/touchscreen_rotation.patch: On touchscreens rotate input coordinates by changing the Coordinate Transform Matrix property instead of evdev axis properties. -- Jani Monoses Tue, 29 Jan 2013 16:28:12 +0200 gnome-settings-daemon (3.6.4-0ubuntu1) raring; urgency=low * New upstream version * debian/patches/53_update_schemas_warning.patch: - dropped, the issue is fixed in the new version * debian/patches/bugzilla_segfault_dpms.patch: - dropped the part of the patch which is included in the new tarball * debian/patches/revert_new_ibus_use.patch: refreshed -- Sebastien Bacher Wed, 23 Jan 2013 15:12:37 +0100 gnome-settings-daemon (3.6.3-0ubuntu4) raring; urgency=low * debian/patches/migrate_metacity_keys.patch: - Migrate screenshot/terminal keys from metacity gconf as well (LP: #1058004) -- Timo Jyrinki Thu, 13 Dec 2012 08:49:24 +0200 gnome-settings-daemon (3.6.3-0ubuntu3) raring; urgency=low * debian/control.in: - Pre-Depends: ${misc:Pre-Depends} * debian/compat, debian/control.in: - updated debhelper version * debian/gnome-settings-daemon.maintscript: * debian/gnome-settings-daemon.postinst: - clean old "/etc/gnome/config" xrdb conffiles -- Sebastien Bacher Thu, 06 Dec 2012 19:31:20 +0100 gnome-settings-daemon (3.6.3-0ubuntu2) raring; urgency=low * debian/patches/16_use_synchronous_notifications.patch: - don't segfault when using the screen hotkey (lp: #1082856) * debian/patches/53_update_schemas_warning.patch: - don't list the updates schemas it's not used in ubuntu (lp: #1082986) -- Sebastien Bacher Mon, 26 Nov 2012 16:28:45 +0100 gnome-settings-daemon (3.6.3-0ubuntu1) raring; urgency=low [ Sebastien Bacher ] * New upstream version (lp: #1008840) * debian/patches/git*, debian/patches/power-ignore-bad-dbus-requests.patch, debian/patches/power-ignore-bad-dbus-requests.patch, debian/patches/10_smaller_syndaemon_timeout.patch: - dropped, those fixes are in the new version * debian/control.in: - restore build-depends on libgnomekbd-dev, libxklavier-dev, drop the build-depends on libxkbfile-dev * debian/patches/20_migrate_background_uri.patch: - dropped, it was only needed until the LTS * debian/patches/40_xres_lcddefault.patch: - dropped, that was a workaround for libreoffice that shouldn't be needed and we should better fix libreoffice * debian/patches/61_unity_use_application_indicator.patch: - drop the keyboard indicator code, that will need to be turned into a proper indicator refactored to handle the new ibus config * debian/patches/90_set_gmenus_xsettings.patch: - refreshed for the new version * debian/patches/revert_new_ibus_use.patch: - revert keyboard code to our 3.4 version * debian/patches/sync_keyboard_layout_to_accountsservice.patch: - dropped, the changes are included in the previous patch [ Robert Ancell ] * New upstream release * debian/control: - Bump build-depends on libgnome-desktop-3-dev, libwacom-dev - Drop build-depends on libgnomekbd-dev, libxklavier-dev - Add build-depends on libxkbfile-dev [ Rico Tzschichholz ] * debian/control.in: - Build-depend on gtk-doc-tools [ Iain Lane ] * New upstream release * Refresh patches and remove those applied upstream. * Remove gstreamer BDs which are now obsolete. -- Sebastien Bacher Wed, 21 Nov 2012 17:16:23 +0100 gnome-settings-daemon (3.4.2-0ubuntu14) quantal; urgency=low * debian/patches/git_power_dbus_path.patch: - Fix screen not locking when lid is closed while running GNOME Shell on GDM (LP: #1048420) -- Jeremy Bicha Fri, 28 Sep 2012 21:04:37 -0400 gnome-settings-daemon (3.4.2-0ubuntu13) quantal; urgency=low * debian/gnome-settings-daemon.gsettings-override: - Dropped, override moved to ubuntu-default-settings and ubuntu-gnome-default-settings -- Jeremy Bicha Tue, 11 Sep 2012 21:14:56 -0400 gnome-settings-daemon (3.4.2-0ubuntu12) quantal-proposed; urgency=low * debian/patches/bugzilla_segfault_dpms.patch: - Update to cover another way to get the same segfault. (LP: #971353) -- Michael Terry Wed, 05 Sep 2012 15:42:01 -0400 gnome-settings-daemon (3.4.2-0ubuntu11) quantal-proposed; urgency=low * debian/patches/90_set_gmenus_xsettings.patch: - restore ShellShowsAppMenu xsettings to true under unity, that's the correct thing to do since it supports appmenus and we don't need to workaroud issues with the new nautils since we reverted to the old one -- Sebastien Bacher Wed, 05 Sep 2012 21:16:26 +0200 gnome-settings-daemon (3.4.2-0ubuntu10) quantal; urgency=low * 64_restore_terminal_keyboard_shortcut_schema.patch: - The "Launch Terminal" schema was dropped in the gconf>gsettings switch. Bring it back. (LP: #1010558, LP: #1040081) -- Jeremy Bicha Sun, 26 Aug 2012 12:44:27 -0400 gnome-settings-daemon (3.4.2-0ubuntu9) quantal-proposed; urgency=low [ Sebastien Bacher ] * debian/control.in: - don't build-depends on gconf - updated gnome-control-center breaks version for gsettings * debian/patches/revert_git_a11y_gsettings.patch, debian/patches/revert_git_stop_using_gconf.patch, debian/patches/revert_git_use_gsetting_keybindings.patch: - drop the gconf to gsettings migration reverts (LP: #1035261) [ Keng-Yu Lin ] * debian/patches/git-mask-out-virtual-modifiers.patch - patch from upstream git, fix the grabbing issue of the keyboard shortcut with virtual (Super, Hyper, Meta) modifier. (lp: #950160) [ Edward Donovan ] * debian/source_gnome-settings-daemon.py: Fix for Python 3. (LP: #1013171) [ Hsin-Yi, Chen (hychen) ] * debian/patches/git_xrandr_explicitly_set_clone_state.patch: - "xrandr; explicitly set clone state variable when generating monitor configs" (LP: #1014533) [ Michael Terry ] * debian/patches/git-smartcard-crash.patch: - Don't crash on login with a smartcard (LP: #1031034) -- Sebastien Bacher Thu, 23 Aug 2012 17:04:16 +0200 gnome-settings-daemon (3.4.2-0ubuntu8) quantal; urgency=low * debian/gnome-settings-daemon.gsettings-override: - don't enable the deprecated gconf bridge * debian/patches/revert_git_dropping_gconf_wrapper.patch: - drop the hackish gsettings to gconf copy mechanism, it shouldn't be required after the lts, the code is also make gsd sensible to .convert issues as showed recently by a file-roller update (lp: #1037646) * debian/rules: - don't use deprecated --enable-gconf-bridge -- Sebastien Bacher Mon, 20 Aug 2012 17:53:45 +0200 gnome-settings-daemon (3.4.2-0ubuntu7) quantal; urgency=low * debian/patches/git_better_xi_handling.patch: - should fix multimedia keys (lp: #1034090) * debian/patches/git_new_cups_build.patch: - build with cups 1.6 -- Sebastien Bacher Wed, 08 Aug 2012 15:38:57 +0200 gnome-settings-daemon (3.4.2-0ubuntu6) quantal; urgency=low * debian/patches/90_set_gmenus_xsettings.patch: - set ShellShowsAppMenu xsettings to false under unity so applications go back to use normal menus, should give nautilus its preferences menu entry back for example -- Sebastien Bacher Wed, 11 Jul 2012 18:21:49 +0200 gnome-settings-daemon (3.4.2-0ubuntu5) quantal; urgency=low * debian/patches/10_smaller_syndaemon_timeout.patch: Update to increase the size of the stack allocated array for the extra argument passed to syndaemon. This fixes a crash in the PLT due to a corrupt %ebx register (which holds the GOT base address on i386), which was caused in an earlier function by writing zero in to the location on the stack where the value of %ebx is saved. Thanks to Sebastien Bacher for spotting the buggy patch! (fixes LP: #1007588) -- Chris Coulson Mon, 18 Jun 2012 10:27:29 +0100 gnome-settings-daemon (3.4.2-0ubuntu4) quantal; urgency=low * debian/patches/62_unity_disable_gsd_printer.patch: gracefully exit the print-notifications plugin when running unity -- Lars Uebernickel Mon, 11 Jun 2012 16:17:55 -0400 gnome-settings-daemon (3.4.2-0ubuntu3) quantal; urgency=low * Rebuild for the libgnome-desktop SOVER bump. -- Adam Conrad Thu, 07 Jun 2012 15:59:11 -0600 gnome-settings-daemon (3.4.2-0ubuntu2) quantal; urgency=low * debian/patches/xsettings_signal_handling.patch: - upstream bugzilla patch, fix segfaults in the xsettings code which seem to happen at logout (lp: #946295, #948347, #963704) -- Sebastien Bacher Wed, 23 May 2012 21:50:41 +0200 gnome-settings-daemon (3.4.2-0ubuntu1) quantal; urgency=low * New upstream version: Media-keys: - Fix applications launching through keyboard shortcuts not using the session's ssh agent, or keyrings Mouse: - Fix arguments passed to the custom command And a number of memory leak fixes and translation updates. * debian/patches/git_keyring_environment.patch: - dropped, the fix is in the new version -- Sebastien Bacher Tue, 22 May 2012 21:09:19 +0200 gnome-settings-daemon (3.4.1-0ubuntu2) quantal; urgency=low * debian/patches/power-check-null-devices.patch: - NULL-guard the return value of up_client_get_devices. LP: #868928 * debian/patches/power-ignore-bad-dbus-requests.patch: - If we get a DBus request while the manager isn't active, ignore it. LP: #969535 -- Michael Terry Tue, 01 May 2012 09:30:20 -0700 gnome-settings-daemon (3.4.1-0ubuntu1) precise-proposed; urgency=low * New upstream release: - Fix applying settings to touchpads - Fix possible crashes when exiting - Don't put touchscreens in relative mode, just touch tablets (such as the Bamboo Touch) - Use PrinterAddOption method to set media size - Updated translations * Drop patches which are upstream now: - disconnect_from_up_client.patch - git_device_setting.patch - wacom-keep-touchscreen-absolute.patch -- Martin Pitt Mon, 16 Apr 2012 15:55:26 +0200 gnome-settings-daemon (3.4.0-0ubuntu7) precise; urgency=low * Fix LP: #917598 - Battery critical notification using fallback alert - add debian/patches/power-no-fallback-notifications.patch -- Chris Coulson Thu, 12 Apr 2012 11:43:36 +0100 gnome-settings-daemon (3.4.0-0ubuntu6) precise; urgency=low * debian/patches/wacom-keep-touchscreen-absolute.patch: - Don't set touchscreens to relative mode (LP: #949097) -- Timo Aaltonen Wed, 11 Apr 2012 17:05:04 +0300 gnome-settings-daemon (3.4.0-0ubuntu5) precise; urgency=low * debian/patches/git_device_setting.patch: - "fix applying settings to newly added touchpads" (lp: #973784) -- Sebastien Bacher Tue, 10 Apr 2012 22:47:06 +0200 gnome-settings-daemon (3.4.0-0ubuntu4) precise; urgency=low * debian/patches/disconnect_from_up_client.patch: - Disconnect any signals from a UpClient object before we unref it. UpClients are ref-counted singletons and may stay around after unref, so we have to be explicit. LP: #965487 -- Michael Terry Mon, 09 Apr 2012 12:45:13 -0400 gnome-settings-daemon (3.4.0-0ubuntu3) precise; urgency=low * debian/patches/correct_logout_action.patch: - display the logout action on ctrl-alt-del (lp: #961501) * debian/patches/60_unity_hide_status_icon.patch: - don't show the power status icon under classic either (lp: #965279) * debian/patches/git_keyring_environment.patch: - "Get the environment from gnome-keyring When launching custom applications." (lp: #839444) -- Sebastien Bacher Tue, 03 Apr 2012 17:28:40 +0200 gnome-settings-daemon (3.4.0-0ubuntu2) precise; urgency=low * debian/patches/10_smaller_syndaemon_timeout.patch: - don't change delay, use -t option to block the clicks (lp: #962958) * debian/patches/61_unity_use_application_indicator.patch: - small tweaks to be consistant with other indicators, change the order and label from the two bottom items (lp: #964178) * debian/patches/bugzilla_segfault_dpms.patch: - upstream fix for a segfault (lp: #956824) [ Iain Lane ] * debian/patches/16_use_synchronous_notifications.patch: Fix invalid cast causing segfault when using keyboard backlight keys. (LP: #959874) -- Sebastien Bacher Thu, 29 Mar 2012 21:43:49 +0200 gnome-settings-daemon (3.4.0-0ubuntu1) precise-proposed; urgency=low * New upstream release: - Wacom: Check if the "last-stylus" property has been set - updated translations -- Didier Roche Tue, 27 Mar 2012 10:50:10 +0200 gnome-settings-daemon (3.3.92-0ubuntu2) precise; urgency=low * 51_lock_screen_on_suspend.patch: when closing the lid, only lock the screen at this step if we're not going to suspend or hibernate. -- Marc Deslauriers Tue, 20 Mar 2012 08:39:38 -0400 gnome-settings-daemon (3.3.92-0ubuntu1) precise; urgency=low [ Sebastien Bacher ] * New upstream version, should fix - "Option to "Lock screen afer screen turns off" is ignored" (lp: #959184) - "color-plugin-WARNING **: failed to get edid: unable to get EDID for output" (lp: #863359) * Dropped patches included in the new version * Refreshed the other patches [ Marc Deslauriers ] - 51_lock_screen_on_suspend.patch: refreshed for 3.3.92. -- Sebastien Bacher Mon, 19 Mar 2012 18:57:50 +0100 gnome-settings-daemon (3.3.91-0ubuntu6) precise; urgency=low * debian/patches/61_unity_use_application_indicator.patch: - update to fix issues where the keyboard indicator would not update or reflect the correct layout when changing layout with the keyboard, thanks Charles Kerr (lp: #885730) -- Sebastien Bacher Fri, 16 Mar 2012 11:10:43 +0100 gnome-settings-daemon (3.3.91-0ubuntu5) precise; urgency=low * debian/patches/52_sync_background_to_accountsservice.patch: - don't trigger a warning when using a solid color (lp: #954590) * debian/patches/90_set_gmenus_xsettings.patch: - update from Ryan Lortie to handle correctly new shell sessions [ Gunnar Hjalmarsson ] * debian/patches/43_disable_locale_settings.patch: Description updated. -- Sebastien Bacher Thu, 15 Mar 2012 19:15:43 +0100 gnome-settings-daemon (3.3.91-0ubuntu4) precise; urgency=low * Add 01_fix_multiple_syndaemons.patch: Ensure that a spawned syndaemon gets killed when settings-daemon exists due to a crash, a keyboard interrupt, etc. This avoids having multiple syndaemons run at the same time, which can lead to the trackpad malfunctioning. (LP: #868400) -- Martin Pitt Wed, 14 Mar 2012 11:22:21 +0100 gnome-settings-daemon (3.3.91-0ubuntu3) precise; urgency=low * debian/control.in: - updated gsettings-desktop-schemas requirement for the lock key * debian/patches/61_unity_use_application_indicator.patch: - updated indicators ids, combined with the libappindicator new version that should give the correct wm_class to the fallback gtkstatusicon which should fix some gnome-shell issues (lp: #878951) - use set_icon_full() with "Keyboard" as a11y description (lp: #740726) [ Marc Deslauriers ] * Add a new preference to lock the screen when the system suspends. (LP: #938076) - 51_lock_screen_on_suspend.patch: use lock-on-suspend gsettings to determine if screen should be locked. - 51_always_lock_screen_on_suspend.patch: removed. - 54_lazily_connect_to_screensaver.patch: refreshed. - 60_unity_hide_status_icon.patch: refreshed. -- Sebastien Bacher Fri, 09 Mar 2012 18:25:40 +0100 gnome-settings-daemon (3.3.91-0ubuntu2) precise; urgency=low * debian/patches/git_power_logic.patch: fix logic error, should restore the screen controls (lp: #947748) -- Sebastien Bacher Wed, 07 Mar 2012 11:46:50 +0100 gnome-settings-daemon (3.3.91-0ubuntu1) precise; urgency=low * New upstream version: - fix segfault with some wacom devices (lp: #945477) * debian/patches/git_wacom_fix.patch: - dropped, the fix is in the new version * debian/rules: disable pkgkit support explicitly -- Sebastien Bacher Mon, 05 Mar 2012 21:17:42 +0100 gnome-settings-daemon (3.3.90-0ubuntu4) precise; urgency=low * Renamed unity patches to start with _unity and be in the same range, it makes easier to see what patches we have * debian/control.in: - updated libappindicator version requirement for set_title() * debian/patches/60_unity_hide_status_icon.patch: - updated to fix a case not handled before (lp: #934582) * debian/patches/61_unity_use_application_indicator.patch: - set an indicator title for the unity hud benefit (lp: #943319) -- Sebastien Bacher Wed, 29 Feb 2012 18:28:11 +0100 gnome-settings-daemon (3.3.90-0ubuntu3) precise; urgency=low * debian/patches/git_wacom_fix.patch: - deal better with some wacom devices to avoiding segfaults (lp: #934445) * debian/source_gnome-settings-daemon.py: - correctly separate tags with spaces so they don't get concatenated -- Sebastien Bacher Fri, 24 Feb 2012 12:39:29 +0100 gnome-settings-daemon (3.3.90-0ubuntu2) precise; urgency=low * debian/gnome-settings-daemon.install: - install the hook -- Sebastien Bacher Tue, 21 Feb 2012 22:28:16 +0100 gnome-settings-daemon (3.3.90-0ubuntu1) precise; urgency=low * New upstream version * debian/control.in: - build-depends on libxtst-dev and xserver-xorg-input-wacom - updated glib requirement * debian/patches/buggy_error_handling_segfault.patch: - dropped, the patch is in the new version * debian/patches/git_numlock_status.patch: - dropped, the patch is in the new version * debian/rules: - drop -Bsymbolic-functions workaround, upstream fixed the issue * debian/source_gnome-settings-daemon.py: - set title and tag with the component which had issues for segfaults -- Sebastien Bacher Tue, 21 Feb 2012 12:37:47 +0100 gnome-settings-daemon (3.3.5-0ubuntu3) precise; urgency=low * debian/patches/buggy_error_handling_segfault.patch: - don't try to print an unset error variable (lp: #932953) -- Sebastien Bacher Thu, 16 Feb 2012 17:03:26 +0100 gnome-settings-daemon (3.3.5-0ubuntu2) precise; urgency=low * debian/patches/git_numlock_status.patch: - correctly update the numlock status (lp: #933405) -- Sebastien Bacher Thu, 16 Feb 2012 15:47:19 +0100 gnome-settings-daemon (3.3.5-0ubuntu1) precise; urgency=low * New upstream version (lp: #931656), refreshed patches, thanks Jeremy Bicha for starting the work on the new version: - change the sound level by device (lp: #340720) - correctly unassign keybindings (lp: #515670) - define keybinding to take a screenshot of a selection (lp: #625518) - resolve some segfaults (lp: #865286) * debian/control.in: - build-depends on libgudev-1.0-dev - breaks unity-greeter (<< 0.2.1-0ubuntu1) due to the wacom schema rename - build-depends on libwacom - updated gtk, gnome-desktop3, g-d-s, upower requirements * debian/gnome-settings-daemon.gsettings-override: - don't set deprecated "sleep-inactive-battery" key * debian/patches/90_set_gmenus_xsettings.patch: - refreshed, we don't handle gnome-shell xsettings yet because we still ship 3.2, that patch will need an update if we go for the new version * debian/patches/git_gsettings_write_only_when_required.patch; debian/patches/50_add_dell_backlight.patch: - dropped the fix is in the new version * debian/patches/47_delay_pa_connect_to_idle.patch: - commented, will need to be updated if still needed * debian/patches/revert_git_datetime_dropping.patch: - revert the datetime service dropping, ubuntu-system-service doesn't implement the timedated interfaces * debian/patches/revert_git_dropping_gconf_wrapper.patch: - revert the gconf code dropping, we might still need the settings gateway for the lts (though it's a bit hackish) * debian/patches/revert_git_use_gsetting_keybindings.patch: - revert the keybindings switch to gsettings, compiz is not ready, it's likely possible to update the patch to do either according to the session in use at runtime if somebody wants to work on that * debian/patches/revert_git_a11y_gsettings.patch: - similar to the previous one * debian/patches/revert_git_stop_using_gconf.patch: - don't stop using gconf, the other patches listed before need it * debian/rules: - don't use -Bsymbolic-functions to workaround upstream issues - drop deprecated --enable-pulse option - use --disable-systemd * debian/watch: - watch for .xz -- Sebastien Bacher Wed, 15 Feb 2012 11:41:52 +0100 gnome-settings-daemon (3.2.2-0ubuntu17) precise; urgency=low * debian/patches/disable_three_touch_tap.patch - Disable three-touch tap so three-touch gestures work -- Chase Douglas Mon, 13 Feb 2012 21:45:07 -0800 gnome-settings-daemon (3.2.2-0ubuntu16) precise; urgency=low * debian/patches/06_use_application_indicator.patch: - Check for gtk3 version of libappindicator, not gtk2 * debian/patches/sync_keyboard_layout_to_accountsservice.patch: - Sync user's list of layouts to accountsservice so it can in turn inform LightDM. LP: #915468 -- Michael Terry Mon, 13 Feb 2012 10:40:21 -0500 gnome-settings-daemon (3.2.2-0ubuntu15) precise; urgency=low * debian/patches/46_share_rr_screen.patch: - dropped that optimization, upstream fixed it in gnome-desktop instead -- Sebastien Bacher Mon, 06 Feb 2012 11:09:47 +0100 gnome-settings-daemon (3.2.2-0ubuntu14) precise; urgency=low * debian/patches/51_always_lock_screen_on_suspend.patch: added missing brackets that was preventing screen locking from working at all. (LP: #924336) -- Marc Deslauriers Tue, 31 Jan 2012 10:10:41 -0500 gnome-settings-daemon (3.2.2-0ubuntu13) precise; urgency=low * debian/patches/51_always_lock_screen_on_suspend.patch: updated to lock the screen on suspend and hibernate, but only if the user hasn't configured autologin. -- Marc Deslauriers Sat, 28 Jan 2012 16:15:17 -0500 gnome-settings-daemon (3.2.2-0ubuntu12) precise; urgency=low * Updated some patches with bug references * debian/patches/02_missing_libs.patch: - dropped, that patch is a leftover and not required nowadays * debian/patches/16_use_synchronous_notifications.patch: - use the correct widget so the media key sounds work (lp: #909407) [ Martin Pitt ] * debian/gnome-settings-daemon.gsettings-override: Set default idle dim time to 30 seconds. 10 seconds is a bit unnerving when you want to read something or show photos. (LP: #918928) -- Sebastien Bacher Thu, 26 Jan 2012 22:36:41 +0100 gnome-settings-daemon (3.2.2-0ubuntu11) precise; urgency=low * debian/patches/git_gsettings_write_only_when_required.patch: - git patch, don't write to gsettings when not required (i.e on login) -- Sebastien Bacher Thu, 19 Jan 2012 19:46:01 +0100 gnome-settings-daemon (3.2.2-0ubuntu10) precise; urgency=low * Rebuild with the newest pkgbinarymangler (lp: #913085) * debian/control.in: build-depends on libnss3-dev for smartcard support -- Sebastien Bacher Fri, 13 Jan 2012 17:32:40 +0100 gnome-settings-daemon (3.2.2-0ubuntu9) precise; urgency=low * Rebuild with fixed pkgbinarymangler (lp: #913085), that should fix broke permissions errors (lp: #915600) -- Sebastien Bacher Fri, 13 Jan 2012 11:44:32 +0100 gnome-settings-daemon (3.2.2-0ubuntu8) precise; urgency=low * debian/patches/90_set_gmenus_xsettings.patch: - set the ShellShowsMenubar and ShellShowsAppMenu xsettings under unity -- Sebastien Bacher Thu, 12 Jan 2012 11:34:38 +0100 gnome-settings-daemon (3.2.2-0ubuntu7) precise; urgency=low * Add 54_lazily_connect_to_screensaver.patch: Do not D-BUS activate gnome-screensaver right at startup, this unnecessarily slows down boot speed. Instead, D-BUS activate it the first time we actually need it. (LP: #912186) -- Martin Pitt Thu, 05 Jan 2012 12:42:24 +0100 gnome-settings-daemon (3.2.2-0ubuntu6) precise; urgency=low * Add 53_disable_gsd_printer_on_unity.patch: Disable gsd-printer plugin under Unity. We are still using system-config-printer for this, so no need to start another service for this. -- Martin Pitt Wed, 04 Jan 2012 16:15:47 +0100 gnome-settings-daemon (3.2.2-0ubuntu5) precise; urgency=low * debian/patches/52_sync_background_to_accountsservice.patch: - Watch background gsettings value and synchronize it to the accountsservice daemon for the benefit of unity-greeter -- Michael Terry Fri, 09 Dec 2011 15:35:40 -0500 gnome-settings-daemon (3.2.2-0ubuntu4) precise; urgency=low * 42_onlyshowin_unity.patch: the gnome-shell session is called "gnome", use the correct name so nautilus doesn't open in shell sessions (lp: #892989) -- Sebastien Bacher Fri, 02 Dec 2011 12:12:29 +0100 gnome-settings-daemon (3.2.2-0ubuntu3) precise; urgency=low * Upload for Precise -- Rodrigo Moya Wed, 16 Nov 2011 12:59:33 +0100 gnome-settings-daemon (3.2.2-0ubuntu2) oneiric-proposed; urgency=low * debian/patches/07_hide_status_icon_on_unity.patch: - Never show the power status icon when running Unity (LP: #833397) -- Rodrigo Moya Tue, 15 Nov 2011 11:12:54 +0100 gnome-settings-daemon (3.2.2-0ubuntu1) oneiric-proposed; urgency=low * New upstream release (LP: #888526) * debian/patches/00git_remove_assertions.patch: * debian/patches/git_correct_suspend_bus.patch: - Remove upstreamed patches * debian/patches/16_use_synchronous_notifications.patch: * debian/patches/45_suppress-printer-may-not-be-connected-notification.patch: - Rebased -- Rodrigo Moya Thu, 10 Nov 2011 12:15:05 +0100 gnome-settings-daemon (3.2.1-0ubuntu3) oneiric-proposed; urgency=low * debian/patches/00git_remove_assertions.patch: - git patch to remove assertions that shouldn't be there (LP: #878486) -- Rodrigo Moya Tue, 25 Oct 2011 12:52:39 +0200 gnome-settings-daemon (3.2.1-0ubuntu2) oneiric-proposed; urgency=low [ Didier Roche ] * debian/patches/16_use_synchronous_notifications.patch: - make our patch using the new icon name (LP: #877058) [ Sebastien Bacher ] * debian/patches/git_correct_suspend_bus.patch: - git patch to fix a suspend regression in the new version (lp: #878076) -- Didier Roche Wed, 19 Oct 2011 17:25:16 +0200 gnome-settings-daemon (3.2.1-0ubuntu1) oneiric-proposed; urgency=low * New upstream release (LP: #877326) * debian/patches/00git_dont_restore_brightness.patch: * debian/patches/00git_fix_reference_leaks.patch: * debian/patches/00git_fix_async_dbus_crash.patch: * debian/patches/00git_dont_sleep_on_idle_by_default.patch: * debian/patches/00git_dont_revert_pre_idle_brigthness.patch: * debian/patches/00git_avoid_undesired_sleeps.patch: * debian/patches/49_fix_suspend_media_key.patch: - Remove upstreamed patches * debian/patches/16_use_synchronous_notifications.patch: - Rebased -- Rodrigo Moya Tue, 18 Oct 2011 11:29:23 +0200 gnome-settings-daemon (3.2.0-0ubuntu5) oneiric; urgency=low [ Rodrigo Moya ] * debian/patches/00git_avoid_undesired_sleeps.patch: - Avoid sleeping the computer when disabled (LP: #864479) and ditto for the display (LP: #863038) [ Marc Deslauriers ] * debian/patches/51_always_lock_screen_on_suspend.patch: - always lock the screen when suspending or hibernating, even if automatic screen lock is disabled. (LP: #847814) -- Marc Deslauriers Mon, 03 Oct 2011 17:23:23 -0400 gnome-settings-daemon (3.2.0-0ubuntu4) oneiric; urgency=low * debian/patches/00git_dont_sleep_on_idle_by_default.patch: - Don't sleep on idle by default (LP: #860485) * debian/patches/00git_dont_revert_pre_idle_brigthness.patch: - Do not revert to the pre-idle brightness if idle dimming is disabled * debian/patches/50_add_dell_backlight.patch: - Add 'dell_backlight' module to gsd-backlight-helper (LP: #862474) -- Rodrigo Moya Thu, 29 Sep 2011 16:47:57 +0200 gnome-settings-daemon (3.2.0-0ubuntu3) oneiric; urgency=low * debian/patches/00git_fix_async_dbus_crash.patch: - Fix async DBus calls crashes (LP: #832603) * debian/patches/49_fix_suspend_media_key.patch: - Rebased -- Rodrigo Moya Wed, 28 Sep 2011 17:14:53 +0200 gnome-settings-daemon (3.2.0-0ubuntu2) oneiric; urgency=low * debian/patches/49_fix_suspend_media_key.patch: Fix screen locking when suspending via a media key. (LP: #859498) -- Marc Deslauriers Tue, 27 Sep 2011 11:34:03 -0400 gnome-settings-daemon (3.2.0-0ubuntu1) oneiric; urgency=low * New upstream release * debian/patches/00git_dont_restore_brightness.patch: - Don't restore brightness if it's never been set * debian/patches/00git_fix_reference_leaks.patch: - Fix 2 small reference leaks -- Rodrigo Moya Mon, 26 Sep 2011 17:57:20 +0200 gnome-settings-daemon (3.1.92-0ubuntu3) oneiric; urgency=low * Fix LP: #854101 - various startup time improvements: * debian/patches/46_share_rr_screen.patch: - Share a single GnomeRRScreen across plugins, rather than having the xrandr, color and power plugins each create their own, which results in 3 reprobes before running the main loop. Thanks to Rodrigo Moya for tidying this up a bit. * debian/patches/47_delay_pa_connect_to_idle.patch: - Don't connect to pulseaudio until we are running the main loop. Starting pulseaudio seems to block for around a second here on my machine * debian/patches/48_register_client_before_idle_callbacks.patch: - Create the GDBusProxy for gnome-session synchronously, and then schedule the RegisterClient call with a higher priority. This ensures that we register with the session manager as soon as we start the main loop, and before running any other idle callbacks * debian/patches/16_use_synchronous_notifications.patch: - Make the volume notifications work correctly again -- Chris Coulson Thu, 22 Sep 2011 15:44:40 +0100 gnome-settings-daemon (3.1.92-0ubuntu2) oneiric; urgency=low * debian/patches/45_suppress-printer-may-not-be-connected-notification.patch: Do not show notifications if the printer state reason "connecting-to-device" is reported by CUPS. The text of this state reason notificatioon is the misleading "Printer XXX may not be connected" and the reason is set in every print job (usually only for a short time but enough to trigger the notifier). As we are after UI freeze we simply suppress this notification with this patch (do not forward upstream). The real fix would be improving the text, like really saying "Connecting to printer XXX ..." (LP: #842768). -- Till Kamppeter Thu, 15 Sep 2011 18:34:24 +0200 gnome-settings-daemon (3.1.92-0ubuntu1) oneiric; urgency=low * New upstream release * debian/control: - Bump libcolord-dev build dependency * debian/patches/00git_guard_against_division_by_0.patch: * debian/patches/00git_dont_crash_if_session_not_ready.patch: * debian/patches/00git_numlock_status.patch: * debian/patches/00git_disconnect_callbacks.patch: - Remove upstream patches * debian/patches/06_use_application_indicator.patch: * debian/patches/16_use_synchronous_notifications.patch: - Rebased -- Rodrigo Moya Mon, 19 Sep 2011 17:05:48 +0200 gnome-settings-daemon (3.1.91-0ubuntu5) oneiric; urgency=low * debian/patches/00git_disconnect_callbacks.patch: - Disconnect callbacks when cleaning up (LP: #837373) -- Rodrigo Moya Tue, 13 Sep 2011 11:00:41 +0200 gnome-settings-daemon (3.1.91-0ubuntu4) oneiric; urgency=low * debian/patches/00git_numlock_status.patch: - git backport, store the numlock status and apply it (lp: #841748) -- Sebastien Bacher Fri, 09 Sep 2011 15:16:09 +0200 gnome-settings-daemon (3.1.91-0ubuntu3) oneiric; urgency=low * debian/control: - Build depend on libgnome-desktop3-dev >= 3.1.5, which is what upstream asks for * debian/patches/00git_guard_against_division_by_0.patch: - Guard against dividing by 0 in ABS_TO_PERCENTAGE macro (LP: #833595) * debian/patches/00git_dont_crash_if_session_not_ready.patch: - Don't crash if we try to calculate the idle state before connected to the session (LP: #836014) -- Rodrigo Moya Wed, 07 Sep 2011 12:07:45 +0200 gnome-settings-daemon (3.1.91-0ubuntu2) oneiric; urgency=low * Fix the volume OSD patch so that the volume level is displayed correctly again - update debian/patches/16_use_synchronous_notifications.patch -- Chris Coulson Mon, 05 Sep 2011 17:40:06 +0100 gnome-settings-daemon (3.1.91-0ubuntu1) oneiric; urgency=low * New upstream release * debian/patches/01_git_do_power_init_in_start.patch: * debian/patches/01_git_double_check_hash_table.patch: * debian/patches/01_git_fix_brightness_step_amount.patch: - Remove upstreamed patches -- Rodrigo Moya Mon, 05 Sep 2011 16:48:28 +0200 gnome-settings-daemon (3.1.90-0ubuntu3) oneiric; urgency=low * debian/patches/01_git_double_check_hash_table.patch: - Double check stuff we add to the hash table to avoid crashes when cleaning up (LP: #839322) -- Rodrigo Moya Fri, 02 Sep 2011 16:17:24 +0200 gnome-settings-daemon (3.1.90-0ubuntu2) oneiric; urgency=low * debian/patches/01_git_fix_brightness_step_amount.patch: - Fix BRIGHTESS_STEP_AMOUNT calculation macro (LP: #827517) * debian/patches/01_git_do_power_init_in_start.patch: - Do power plugin initialization in _start, not _init, to avoid multiple crashes (LP: #836014) -- Rodrigo Moya Thu, 01 Sep 2011 10:33:58 +0200 gnome-settings-daemon (3.1.90-0ubuntu1) oneiric; urgency=low * New upstream release * debian/patches/16_use_synchronous_notifications.patch: * debian/patches/42_onlyshowin_unity.patch: - Rebased patches * debian/patches/44_lock_before_suspend.patch: - Remove upstream patch -- Rodrigo Moya Mon, 29 Aug 2011 16:04:57 +0200 gnome-settings-daemon (3.1.5-0ubuntu6) oneiric; urgency=low * debian/patches/44_lock_before_suspend.patch: ensure the screen is locked before suspending. (LP: #824188) -- Marc Deslauriers Thu, 25 Aug 2011 23:44:36 -0400 gnome-settings-daemon (3.1.5-0ubuntu5) oneiric; urgency=low * Make the keyboard backlight notification use notify-osd too - update debian/patches/16_use_synchronous_notifications.patch -- Chris Coulson Tue, 23 Aug 2011 15:26:34 +0100 gnome-settings-daemon (3.1.5-0ubuntu4) oneiric; urgency=low * Make the brightness osd use synchronous notify-osd notifications - update debian/patches/16_use_synchronous_notifications.patch * Add missing liblcms2-dev build-dep - update debian/control{.in} -- Chris Coulson Mon, 22 Aug 2011 22:00:23 +0100 gnome-settings-daemon (3.1.5-0ubuntu3) oneiric; urgency=low * debian/gnome-settings-daemon.gsettings-override: - Enable GConf bridge plugin by default * debian/patches/10_smaller_syndaemon_timeout.patch: - Use a smaller timeout for syndaemon (LP: #801763) -- Rodrigo Moya Mon, 22 Aug 2011 10:46:19 +0200 gnome-settings-daemon (3.1.5-0ubuntu1) oneiric; urgency=low * New upstream release * debian/patches/06_use_application_indicator.patch: - Rebased -- Rodrigo Moya Tue, 16 Aug 2011 10:31:48 +0200 gnome-settings-daemon (3.1.4-0ubuntu5) oneiric; urgency=low * debian/patches/43_disable_locale_settings.patch: - Don't set locales since they are set in Oneiric by sourcing ~/.profile. -- Gunnar Hjalmarsson Mon, 15 Aug 2011 10:14:05 +0200 gnome-settings-daemon (3.1.4-0ubuntu4) oneiric; urgency=low * debian/control: * debian/patches/series: * debian/patches/03_disable_colord.patch: - Enable building with colord (LP: #788108) -- Rodrigo Moya Thu, 11 Aug 2011 13:57:00 +0200 gnome-settings-daemon (3.1.4-0ubuntu3) oneiric; urgency=low * debian/patches/42_onlyshowin_unity.patch: - tweak the new automount .desktop as well to run under unity (lp: #816774) -- Sebastien Bacher Mon, 01 Aug 2011 18:09:29 +0200 gnome-settings-daemon (3.1.4-0ubuntu2) oneiric; urgency=low * debian/control: - Add missing build dependency on libupower-glib-dev -- Rodrigo Moya Tue, 26 Jul 2011 15:34:10 +0200 gnome-settings-daemon (3.1.4-0ubuntu1) oneiric; urgency=low * New upstream release * debian/control: - bumo libgnome-desktop dependency * debian/patches/01_git_a11y_keyboard_cleanup.patch: * debian/patches/41_fix_key_grab.patch: - Remove upstreamed patches * debian/patches/06_use_application_indicator.patch: * debian/patches/16_use_synchronous_notifications.patch: - Rebased -- Rodrigo Moya Mon, 25 Jul 2011 12:00:12 +0200 gnome-settings-daemon (3.1.3-0ubuntu7) oneiric; urgency=low * debian/patches/42_onlyshowin_unity.patch: - Add Unity to OnlyShowIn value (LP: #803519) * debian/control.in: - Remove Debian's Vcs fields -- Michael Terry Tue, 19 Jul 2011 15:02:18 -0400 gnome-settings-daemon (3.1.3-0ubuntu6) oneiric; urgency=low * debian/gnome-settings-daemon.gsettings-override: - Turn on autosleep on battery for Energy Star 5.0 compliance (LP: #604635) - Suspend by default when system sleep button is pressed - Suspend by default for low battery as hibernate can be slow & unreliable -- Jeremy Bicha Mon, 18 Jul 2011 08:03:30 +0200 gnome-settings-daemon (3.1.3-0ubuntu5) oneiric; urgency=low * debian/patches/01_git_shorter_syndaemon_delay.patch: - Remove this patch, it fixes the annoyance for some users and breaks it for others * debian/patches/17_react_when_streams_removed.patch: - Remove patch not being applied and already upstream * debian/patches/01_git_a11y_keyboard_cleanup.patch: - Do proper cleanup when the plugin is stopped (LP: #804946) * debian/patches/06_use_application_indicator.patch: - Rebased -- Rodrigo Moya Tue, 12 Jul 2011 13:04:51 +0200 gnome-settings-daemon (3.1.3-0ubuntu4) oneiric; urgency=low [ Marco Trevisan (Treviño) ] * debian/patches/06_use_application_indicator.patch - Updated to support libappindicator scroll event to change the keyboard layout via mouse-wheel [ Chris Coulson ] * Fix the volume OSD notifications to work properly again (when the media keys work properly) - update debian/patches/16_use_synchronous_notifications.patch * Fix the logic in grab_key_unsafe to not reject keys which are useful to grab without a modifier. Fixes the media-keys plugin - add debian/patches/41_fix_key_grab.patch -- Chris Coulson Wed, 13 Jul 2011 00:13:36 +0100 gnome-settings-daemon (3.1.3-0ubuntu3) oneiric; urgency=low * debian/gnome-settings-daemon.gsettings-override: Set default action for power button back to 'interactive'. (LP: #806855) -- Martin Pitt Mon, 11 Jul 2011 12:19:38 +0200 gnome-settings-daemon (3.1.3-0ubuntu2) oneiric; urgency=low * debian/patches/06_use_application_indicator.patch: - Fix typo in keyboard indicator icon name (LP: #805743) -- Robert Ancell Tue, 05 Jul 2011 11:35:37 +1000 gnome-settings-daemon (3.1.3-0ubuntu1) oneiric; urgency=low * New upstream release * debian/patches/01_git_check_touchpad.patch: - Remove upstreamed patch * debian/patches/06_use_application_indicator.patch: - Rebased -- Rodrigo Moya Mon, 04 Jul 2011 22:21:28 +0200 gnome-settings-daemon (3.1.2-0ubuntu2) oneiric; urgency=low * debian/patches/01_git_shorter_syndaemon_delay.patch: - Make syndaemon delay shorter (LP: #801763) -- Rodrigo Moya Wed, 29 Jun 2011 11:31:41 +0200 gnome-settings-daemon (3.1.2-0ubuntu1) oneiric; urgency=low * New upstream release * debian/control: - Bump dependency on libgnome-desktop-3-dev - Conflict with gnome-color-manager < 3.0 - Build-Depend on hwdata * debian/watch: - Watch .bz2 tarball and unstable series * debian/patches/06_use_application_indicator.patch: * debian/patches/16_use_synchronous_notifications.patch: - Rebased * debian/patches/03_disable_colord.patch: - Disable color plugin if colord is not found * debian/patches/01git_add_missing_schema_for_gconf.patch: - Remove upstreamed patch * debian/patches/01_git_check_touchpad.patch: - Add GIT patch to only disable touchpad, not all input devices -- Rodrigo Moya Fri, 24 Jun 2011 12:33:25 +0200 gnome-settings-daemon (3.0.2-1ubuntu4) oneiric; urgency=low * debian/control.in: stop depending on libgnome2-common -- Sebastien Bacher Fri, 10 Jun 2011 18:48:41 +0200 gnome-settings-daemon (3.0.2-1ubuntu3) oneiric; urgency=low * debian/patches/01git_add_missing_schema_for_gconf.patch: - Add upstream patch to add missing GSettings schema for GConf conversion plugin -- Rodrigo Moya Fri, 10 Jun 2011 16:29:26 +0200 gnome-settings-daemon (3.0.2-1ubuntu2) oneiric; urgency=low * debian/patches/20_migrate_background_uri.patch: - Convert old filenames to an URI, to have migration of GConf background to GSettings work correctly -- Rodrigo Moya Tue, 07 Jun 2011 16:33:00 +0200 gnome-settings-daemon (3.0.2-1ubuntu1) oneiric; urgency=low * New upstream release * debian/patches/16_use_synchronous_notifications.patch: - Rebased * debian/patches/41_dont_convert_nonexistant_key.patch: - Removed upstreamed patch -- Rodrigo Moya Tue, 24 May 2011 11:27:08 +0200 gnome-settings-daemon (3.0.1-1ubuntu4) oneiric; urgency=low * debian/gnome-settings-daemon.gconf-defaults: * debian/gnome-settings-daemon.gsettings-override: - Move default GConf settings to GSettings -- Rodrigo Moya Mon, 23 May 2011 16:06:19 +0200 gnome-settings-daemon (3.0.1-1ubuntu3) oneiric; urgency=low * Don't try to convert show-keyboard-leds-indicator in gnome-settings-daemon.convert. It has no schema, and makes gsettings-data-convert crash - add debian/patches/41_dont_convert_nonexistant_key.patch - update debian/patches/series -- Chris Coulson Fri, 20 May 2011 11:45:37 +0100 gnome-settings-daemon (3.0.1-1ubuntu2) oneiric; urgency=low * debian/patches/06_use_application_indicator.patch: - GkbKeyboardConfig's layouts_variants is now an array of strings, not a list. Fixes crash -- Rodrigo Moya Wed, 18 May 2011 10:40:17 +0200 gnome-settings-daemon (3.0.1-1ubuntu1) oneiric; urgency=low * New upstream release -- Rodrigo Moya Tue, 17 May 2011 16:37:27 +0200 gnome-settings-daemon (3.0.0.1-1ubuntu4) oneiric; urgency=low * debian/control: - Rename build dependency from libnotify4-dev to libnotify-dev -- Rodrigo Moya Tue, 17 May 2011 12:17:12 +0200 gnome-settings-daemon (3.0.0.1-1ubuntu3) oneiric; urgency=low * debian/patches/06_use_application_indicator.patch: - Fix call to xkl_engine_get_instance to pass a Display, not a GdkDisplay -- Rodrigo Moya Wed, 11 May 2011 09:25:54 +0200 gnome-settings-daemon (3.0.0.1-1ubuntu2) oneiric; urgency=low * debian/patches/06_use_application_indicator.patch: - Fix call to non existing API -- Rodrigo Moya Mon, 09 May 2011 11:24:49 +0200 gnome-settings-daemon (3.0.0.1-1ubuntu1) oneiric; urgency=low [ Guido Günther ] * Bump build-dependency on libgnome-desktop-3-dev (Closes: #622689) [ Rodrigo Moya ] * Rebase from Debian, remaining Ubuntu changes: * debian/control: - Build-depend on libnotify4-dev, not libnotify-dev - Add Buil-depend on libappindicator3-dev - Add Vcs-Bzr URL * debian/gnome-settings-daemon.install: * debian/gnome-settings-daemon.postinst: - Keep autostart files in standard directories * debian/gnome-update-wallpaper-cache.c: * debian/rules: - Add wallpaper cache updater program * debian/patches/02_missing_libs.patch: - Add missing X11 libraries to build dependencies * debian/patches/05_disable_corner_tapping.patch: - Disable corner tapping when disabling tap to click * debian/patches/06_use_application_indicator.patch: - Use application indicators * debian/patches/16_use_synchronous_notifications.patch: - Use synchronous notifications when they are supported * debian/patches/17_react_when_streams_removed.patch: - React to stream-removed signal from GvcMixerControl * debian/patches/40_xres_lcddefault.patch: - OpenOffice.org subpixel font rendering broken with new cairo * debian/gnome-settings-daemon.gconf-defaults: - Needs to be moved to GSettings -- Rodrigo Moya Wed, 04 May 2011 13:07:16 +0200 gnome-settings-daemon (3.0.0.1-1) experimental; urgency=low * New upstream release. -- Frederic Peters Mon, 28 Mar 2011 11:37:24 +0530 gnome-settings-daemon (2.91.93-1) experimental; urgency=low * New upstream release. -- Frederic Peters Sun, 27 Mar 2011 19:15:59 +0530 gnome-settings-daemon (2.91.92-1) experimental; urgency=low * New upstream release. -- Frederic Peters Wed, 23 Mar 2011 19:24:48 +0100 gnome-settings-daemon (2.91.91-1) experimental; urgency=low [Frederic Peters] * New upstream release. [Emilio Pozuelo Monfort] * debian/control.in: + Re-add build dependency on libxklavier-dev, since configure.ac actually requires it. -- Frederic Peters Tue, 08 Mar 2011 19:17:09 +0100 gnome-settings-daemon (2.91.90-2) experimental; urgency=low * debian/control.in: * Add build-dep on recent libgnomekbd-dev * Remove direct build-depend on libxklavier-dev, libgnomekbd-dev will pull in the right version -- Sjoerd Simons Sat, 26 Feb 2011 21:26:07 +0000 gnome-settings-daemon (2.91.90-1) experimental; urgency=low * New upstream release. - gnome-settings-daemon.install: keybindings for accessibility tools have been moved to the gnome-control-center module. -- Frederic Peters Tue, 22 Feb 2011 22:49:26 +0100 gnome-settings-daemon (2.91.9-1) experimental; urgency=low [ Sebastien Bacher ] * debian/gnome-settings-daemon.install: - install the polkit files there * debian/control.in: - build-depends on libpolkit-gobject-1-dev - drop the build-depends on libxrandr-dev and libxrender-dev, the configure doesn't use those in the new version - recommends pulseaudio since it's used for the multimedia keys (Close: #611198) [ Emilio Pozuelo Monfort ] * debian/patches/02_missing_libs.patch: + Removed. This was fixed upstream in a different way a long time ago. The patch was also disabled on 2.91.5.1-1 without any bad consequences. * New upstream release. + d/patches/0001-Ensure-the-volume-doesn-t-underflow-and-wrap-around.patch, d/patches/13_monitor_kfreebsd.patch: - Removed, fixed upstream. + debian/control.in: - Updated build dependencies. - Update the gtk+ 3 build dependency for the new package name. -- Emilio Pozuelo Monfort Sat, 19 Feb 2011 14:28:40 +0000 gnome-settings-daemon (2.91.8-1) experimental; urgency=low [ Sjoerd Simons ] * Enable pulseaudio support * Enable the settings d-conf <-> gconf bridge * d/p/0001-Ensure-the-volume-doesn-t-underflow-and-wrap-around.patch + Added. Fix a bug where it was possible to lower the volume below zero, causing it to wrap-around to MAXUINT. [ Emilio Pozuelo Monfort ] * New upstream release. + debian/control.in: - Update build dependencies. * debian/rules: - Remove duplicated list-missing target and utils.mk include. - Include autoreconf.mk before debhelper.mk to not leave cruft when running clean. * debian/control.in: - Standards-Version is 3.9.1, no changes needed. - Drop old Replaces. -- Emilio Pozuelo Monfort Wed, 12 Jan 2011 22:48:04 +0000 gnome-settings-daemon (2.91.5.1-2) experimental; urgency=low * Make the nautilus-data depend versioned -- Sjoerd Simons Sun, 12 Dec 2010 14:32:07 +0000 gnome-settings-daemon (2.91.5.1-1) experimental; urgency=low * New upstream release * debian/control.in: Update build-depends to gnome 3.0 versions * debian/patches/01_xrdb.patch - Removed. g-s-d no longer manages xrdb * debian/patches/03_maintainer_mode.patch - Removed. Fixed upstream * debian/patches/10_clipboard_crash.patch - Removed. Fixed upstream. * debian/patches/12_monitor_network_fs.patch - Removed. Fixed upstream * debian/patches/13_monitor_kfreebsd.patch - Updated * debian/patches/20_gstreamer.patch - Removed. Time to move to pulseaudio by default... * debian/patches/30_pkgconfig-path.patch: - Removed. Fixed upstream * debian/patches/70_relibtoolize.patch - Removed, moving to dh_autoreconf * debian/patches/99_ltmain_as-needed.patch - Removed, moving to dh_autoreconf * debian/gnome-settings-daemon.install - Updated * Switch to dh_autoreconf and trigger list-missing * Make gnome-settings-daemon depends on gsettings-desktop-schemas and nautilus-data to pull in the necessary schema files. -- Sjoerd Simons Sat, 11 Dec 2010 16:20:56 +0000 gnome-settings-daemon (2.30.2-2) unstable; urgency=low * 13_monitor_kfreebsd.patch: new patch. Don’t monitor fdescfs. Closes: #594891. * 10_clipboard_crash.patch: stolen from upstream git. Fixes a crash in the clipboard manager. Closes: #588308. -- Josselin Mouette Wed, 20 Oct 2010 01:29:10 +0200 gnome-settings-daemon (2.30.2-1) unstable; urgency=low * New upstream stable release. * Switch to source format 3.0 (quilt). - Add debian/source/format. - Drop Build-Depends on quilt. - Remove /usr/share/cdbs/1/rules/patchsys-quilt.mk from debian/rules. * Refresh patches for new upstream release. * debian/control.in - Drop Build-Depends on dpkg-dev (>= 1.13.19) as even oldstable has a more recent version. - Add Vcs-Browser and Vcs-Svn fields. - Bump Standards-Version to 3.9.0. - Use Breaks as recommended by the new policy. -- Michael Biebl Fri, 23 Jul 2010 01:34:51 +0200 gnome-settings-daemon (2.30.1-1) unstable; urgency=low * New upstream release. * Bump build-dependencies. * 11_sleepkey.patch, 40_xklavier_5.0.patch: dropped, obsolete. * 20_gstreamer.patch, 30_pkgconfig-path.patch, 70_relibtoolize.patch: updated for the new version. -- Josselin Mouette Tue, 27 Apr 2010 20:00:27 +0200 gnome-settings-daemon (2.28.1-3) unstable; urgency=low * Depend on libgnome2-common for the GConf schemas. * 40_xklavier_5.0.patch: new patch. Get 2.28 version to work with libxklavier 5.0. * Require said version to build. -- Josselin Mouette Fri, 09 Apr 2010 00:17:00 +0200 gnome-settings-daemon (2.28.1-2) unstable; urgency=low * Drop libxxf86misc-dev build-dependency. This extension is only used as a fallback to XKB. Closes: #559690. * 12_monitor_network_fs.patch: new patch. Don’t monitor remote filesystems for their free size. Closes: #563592. -- Josselin Mouette Sat, 09 Jan 2010 10:59:14 +0100 gnome-settings-daemon (2.28.1-1) unstable; urgency=low * New upstream release. - debian/patches/70_relibtoolize.patch: + Updated. * debian/rules: remove check-dist.mk to upload to unstable. -- Emilio Pozuelo Monfort Thu, 22 Oct 2009 06:08:36 +0200 gnome-settings-daemon (2.28.0-1) experimental; urgency=low * Add a watch file. * Add a manpage for gnome-settings-daemon, thanks Joshua Cummings! Closes: #494370. * debian/control.in: remove trailing whitespaces. * Standards-Version is 3.8.2, no changes needed. * New upstream release. - debian/control.in: + Bump libgtk2.0-dev and libgnome-desktop-dev build dependencies. + Remove libglade2-dev build dependency, no longer needed. + Build depend on libxklavier-dev >= 4.0 instead of libxklavier12-dev. + Break gnome-screensaver << 2.28 since g-s-d doesn't start it anymore, relaying on the autostart file in g-s 2.28. - debian/patches/20_gstreamer.patch, debian/patches/70_relibtoolize.patch: + Updated to apply again. - debian/gnome-settings-daemon.install: + Install *.ui rather than *.glade. + Don't install *.png, the icon is not shipped anymore. * Standards-Version is 3.8.3, no changes needed. * debian/rules: - Don't touch every file anymore, it was done because of a broken tarball. - Include check-dist.mk to avoid uploads to unstable. -- Emilio Pozuelo Monfort Fri, 09 Oct 2009 17:26:43 +0200 gnome-settings-daemon (2.26.1-2) unstable; urgency=low * 03_maintainer_mode.patch: new patch, add AM_MAINTAINER_MODE. Fixes FTBFS. * Regenerate 70_relibtoolize.patch. -- Josselin Mouette Fri, 29 May 2009 16:19:52 +0200 gnome-settings-daemon (2.26.1-1) unstable; urgency=low * New upstream release. + 20_gstreamer.patch: install the plugin although pulse is disabled. + Refresh 70_relibtoolize.patch. * Move the autostart file to /usr/share/gnome/autostart. * gnome-settings-daemon.postinst: + Remove the old autostart file if needed. + Only remove the xrdb stuff upon upgrades from pre-2.24.1. -- Josselin Mouette Fri, 29 May 2009 11:25:35 +0200 gnome-settings-daemon (2.26.0-2) experimental; urgency=low * 20_gstreamer.patch: Initialize Gerror * variables to NULL before usage. Fixes a crasher when using media keys (Closes: #524165) -- Sjoerd Simons Sat, 18 Apr 2009 11:00:25 +0100 gnome-settings-daemon (2.26.0-1) experimental; urgency=low * New upstream release. * Update build-dependencies. * Install the autostart file and the keybindings XML file. + Break gnome-session < 2.24 which would attempt to start it twice with the autostart file. * 11_sleepkey.patch: updated for the new version. * 20_gstreamer.patch: new patch from Romain Périer, adds back support for GStreamer with a selection at compile time. * 70_relibtoolize.patch: regenerated. * Refresh other patches. * Pass --disable-pulse to configure, to use the GStreamer code instead. -- Josselin Mouette Sat, 11 Apr 2009 11:31:52 +0200 gnome-settings-daemon (2.24.1-2) unstable; urgency=low [ Josselin Mouette ] * Improve package descriptions. Mention XSETTINGS. Closes: #511905. * Upload to unstable. [ Loic Minier ] * Suggest x11-xserver-utils as gnome-settings-daemon attempts to run xrdb by default and logs a warning when that fails. * Suggest gnome-screensaver as gnome-settings-daemon attempts to start it by default and logs a warning when that fails. * Suggest metacity | x-window-manager as gnome-settings-daemon attemts to start a window manager and logs a warning when that fails. -- Josselin Mouette Tue, 07 Apr 2009 08:48:36 +0200 gnome-settings-daemon (2.24.1-1) experimental; urgency=low * New upstream release. + Cleans up thumbnail cache automatically. Closes: #235067. * Update build-dependencies and -dev dependencies. * Standards version is 3.8.0. * Switch to quilt for patch management; build-depend on quilt. * 02_missing_libs.patch: explicitly add X11 libraries to SETTINGS_PLUGINS since plugins are actually relying on them being available. * 70_relibtoolize.patch: new patch, relibtoolize the source. * 99_ltmain_as-needed.patch: new patch, make --as-needed work. * Pass -O1 -z defs --as-needed to the linker. + Only warn on undefined symbols as plugins need a symbol from the daemon. * Add some comments in the patches. * Pass --no-act to dh_makeshlibs. * gnome-settings-daemon.postinst: remove /etc/gnome/config/xrdb. * Install .ad files in /etc/gnome/config to replace the ones from capplets-data which are still used. * Do not install the autostart file since we still use gnome-session 2.22 which will start g-s-d by hand. -- Josselin Mouette Sat, 27 Dec 2008 11:29:41 +0100 gnome-settings-daemon (2.22.2.1-2) unstable; urgency=low * 08_extra_touchpad_options.patch: removed broken patch from Ubuntu. Closes: #481191. * 11_sleepkey.patch: use gnome-power-cmd to suspend the computer instead of the nonexistent gdm-signal. -- Josselin Mouette Tue, 11 Nov 2008 16:08:08 +0100 gnome-settings-daemon (2.22.2.1-1) unstable; urgency=low [ Josselin Mouette ] * Fix priority. [ Sebastian Dröge ] * New upstream bugfix release: + debian/rules: - Run touch on every file to fix up timestamps. -- Sebastian Dröge Thu, 29 May 2008 10:31:39 +0200 gnome-settings-daemon (2.22.1-2) unstable; urgency=high * Conflict against gnome-control-center < 2.21.5. Closes: #476802. -- Josselin Mouette Sat, 19 Apr 2008 22:17:49 +0200 gnome-settings-daemon (2.22.1-1) unstable; urgency=low * New upstream bugfix release: + debian/patches/09_locate_pointer.patch: - Dropped, fixed upstream. -- Sebastian Dröge Mon, 07 Apr 2008 14:44:12 +0200 gnome-settings-daemon (2.22.0-4) unstable; urgency=low * debian/control.in: + Also conflict with totem (<< 2.22.0) for the same reason. * debian/gnome-settings-daemon.install: + Install xrdb files into /etc/gnome/config again. -- Sebastian Dröge Sat, 22 Mar 2008 14:56:12 +0100 gnome-settings-daemon (2.22.0-3) unstable; urgency=low * Upload to unstable. * debian/control.in: + Add conflicts with rhythmbox (<< 0.11.5) and banshee (<< 0.13.2+dfsg-7) as the multimedia keys DBus interface changed. -- Sebastian Dröge Wed, 19 Mar 2008 01:47:15 +0100 gnome-settings-daemon (2.22.0-2) experimental; urgency=low * debian/rules: + Don't install the dbus service file. This is not meant to be autostarted but should be started by gnome-session. -- Sebastian Dröge Sun, 16 Mar 2008 17:39:52 +0100 gnome-settings-daemon (2.22.0-1) experimental; urgency=low * New package, based on the Ubuntu packaging. -- Sebastian Dröge Wed, 12 Mar 2008 15:17:19 +0100 debian/control.in0000664000000000000000000000753412321122275011206 0ustar Source: gnome-settings-daemon Section: gnome Priority: optional Maintainer: Ubuntu Desktop Team XSBC-Original-Maintainer: Debian GNOME Maintainers Uploaders: @GNOME_TEAM@ Build-Depends: cdbs, debhelper (>= 9), gnome-pkg-tools, gtk-doc-tools, dh-autoreconf, autotools-dev, intltool (>= 0.37.1), libdbus-glib-1-dev (>= 0.74), libglib2.0-dev (>= 2.35.3), libgtk-3-dev (>= 3.7.8), libnotify-dev (>= 0.7.0), libxt-dev, libxi-dev, libfontconfig1-dev, libxext-dev, libx11-dev, libxtst-dev, gsettings-desktop-schemas-dev (>= 3.7.2.1), libgnome-desktop-3-dev (>= 3.7.90), libpulse-dev (>= 1:2.0), librsvg2-dev (>= 2.36.2), libcanberra-gtk3-dev, libcups2-dev, libpolkit-gobject-1-dev, libaccountsservice-dev (>= 0.6.34), libappindicator3-dev (>= 0.4.90), hwdata, libupower-glib-dev (>= 0.9.11), libcolord-dev (>= 0.1.12), liblcms2-dev, libnss3-dev, libgudev-1.0-dev, libwacom-dev (>= 0.7), xserver-xorg-input-wacom, libgnomekbd-dev (>= 3.5.1), libxklavier-dev, libsystemd-login-dev (>= 183), libibus-1.0-dev (>= 1.5.0) Standards-Version: 3.9.3 Vcs-Bzr: https://code.launchpad.net/~ubuntu-desktop/gnome-settings-daemon/ubuntu Package: gnome-settings-daemon Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, accountsservice (>= 0.6.34), gsettings-desktop-schemas (>= 3.7.2.1), nautilus-data (>= 2.91.3-1), gnome-settings-daemon-schemas (= ${binary:Version}) Recommends: ibus (>= 1.5.0), pulseaudio, systemd-services Pre-Depends: ${misc:Pre-Depends} Breaks: rhythmbox (<< 0.11.5), banshee (<< 0.13.2+dfsg-7), totem (<< 2.22.0), gnome-control-center (<< 1:3.6.3-0ubuntu35), gnome-session (<< 3.9.90-0ubuntu6), gnome-screensaver (<< 2.28.0), gnome-color-manager (<< 3.0), unity-greeter (<< 0.2.1-0ubuntu1), indicator-datetime (<< 12.10.3daily13.03.26) Suggests: x11-xserver-utils, gnome-screensaver, metacity | x-window-manager Description: daemon handling the GNOME session settings This package contains the daemon which is responsible for setting the various parameters of a GNOME session and the applications that run under it. It handles the following kinds of settings: . * Keyboard: layout, accessibility options, shortcuts, media keys * Clipboard management * Theming: background, icons, GTK+ applications * Cleanup of unused files * Mouse: cursors, speed, accessibility options * Startup of other daemons: screensaver, sound daemon * Typing break . It also sets various application settings through X resources and freedesktop.org XSETTINGS. Package: gnome-settings-daemon-schemas Architecture: all Replaces: gnome-settings-daemon (<< 3.8.6.1-0ubuntu8) Breaks: gnome-settings-daemon (<< 3.8.6.1-0ubuntu8) Description: gnome-settings-daemon schemas This package contains the schemas used by gnome-settings-daemon Package: gnome-settings-daemon-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libdbus-glib-1-dev (>= 0.74), libglib2.0-dev (>= 2.35.3) Description: Headers for building applications communicating with gnome-settings-daemon This package contains header files required to build applications that communicate with the GNOME settings daemon over D-Bus. debian/control0000664000000000000000000001010112321122277010563 0ustar # This file is autogenerated. DO NOT EDIT! # # Modifications should be made to debian/control.in instead. # This file is regenerated automatically in the clean target. Source: gnome-settings-daemon Section: gnome Priority: optional Maintainer: Ubuntu Desktop Team XSBC-Original-Maintainer: Debian GNOME Maintainers Uploaders: Debian GNOME Maintainers Build-Depends: cdbs, debhelper (>= 9), gnome-pkg-tools, gtk-doc-tools, dh-autoreconf, autotools-dev, intltool (>= 0.37.1), libdbus-glib-1-dev (>= 0.74), libglib2.0-dev (>= 2.35.3), libgtk-3-dev (>= 3.7.8), libnotify-dev (>= 0.7.0), libxt-dev, libxi-dev, libfontconfig1-dev, libxext-dev, libx11-dev, libxtst-dev, gsettings-desktop-schemas-dev (>= 3.7.2.1), libgnome-desktop-3-dev (>= 3.7.90), libpulse-dev (>= 1:2.0), librsvg2-dev (>= 2.36.2), libcanberra-gtk3-dev, libcups2-dev, libpolkit-gobject-1-dev, libaccountsservice-dev (>= 0.6.34), libappindicator3-dev (>= 0.4.90), hwdata, libupower-glib-dev (>= 0.9.11), libcolord-dev (>= 0.1.12), liblcms2-dev, libnss3-dev, libgudev-1.0-dev, libwacom-dev (>= 0.7), xserver-xorg-input-wacom, libgnomekbd-dev (>= 3.5.1), libxklavier-dev, libsystemd-login-dev (>= 183), libibus-1.0-dev (>= 1.5.0) Standards-Version: 3.9.3 Vcs-Bzr: https://code.launchpad.net/~ubuntu-desktop/gnome-settings-daemon/ubuntu Package: gnome-settings-daemon Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, accountsservice (>= 0.6.34), gsettings-desktop-schemas (>= 3.7.2.1), nautilus-data (>= 2.91.3-1), gnome-settings-daemon-schemas (= ${binary:Version}) Recommends: ibus (>= 1.5.0), pulseaudio, systemd-services Pre-Depends: ${misc:Pre-Depends} Breaks: rhythmbox (<< 0.11.5), banshee (<< 0.13.2+dfsg-7), totem (<< 2.22.0), gnome-control-center (<< 1:3.6.3-0ubuntu35), gnome-session (<< 3.9.90-0ubuntu6), gnome-screensaver (<< 2.28.0), gnome-color-manager (<< 3.0), unity-greeter (<< 0.2.1-0ubuntu1), indicator-datetime (<< 12.10.3daily13.03.26) Suggests: x11-xserver-utils, gnome-screensaver, metacity | x-window-manager Description: daemon handling the GNOME session settings This package contains the daemon which is responsible for setting the various parameters of a GNOME session and the applications that run under it. It handles the following kinds of settings: . * Keyboard: layout, accessibility options, shortcuts, media keys * Clipboard management * Theming: background, icons, GTK+ applications * Cleanup of unused files * Mouse: cursors, speed, accessibility options * Startup of other daemons: screensaver, sound daemon * Typing break . It also sets various application settings through X resources and freedesktop.org XSETTINGS. Package: gnome-settings-daemon-schemas Architecture: all Replaces: gnome-settings-daemon (<< 3.8.6.1-0ubuntu8) Breaks: gnome-settings-daemon (<< 3.8.6.1-0ubuntu8) Description: gnome-settings-daemon schemas This package contains the schemas used by gnome-settings-daemon Package: gnome-settings-daemon-dev Architecture: any Depends: ${shlibs:Depends}, ${misc:Depends}, libdbus-glib-1-dev (>= 0.74), libglib2.0-dev (>= 2.35.3) Description: Headers for building applications communicating with gnome-settings-daemon This package contains header files required to build applications that communicate with the GNOME settings daemon over D-Bus. debian/gnome-settings-daemon.manpages0000664000000000000000000000003712321122275015106 0ustar debian/gnome-settings-daemon.1 debian/gnome-settings-daemon.10000664000000000000000000000216512321122275013457 0ustar .\" .\" gnome₋settings-daemon manual page .\" Copyright (c) 2009 Joshua Cummings .\" .TH GNOME-SETTINGS-DAEMON 1 "June 25 2009" "" .SH NAME gnome-settings-daemon \- Handles the GNOME session settings .SH SYNOPSIS \fBgnome-settings-daemon\fR [\fB\-\-debug\fR] [\fB\-\-no-daemon\fR] [\fB\-\-gconf-prefix\fR] [\fB\-\-display\fR=\fIDISPLAY\fR] .SH DESCRIPTION \fIgnome-settings-daemon\fR is responsible for setting the various preference parameters of a GNOME session and the applications that run under it. .SH OPTIONS .PP Help options .TP \-?, \fB\-\-help\fR Show this help message .PP Application options .TP \fB\-\^\-debug\fR Enable debugging code .TP \fB\-\^\-no-daemon\fR Do not detach the daemon process from its controlling terminal .TP \fB\-\^\-gconf-prefix\fR Specify a custom GConf settings prefix for settings manager plugins .TP \fB\-\^\-display\fR=\fIDISPLAY\fR X display to use .PP .SH AUTHOR \fBgnome-settings-daemon\fR was written by Jonathan Blandford and William Jon McCann . .PP This manual page was originally written by Joshua Cummings . debian/patches/0000775000000000000000000000000012321122275010614 5ustar debian/patches/fix_screenshots_on_unity.patch0000664000000000000000000000446412321122275016777 0ustar From 91468c90efa57f89ab2e21634ca03710cb223c43 Mon Sep 17 00:00:00 2001 From: Tim Lunn Date: Sun, 9 Jun 2013 11:55:56 +1000 Subject: [PATCH] Bring back use of gnome-screenshot when running unity. https://bugzilla.gnome.org/show_bug.cgi?id=681844 --- plugins/media-keys/gsd-media-keys-manager.c | 30 ++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) Index: b/plugins/media-keys/gsd-media-keys-manager.c =================================================================== --- a/plugins/media-keys/gsd-media-keys-manager.c +++ b/plugins/media-keys/gsd-media-keys-manager.c @@ -2340,6 +2340,34 @@ label, g_variant_get_double (percentage)); g_free (label); } +static void +do_screenshot_action (GsdMediaKeysManager *manager, + MediaKeyType type) +{ + if (!manager->priv->have_legacy_keygrabber) + gsd_screenshot_take (type); + else { + switch (type){ + case SCREENSHOT_KEY: + execute (manager, "gnome-screenshot", FALSE); + break; + case WINDOW_SCREENSHOT_KEY: + execute (manager, "gnome-screenshot --window", FALSE); + break; + case AREA_SCREENSHOT_KEY: + execute (manager, "gnome-screenshot --area", FALSE); + break; + case SCREENSHOT_CLIP_KEY: + execute (manager, "gnome-screenshot --clipboard", FALSE); + break; + case WINDOW_SCREENSHOT_CLIP_KEY: + execute (manager, "gnome-screenshot --window --clipboard", FALSE); + break; + case AREA_SCREENSHOT_CLIP_KEY: + execute (manager, "gnome-screenshot --area --clipboard", FALSE); + } + } +} static void do_custom_action (GsdMediaKeysManager *manager, @@ -2414,7 +2442,7 @@ case WINDOW_SCREENSHOT_CLIP_KEY: case AREA_SCREENSHOT_KEY: case AREA_SCREENSHOT_CLIP_KEY: - gsd_screenshot_take (type); + do_screenshot_action (manager, type); break; case TERMINAL_KEY: do_terminal_action (manager); debian/patches/43_disable_locale_settings.patch0000664000000000000000000000212212321122275017002 0ustar Description: Make sure that no locales are set, even if the gsettings "region" key has been assigned a value in the past, since they are set in Ubuntu via ~/.pam_environment. Forwarded: not-needed Author: Gunnar Hjalmarsson * * The set_locale() function is questionable anyhow, since it's called after ~/.profile * is sourced by e.g. lightdm or gdm, which prevents users from fine tuning the locale * settings by editing ~/.profile. * Index: gnome-settings-daemon-3.7.3/gnome-settings-daemon/main.c =================================================================== --- gnome-settings-daemon-3.7.3.orig/gnome-settings-daemon/main.c 2012-12-20 09:33:43.000000000 -0500 +++ gnome-settings-daemon-3.7.3/gnome-settings-daemon/main.c 2012-12-20 23:57:37.873288435 -0500 @@ -348,9 +348,6 @@ GDBusProxy *proxy; proxy = gnome_settings_session_get_session_proxy (); - /* Always call this first, as Setenv can only be called before - any client registers */ - set_locale (proxy); #ifdef HAVE_IBUS set_legacy_ibus_env_vars (proxy); #endif debian/patches/git_new_screencast_keybinding.patch0000664000000000000000000001654412321122275017720 0ustar From 1ae70dc6ff141e248e8198ee1d82e1bec6ed4434 Mon Sep 17 00:00:00 2001 From: Jasper St. Pierre Date: Thu, 18 Jul 2013 01:10:02 +0000 Subject: media-keys: Add a binding to take a short screencast of the screen https://bugzilla.gnome.org/show_bug.cgi?id=704435 --- --- a/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in +++ b/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in @@ -135,6 +135,11 @@ <_summary>Launch terminal <_description>Binding to launch the terminal. + + '<Ctrl><Shift><Alt>R' + <_summary>Record a short video of the screen + Binding to record a short video of the screen + 'XF86WWW' <_summary>Launch web browser --- a/plugins/media-keys/gsd-media-keys-manager.c +++ b/plugins/media-keys/gsd-media-keys-manager.c @@ -86,6 +86,9 @@ #define SHELL_GRABBER_RETRY_INTERVAL 1 +/* Screencasts last for 5 mins */ +#define SCREENCAST_LENGTH 300 + static const gchar introspection_xml[] = "" " " @@ -184,6 +187,11 @@ GCancellable *shell_cancellable; GCancellable *grab_cancellable; + /* Screencast stuff */ + GDBusProxy *screencast_proxy; + guint screencast_timeout_id; + GCancellable *screencast_cancellable; + /* systemd stuff */ GDBusProxy *logind_proxy; gint inhibit_keys_fd; @@ -2368,6 +2376,61 @@ } static void +screencast_stop (GsdMediaKeysManager *manager) +{ + if (manager->priv->screencast_timeout_id > 0) { + g_source_remove (manager->priv->screencast_timeout_id); + manager->priv->screencast_timeout_id = 0; + } + + g_dbus_proxy_call (manager->priv->screencast_proxy, + "StopScreencast", NULL, + G_DBUS_CALL_FLAGS_NONE, -1, + manager->priv->screencast_cancellable, + NULL, NULL); +} + +static gboolean +screencast_timeout (gpointer user_data) +{ + GsdMediaKeysManager *manager = user_data; + screencast_stop (manager); + return G_SOURCE_REMOVE; +} + +static void +screencast_start (GsdMediaKeysManager *manager) +{ + g_dbus_proxy_call (manager->priv->screencast_proxy, + "Screencast", + /* Translators: this is a filename used for screencast + * recording, where "%d" and "%t" date and time, e.g. + * "Screencast from 07-17-2013 10:00:46 PM.webm" */ + /* xgettext:no-c-format */ + g_variant_new_parsed ("(%s, @a{sv} {})", + _("Screencast from %d %t.webm")), + G_DBUS_CALL_FLAGS_NONE, -1, + manager->priv->screencast_cancellable, + NULL, NULL); + + manager->priv->screencast_timeout_id = g_timeout_add_seconds (SCREENCAST_LENGTH, + screencast_timeout, + manager); +} + +static void +do_screencast_action (GsdMediaKeysManager *manager) +{ + if (manager->priv->screencast_proxy == NULL) + return; + + if (manager->priv->screencast_timeout_id == 0) + screencast_start (manager); + else + screencast_stop (manager); +} + +static void do_custom_action (GsdMediaKeysManager *manager, guint deviceid, MediaKey *key, @@ -2445,6 +2508,9 @@ case TERMINAL_KEY: do_terminal_action (manager); break; + case SCREENCAST_KEY: + do_screencast_action (manager); + break; case WWW_KEY: do_url_action (manager, "http", timestamp); break; @@ -2729,6 +2795,17 @@ } static void +on_screencast_proxy_ready (GObject *source, + GAsyncResult *result, + gpointer data) +{ + GsdMediaKeysManager *manager = data; + + manager->priv->screencast_proxy = + g_dbus_proxy_new_for_bus_finish (result, NULL); +} + +static void on_key_grabber_ready (GObject *source, GAsyncResult *result, gpointer data) @@ -2772,6 +2849,14 @@ SHELL_DBUS_NAME, manager->priv->shell_cancellable, on_shell_proxy_ready, manager); + + g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION, + 0, NULL, + name_owner, + SHELL_DBUS_PATH "/Screencast", + SHELL_DBUS_NAME ".Screencast", + manager->priv->screencast_cancellable, + on_screencast_proxy_ready, manager); } static void @@ -2895,6 +2980,7 @@ ensure_cancellable (&manager->priv->grab_cancellable); ensure_cancellable (&manager->priv->shell_cancellable); + ensure_cancellable (&manager->priv->screencast_cancellable); manager->priv->name_owner_id = g_bus_watch_name (G_BUS_TYPE_SESSION, @@ -2982,6 +3068,7 @@ g_clear_object (&priv->power_proxy); g_clear_object (&priv->power_screen_proxy); g_clear_object (&priv->power_keyboard_proxy); + g_clear_object (&priv->screencast_proxy); if (manager->priv->name_owner_id) { g_bus_unwatch_name (manager->priv->name_owner_id); @@ -3045,6 +3132,11 @@ g_clear_object (&priv->shell_cancellable); } + if (priv->screencast_cancellable != NULL) { + g_cancellable_cancel (priv->screencast_cancellable); + g_clear_object (&priv->screencast_cancellable); + } + g_clear_pointer (&priv->screens, g_slist_free); g_clear_object (&priv->sink); g_clear_object (&priv->source); --- a/plugins/media-keys/shortcuts-list.h +++ b/plugins/media-keys/shortcuts-list.h @@ -53,6 +53,7 @@ SCREENSHOT_CLIP_KEY, WINDOW_SCREENSHOT_CLIP_KEY, AREA_SCREENSHOT_CLIP_KEY, + SCREENCAST_KEY, TERMINAL_KEY, WWW_KEY, PLAY_KEY, @@ -127,6 +128,7 @@ { SCREENSHOT_CLIP_KEY, "screenshot-clip", NULL, NULL, SHELL_KEYBINDING_MODE_ALL }, { WINDOW_SCREENSHOT_CLIP_KEY, "window-screenshot-clip", NULL, NULL, SHELL_KEYBINDING_MODE_NORMAL }, { AREA_SCREENSHOT_CLIP_KEY, "area-screenshot-clip", NULL, NULL, SHELL_KEYBINDING_MODE_ALL }, + { SCREENCAST_KEY, "screencast", NULL, NULL, SHELL_KEYBINDING_MODE_ALL }, { TERMINAL_KEY, "terminal", NULL, NULL, GSD_KEYBINDING_MODE_LAUNCHER }, { WWW_KEY, "www", NULL, NULL, GSD_KEYBINDING_MODE_LAUNCHER }, { PLAY_KEY, "play", NULL, NULL, SHELL_KEYBINDING_MODE_ALL }, debian/patches/revert_background_dropping.patch0000664000000000000000000007323712321122275017261 0ustar From 99da10fa1c771bd692bf00b6c4ccf2a5c1818bdb Mon Sep 17 00:00:00 2001 From: Bastien Nocera Date: Tue, 08 Jan 2013 06:35:42 +0000 Subject: background: Remove obsolete plugin The background drawing has now moved to gnome-shell, allowing smoother integration, animated backgrounds, etc. https://bugzilla.gnome.org/show_bug.cgi?id=686549 --- Index: gnome-settings-daemon-3.7.90/configure.ac =================================================================== --- gnome-settings-daemon-3.7.90.orig/configure.ac 2013-02-23 13:52:19.012459246 -0500 +++ gnome-settings-daemon-3.7.90/configure.ac 2013-02-23 13:52:19.000459246 -0500 @@ -154,6 +154,12 @@ AC_SUBST(XTEST_LIBS) dnl --------------------------------------------------------------------------- +dnl - background +dnl --------------------------------------------------------------------------- + +PKG_CHECK_MODULES(BACKGROUND, x11 gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION) + +dnl --------------------------------------------------------------------------- dnl - mouse dnl --------------------------------------------------------------------------- @@ -481,6 +487,7 @@ plugins/Makefile plugins/a11y-keyboard/Makefile plugins/a11y-settings/Makefile +plugins/background/Makefile plugins/clipboard/Makefile plugins/color/Makefile plugins/common/Makefile Index: gnome-settings-daemon-3.7.90/data/gnome-settings-daemon.convert =================================================================== --- gnome-settings-daemon-3.7.90.orig/data/gnome-settings-daemon.convert 2013-02-23 13:52:19.012459246 -0500 +++ gnome-settings-daemon-3.7.90/data/gnome-settings-daemon.convert 2013-02-23 13:52:19.000459246 -0500 @@ -14,6 +14,10 @@ active = /apps/gnome_settings_daemon/plugins/a11y-keyboard/active priority = /apps/gnome_settings_daemon/plugins/a11y-keyboard/priority +[org.gnome.settings-daemon.plugins.background] +active = /apps/gnome_settings_daemon/plugins/background/active +priority = /apps/gnome_settings_daemon/plugins/background/priority + [org.gnome.settings-daemon.plugins.clipboard] active = /apps/gnome_settings_daemon/plugins/clipboard/active priority = /apps/gnome_settings_daemon/plugins/clipboard/priority Index: gnome-settings-daemon-3.7.90/data/org.gnome.settings-daemon.plugins.gschema.xml.in.in =================================================================== --- gnome-settings-daemon-3.7.90.orig/data/org.gnome.settings-daemon.plugins.gschema.xml.in.in 2013-02-23 13:52:19.012459246 -0500 +++ gnome-settings-daemon-3.7.90/data/org.gnome.settings-daemon.plugins.gschema.xml.in.in 2013-02-23 13:52:19.000459246 -0500 @@ -11,6 +11,7 @@ + @@ -54,6 +55,18 @@ <_summary>Priority to use for this plugin <_description>Priority to use for this plugin in gnome-settings-daemon startup queue + + + + true + <_summary>Activation of this plugin + <_description>Whether this plugin would be activated by gnome-settings-daemon or not + + + 97 + <_summary>Priority to use for this plugin + <_description>Priority to use for this plugin in gnome-settings-daemon startup queue + Index: gnome-settings-daemon-3.7.90/plugins/Makefile.am =================================================================== --- gnome-settings-daemon-3.7.90.orig/plugins/Makefile.am 2013-02-23 13:52:19.012459246 -0500 +++ gnome-settings-daemon-3.7.90/plugins/Makefile.am 2013-02-23 13:52:19.000459246 -0500 @@ -3,6 +3,7 @@ enabled_plugins = \ a11y-keyboard \ a11y-settings \ + background \ clipboard \ color \ cursor \ Index: gnome-settings-daemon-3.7.90/plugins/background/Makefile.am =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gnome-settings-daemon-3.7.90/plugins/background/Makefile.am 2013-02-23 13:52:19.004459246 -0500 @@ -0,0 +1,79 @@ +NULL = + +plugin_name = background + +libexec_PROGRAMS = gsd-test-background + +gsd_test_background_SOURCES = \ + test-background.c \ + gsd-background-manager.h \ + gsd-background-manager.c \ + $(NULL) + +gsd_test_background_CPPFLAGS = \ + -I$(top_srcdir)/gnome-settings-daemon \ + -I$(top_srcdir)/plugins/common \ + -DGNOME_SETTINGS_LOCALEDIR=\""$(datadir)/locale"\" \ + $(AM_CPPFLAGS) + +gsd_test_background_CFLAGS = \ + $(PLUGIN_CFLAGS) \ + $(SETTINGS_PLUGIN_CFLAGS) \ + $(BACKGROUND_CFLAGS) \ + $(AM_CFLAGS) + +gsd_test_background_LDADD = \ + $(top_builddir)/gnome-settings-daemon/libgsd.la \ + $(SETTINGS_PLUGIN_LIBS) \ + $(BACKGROUND_LIBS) \ + $(NULL) + +plugin_LTLIBRARIES = \ + libbackground.la \ + $(NULL) + +libbackground_la_SOURCES = \ + gsd-background-plugin.c \ + gsd-background-manager.h \ + gsd-background-manager.c \ + $(NULL) + +libbackground_la_CPPFLAGS = \ + -I$(top_srcdir)/gnome-settings-daemon \ + -I$(top_srcdir)/plugins/background/libbackground \ + -DGNOME_SETTINGS_LOCALEDIR=\""$(datadir)/locale"\" \ + $(AM_CPPFLAGS) + +libbackground_la_CFLAGS = \ + $(SETTINGS_PLUGIN_CFLAGS) \ + $(BACKGROUND_CFLAGS) \ + $(AM_CFLAGS) + +libbackground_la_LDFLAGS = \ + $(GSD_PLUGIN_LDFLAGS) \ + $(NULL) + +libbackground_la_LIBADD = \ + $(SETTINGS_PLUGIN_LIBS) \ + $(BACKGROUND_LIBS) \ + $(NULL) + +plugin_in_files = \ + background.gnome-settings-plugin.in \ + $(NULL) + +plugin_DATA = $(plugin_in_files:.gnome-settings-plugin.in=.gnome-settings-plugin) + +EXTRA_DIST = \ + $(plugin_in_files) \ + $(NULL) + +CLEANFILES = \ + $(plugin_DATA) \ + $(NULL) + +DISTCLEANFILES = \ + $(plugin_DATA) \ + $(NULL) + +@GSD_INTLTOOL_PLUGIN_RULE@ Index: gnome-settings-daemon-3.7.90/plugins/background/background.gnome-settings-plugin.in =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gnome-settings-daemon-3.7.90/plugins/background/background.gnome-settings-plugin.in 2013-02-23 13:52:19.004459246 -0500 @@ -0,0 +1,8 @@ +[GNOME Settings Plugin] +Module=background +IAge=0 +_Name=Background +_Description=Background plugin +Authors= +Copyright=Copyright © 2007 +Website= Index: gnome-settings-daemon-3.7.90/plugins/background/gsd-background-manager.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gnome-settings-daemon-3.7.90/plugins/background/gsd-background-manager.c 2013-02-23 13:52:19.004459246 -0500 @@ -0,0 +1,520 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright © 2001 Ximian, Inc. + * Copyright (C) 2007 William Jon McCann + * Copyright 2007 Red Hat, Inc. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#define GNOME_DESKTOP_USE_UNSTABLE_API +#include +#include + +#include "gnome-settings-session.h" +#include "gnome-settings-profile.h" +#include "gsd-background-manager.h" + +#define GSD_BACKGROUND_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_BACKGROUND_MANAGER, GsdBackgroundManagerPrivate)) + +struct GsdBackgroundManagerPrivate +{ + GSettings *settings; + GnomeBG *bg; + + GnomeBGCrossfade *fade; + + GDBusProxy *proxy; + guint proxy_signal_id; +}; + +static void gsd_background_manager_class_init (GsdBackgroundManagerClass *klass); +static void gsd_background_manager_init (GsdBackgroundManager *background_manager); +static void gsd_background_manager_finalize (GObject *object); + +static void setup_bg (GsdBackgroundManager *manager); +static void connect_screen_signals (GsdBackgroundManager *manager); + +G_DEFINE_TYPE (GsdBackgroundManager, gsd_background_manager, G_TYPE_OBJECT) + +static gpointer manager_object = NULL; + +static gboolean +dont_draw_background (GsdBackgroundManager *manager) +{ + return !g_settings_get_boolean (manager->priv->settings, + "draw-background"); +} + +static gboolean +nautilus_is_drawing_background (GsdBackgroundManager *manager) +{ + Atom window_id_atom; + Window nautilus_xid; + Atom actual_type; + int actual_format; + unsigned long nitems; + unsigned long bytes_after; + unsigned char *data; + Atom wmclass_atom; + gboolean running; + gint error; + gboolean show_desktop_icons; + + show_desktop_icons = g_settings_get_boolean (manager->priv->settings, + "show-desktop-icons"); + if (! show_desktop_icons) { + return FALSE; + } + + window_id_atom = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), + "NAUTILUS_DESKTOP_WINDOW_ID", True); + + if (window_id_atom == None) { + return FALSE; + } + + XGetWindowProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), + GDK_ROOT_WINDOW (), + window_id_atom, + 0, + 1, + False, + XA_WINDOW, + &actual_type, + &actual_format, + &nitems, + &bytes_after, + &data); + + if (data != NULL) { + nautilus_xid = *(Window *) data; + XFree (data); + } else { + return FALSE; + } + + if (actual_type != XA_WINDOW) { + return FALSE; + } + if (actual_format != 32) { + return FALSE; + } + + wmclass_atom = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), "WM_CLASS", False); + + gdk_error_trap_push (); + + XGetWindowProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), + nautilus_xid, + wmclass_atom, + 0, + 24, + False, + XA_STRING, + &actual_type, + &actual_format, + &nitems, + &bytes_after, + &data); + + error = gdk_error_trap_pop (); + + if (error == BadWindow) { + return FALSE; + } + + if (actual_type == XA_STRING && + nitems == 24 && + bytes_after == 0 && + actual_format == 8 && + data != NULL && + !strcmp ((char *)data, "desktop_window") && + !strcmp ((char *)data + strlen ((char *)data) + 1, "Nautilus")) { + running = TRUE; + } else { + running = FALSE; + } + + if (data != NULL) { + XFree (data); + } + + return running; +} + +static void +on_crossfade_finished (GsdBackgroundManager *manager) +{ + g_object_unref (manager->priv->fade); + manager->priv->fade = NULL; +} + +static void +draw_background (GsdBackgroundManager *manager, + gboolean use_crossfade) +{ + GdkDisplay *display; + int n_screens; + int i; + + + if (nautilus_is_drawing_background (manager) || + dont_draw_background (manager)) { + return; + } + + gnome_settings_profile_start (NULL); + + display = gdk_display_get_default (); + n_screens = gdk_display_get_n_screens (display); + + for (i = 0; i < n_screens; ++i) { + GdkScreen *screen; + GdkWindow *root_window; + cairo_surface_t *surface; + + screen = gdk_display_get_screen (display, i); + + root_window = gdk_screen_get_root_window (screen); + + surface = gnome_bg_create_surface (manager->priv->bg, + root_window, + gdk_screen_get_width (screen), + gdk_screen_get_height (screen), + TRUE); + + if (use_crossfade) { + + if (manager->priv->fade != NULL) { + g_object_unref (manager->priv->fade); + } + + manager->priv->fade = gnome_bg_set_surface_as_root_with_crossfade (screen, surface); + g_signal_connect_swapped (manager->priv->fade, "finished", + G_CALLBACK (on_crossfade_finished), + manager); + } else { + gnome_bg_set_surface_as_root (screen, surface); + } + + cairo_surface_destroy (surface); + } + + gnome_settings_profile_end (NULL); +} + +static void +on_bg_transitioned (GnomeBG *bg, + GsdBackgroundManager *manager) +{ + draw_background (manager, FALSE); +} + +static gboolean +settings_change_event_cb (GSettings *settings, + gpointer keys, + gint n_keys, + GsdBackgroundManager *manager) +{ + gnome_bg_load_from_preferences (manager->priv->bg, + manager->priv->settings); + return FALSE; +} + +static void +on_screen_size_changed (GdkScreen *screen, + GsdBackgroundManager *manager) +{ + draw_background (manager, FALSE); +} + +static void +watch_bg_preferences (GsdBackgroundManager *manager) +{ + g_signal_connect (manager->priv->settings, + "change-event", + G_CALLBACK (settings_change_event_cb), + manager); +} + +static void +on_bg_changed (GnomeBG *bg, + GsdBackgroundManager *manager) +{ + draw_background (manager, TRUE); +} + +static void +setup_bg (GsdBackgroundManager *manager) +{ + g_return_if_fail (manager->priv->bg == NULL); + + manager->priv->bg = gnome_bg_new (); + + g_signal_connect (manager->priv->bg, + "changed", + G_CALLBACK (on_bg_changed), + manager); + + g_signal_connect (manager->priv->bg, + "transitioned", + G_CALLBACK (on_bg_transitioned), + manager); + + connect_screen_signals (manager); + watch_bg_preferences (manager); + gnome_bg_load_from_preferences (manager->priv->bg, + manager->priv->settings); +} + +static void +setup_bg_and_draw_background (GsdBackgroundManager *manager) +{ + setup_bg (manager); + draw_background (manager, FALSE); +} + +static void +disconnect_session_manager_listener (GsdBackgroundManager *manager) +{ + if (manager->priv->proxy && manager->priv->proxy_signal_id) { + g_signal_handler_disconnect (manager->priv->proxy, + manager->priv->proxy_signal_id); + manager->priv->proxy_signal_id = 0; + } +} + +static void +on_session_manager_signal (GDBusProxy *proxy, + const gchar *sender_name, + const gchar *signal_name, + GVariant *parameters, + gpointer user_data) +{ + GsdBackgroundManager *manager = GSD_BACKGROUND_MANAGER (user_data); + + if (g_strcmp0 (signal_name, "SessionRunning") == 0) { + setup_bg_and_draw_background (manager); + disconnect_session_manager_listener (manager); + } +} + +static void +draw_background_after_session_loads (GsdBackgroundManager *manager) +{ + manager->priv->proxy = + gnome_settings_session_get_session_proxy (); + + manager->priv->proxy_signal_id = g_signal_connect (manager->priv->proxy, + "g-signal", + G_CALLBACK (on_session_manager_signal), + manager); +} + + +static void +disconnect_screen_signals (GsdBackgroundManager *manager) +{ + GdkDisplay *display; + int i; + int n_screens; + + display = gdk_display_get_default (); + n_screens = gdk_display_get_n_screens (display); + + for (i = 0; i < n_screens; ++i) { + GdkScreen *screen; + screen = gdk_display_get_screen (display, i); + g_signal_handlers_disconnect_by_func (screen, + G_CALLBACK (on_screen_size_changed), + manager); + } +} + +static void +connect_screen_signals (GsdBackgroundManager *manager) +{ + GdkDisplay *display; + int i; + int n_screens; + + display = gdk_display_get_default (); + n_screens = gdk_display_get_n_screens (display); + + for (i = 0; i < n_screens; ++i) { + GdkScreen *screen; + screen = gdk_display_get_screen (display, i); + g_signal_connect (screen, + "monitors-changed", + G_CALLBACK (on_screen_size_changed), + manager); + g_signal_connect (screen, + "size-changed", + G_CALLBACK (on_screen_size_changed), + manager); + } +} + +static void +draw_background_changed (GSettings *settings, + const char *key, + GsdBackgroundManager *manager) +{ + if (dont_draw_background (manager) == FALSE) + setup_bg_and_draw_background (manager); +} + +gboolean +gsd_background_manager_start (GsdBackgroundManager *manager, + GError **error) +{ + gboolean show_desktop_icons; + + g_debug ("Starting background manager"); + gnome_settings_profile_start (NULL); + + manager->priv->settings = g_settings_new ("org.gnome.desktop.background"); + g_signal_connect (manager->priv->settings, "changed::draw-background", + G_CALLBACK (draw_background_changed), manager); + + /* If this is set, nautilus will draw the background and is + * almost definitely in our session. however, it may not be + * running yet (so is_nautilus_running() will fail). so, on + * startup, just don't do anything if this key is set so we + * don't waste time setting the background only to have + * nautilus overwrite it. + */ + show_desktop_icons = g_settings_get_boolean (manager->priv->settings, + "show-desktop-icons"); + + if (!show_desktop_icons) { + setup_bg (manager); + } else { + draw_background_after_session_loads (manager); + } + + gnome_settings_profile_end (NULL); + + return TRUE; +} + +void +gsd_background_manager_stop (GsdBackgroundManager *manager) +{ + GsdBackgroundManagerPrivate *p = manager->priv; + + g_debug ("Stopping background manager"); + + disconnect_screen_signals (manager); + + if (manager->priv->proxy) { + disconnect_session_manager_listener (manager); + g_clear_object (&manager->priv->proxy); + } + + g_signal_handlers_disconnect_by_func (manager->priv->settings, + settings_change_event_cb, + manager); + + if (p->settings != NULL) { + g_object_unref (p->settings); + p->settings = NULL; + } + + if (p->bg != NULL) { + g_object_unref (p->bg); + p->bg = NULL; + } +} + +static GObject * +gsd_background_manager_constructor (GType type, + guint n_construct_properties, + GObjectConstructParam *construct_properties) +{ + GsdBackgroundManager *background_manager; + + background_manager = GSD_BACKGROUND_MANAGER (G_OBJECT_CLASS (gsd_background_manager_parent_class)->constructor (type, + n_construct_properties, + construct_properties)); + + return G_OBJECT (background_manager); +} + +static void +gsd_background_manager_class_init (GsdBackgroundManagerClass *klass) +{ + GObjectClass *object_class = G_OBJECT_CLASS (klass); + + object_class->constructor = gsd_background_manager_constructor; + object_class->finalize = gsd_background_manager_finalize; + + g_type_class_add_private (klass, sizeof (GsdBackgroundManagerPrivate)); +} + +static void +gsd_background_manager_init (GsdBackgroundManager *manager) +{ + manager->priv = GSD_BACKGROUND_MANAGER_GET_PRIVATE (manager); +} + +static void +gsd_background_manager_finalize (GObject *object) +{ + GsdBackgroundManager *background_manager; + + g_return_if_fail (object != NULL); + g_return_if_fail (GSD_IS_BACKGROUND_MANAGER (object)); + + background_manager = GSD_BACKGROUND_MANAGER (object); + + g_return_if_fail (background_manager->priv != NULL); + + G_OBJECT_CLASS (gsd_background_manager_parent_class)->finalize (object); +} + +GsdBackgroundManager * +gsd_background_manager_new (void) +{ + if (manager_object != NULL) { + g_object_ref (manager_object); + } else { + manager_object = g_object_new (GSD_TYPE_BACKGROUND_MANAGER, NULL); + g_object_add_weak_pointer (manager_object, + (gpointer *) &manager_object); + } + + return GSD_BACKGROUND_MANAGER (manager_object); +} Index: gnome-settings-daemon-3.7.90/plugins/background/gsd-background-manager.h =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gnome-settings-daemon-3.7.90/plugins/background/gsd-background-manager.h 2013-02-23 13:52:19.004459246 -0500 @@ -0,0 +1,57 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2007 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#ifndef __GSD_BACKGROUND_MANAGER_H +#define __GSD_BACKGROUND_MANAGER_H + +#include + +G_BEGIN_DECLS + +#define GSD_TYPE_BACKGROUND_MANAGER (gsd_background_manager_get_type ()) +#define GSD_BACKGROUND_MANAGER(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), GSD_TYPE_BACKGROUND_MANAGER, GsdBackgroundManager)) +#define GSD_BACKGROUND_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), GSD_TYPE_BACKGROUND_MANAGER, GsdBackgroundManagerClass)) +#define GSD_IS_BACKGROUND_MANAGER(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), GSD_TYPE_BACKGROUND_MANAGER)) +#define GSD_IS_BACKGROUND_MANAGER_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), GSD_TYPE_BACKGROUND_MANAGER)) +#define GSD_BACKGROUND_MANAGER_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), GSD_TYPE_BACKGROUND_MANAGER, GsdBackgroundManagerClass)) + +typedef struct GsdBackgroundManagerPrivate GsdBackgroundManagerPrivate; + +typedef struct +{ + GObject parent; + GsdBackgroundManagerPrivate *priv; +} GsdBackgroundManager; + +typedef struct +{ + GObjectClass parent_class; +} GsdBackgroundManagerClass; + +GType gsd_background_manager_get_type (void); + +GsdBackgroundManager * gsd_background_manager_new (void); +gboolean gsd_background_manager_start (GsdBackgroundManager *manager, + GError **error); +void gsd_background_manager_stop (GsdBackgroundManager *manager); + +G_END_DECLS + +#endif /* __GSD_BACKGROUND_MANAGER_H */ Index: gnome-settings-daemon-3.7.90/plugins/background/gsd-background-plugin.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gnome-settings-daemon-3.7.90/plugins/background/gsd-background-plugin.c 2013-02-23 13:52:19.004459246 -0500 @@ -0,0 +1,29 @@ +/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- + * + * Copyright (C) 2007 William Jon McCann + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + */ + +#include "config.h" + +#include +#include + +#include "gnome-settings-plugin.h" +#include "gsd-background-manager.h" + +GNOME_SETTINGS_PLUGIN_REGISTER (GsdBackground, gsd_background) Index: gnome-settings-daemon-3.7.90/plugins/background/test-background.c =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ gnome-settings-daemon-3.7.90/plugins/background/test-background.c 2013-02-23 13:52:19.004459246 -0500 @@ -0,0 +1,7 @@ +#define NEW gsd_background_manager_new +#define START gsd_background_manager_start +#define STOP gsd_background_manager_stop +#define MANAGER GsdBackgroundManager +#include "gsd-background-manager.h" + +#include "test-plugin.h" Index: gnome-settings-daemon-3.7.90/po/POTFILES.in =================================================================== --- gnome-settings-daemon-3.7.90.orig/po/POTFILES.in 2013-02-23 13:52:19.012459246 -0500 +++ gnome-settings-daemon-3.7.90/po/POTFILES.in 2013-02-23 13:52:19.004459246 -0500 @@ -18,6 +18,7 @@ [type: gettext/ini]plugins/a11y-keyboard/a11y-keyboard.gnome-settings-plugin.in plugins/a11y-keyboard/gsd-a11y-keyboard-manager.c [type: gettext/ini]plugins/a11y-settings/a11y-settings.gnome-settings-plugin.in +[type: gettext/ini]plugins/background/background.gnome-settings-plugin.in [type: gettext/ini]plugins/clipboard/clipboard.gnome-settings-plugin.in [type: gettext/ini]plugins/color/color.gnome-settings-plugin.in plugins/color/gsd-color-manager.c debian/patches/53_sync_input_sources_to_accountsservice.patch0000664000000000000000000000770212321122275022072 0ustar --- a/plugins/keyboard/gsd-keyboard-manager.c +++ b/plugins/keyboard/gsd-keyboard-manager.c @@ -50,6 +50,8 @@ #include #endif +#include + #include "gnome-settings-session.h" #include "gnome-settings-profile.h" #include "gsd-keyboard-manager.h" @@ -969,6 +971,67 @@ g_free (rules_file_path); } +static void +user_notify_is_loaded_cb (GObject *object, + GParamSpec *pspec, + gpointer user_data) +{ + ActUser *user = ACT_USER (object); + GSettings *settings = user_data; + + if (act_user_is_loaded (user)) { + GVariant *sources; + GVariantIter iter; + const gchar *type; + const gchar *name; + GVariantBuilder builder; + + g_signal_handlers_disconnect_by_data (user, user_data); + + sources = g_settings_get_value (settings, KEY_INPUT_SOURCES); + + g_variant_builder_init (&builder, G_VARIANT_TYPE ("aa{ss}")); + + g_variant_iter_init (&iter, sources); + while (g_variant_iter_next (&iter, "(&s&s)", &type, &name)) { + g_variant_builder_open (&builder, G_VARIANT_TYPE ("a{ss}")); + g_variant_builder_add (&builder, "{ss}", type, name); + g_variant_builder_close (&builder); + } + + g_variant_unref (sources); + + sources = g_variant_ref_sink (g_variant_builder_end (&builder)); + act_user_set_input_sources (user, sources); + g_variant_unref (sources); + } +} + +static void +manager_notify_is_loaded_cb (GObject *object, + GParamSpec *pspec, + gpointer user_data) +{ + ActUserManager *manager = ACT_USER_MANAGER (object); + + gboolean loaded; + g_object_get (manager, "is-loaded", &loaded, NULL); + + if (loaded) { + ActUser *user; + + g_signal_handlers_disconnect_by_data (manager, user_data); + + user = act_user_manager_get_user (manager, g_get_user_name ()); + + if (act_user_is_loaded (user)) + user_notify_is_loaded_cb (G_OBJECT (user), NULL, user_data); + else + g_signal_connect (user, "notify::is-loaded", + user_notify_is_loaded_cb, user_data); + } +} + static gboolean apply_input_sources_settings (GSettings *settings, gpointer keys, @@ -984,11 +1047,20 @@ gchar *layout = NULL; gchar *variant = NULL; gchar **options = NULL; + ActUserManager *user_manager; + gboolean user_manager_loaded; sources = g_settings_get_value (priv->input_sources_settings, KEY_INPUT_SOURCES); current = g_settings_get_uint (priv->input_sources_settings, KEY_CURRENT_INPUT_SOURCE); n_sources = g_variant_n_children (sources); + user_manager = act_user_manager_get_default (); + g_object_get (user_manager, "is-loaded", &user_manager_loaded, NULL); + if (user_manager_loaded) + manager_notify_is_loaded_cb (G_OBJECT (user_manager), NULL, settings); + else + g_signal_connect (user_manager, "notify::is-loaded", G_CALLBACK (manager_notify_is_loaded_cb), settings); + if (n_sources < 1) goto exit; --- a/configure.ac +++ b/configure.ac @@ -195,7 +195,7 @@ fi AM_CONDITIONAL(HAVE_IBUS, test "x$enable_ibus" == "xyes") -PKG_CHECK_MODULES(KEYBOARD, xkbfile $IBUS_MODULE gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION) +PKG_CHECK_MODULES(KEYBOARD, accountsservice xkbfile $IBUS_MODULE gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION) dnl --------------------------------------------------------------------------- dnl - Housekeeping plugin stuff debian/patches/nexus-orientation.patch0000664000000000000000000001052212321122275015330 0ustar ## Description: Autorotate Nexus screen ## Origin/Author: jani@ubuntu.com ## Bug: https://bugs.launchpad.net/ubuntu-nexus7/+bug/1110360 Index: gnome-settings-daemon-3.6.4/plugins/orientation/gsd-orientation-manager.c =================================================================== --- gnome-settings-daemon-3.6.4.orig/plugins/orientation/gsd-orientation-manager.c 2013-02-13 13:36:14.606221356 +0200 +++ gnome-settings-daemon-3.6.4/plugins/orientation/gsd-orientation-manager.c 2013-02-13 13:36:38.130337989 +0200 @@ -23,6 +23,7 @@ #include "config.h" +#include #include #include #include @@ -87,6 +88,14 @@ static gpointer manager_object = NULL; +#define MPU_THRESHOLD 12000 +#define MPU_POLL_INTERVAL 1 + +static gboolean is_mpu6050 = FALSE; +static char *mpu6050_accel_x = NULL; +static char *mpu6050_accel_y = NULL; +static gboolean mpu_timer(GsdOrientationManager *manager); + static GObject * gsd_orientation_manager_constructor (GType type, guint n_construct_properties, @@ -312,8 +321,11 @@ return; manager->priv->orientation_lock = new; - + if (new == FALSE) { + if (is_mpu6050) { + g_timeout_add_seconds(MPU_POLL_INTERVAL, (GSourceFunc) mpu_timer, manager); + } /* Handle the rotations that could have occurred while * we were locked */ do_rotation (manager); @@ -372,12 +384,14 @@ static GUdevDevice * get_accelerometer (GUdevClient *client) { - GList *list, *l; + GList *list, *listiio, *l; GUdevDevice *ret, *parent; /* Look for a device with the ID_INPUT_ACCELEROMETER=1 property */ ret = NULL; list = g_udev_client_query_by_subsystem (client, "input"); + listiio = g_udev_client_query_by_subsystem (client, "iio"); + list = g_list_concat(list, listiio); for (l = list; l != NULL; l = l->next) { GUdevDevice *dev; @@ -408,6 +422,53 @@ return ret; } +static int read_sysfs_attr_as_int(const char *filename) { + int i, c; + char buf[40]; + int fd = open(filename, O_RDONLY); + if (fd < 0) + return 0; + c = read(fd, buf, 40); + if (c < 0) + return 0; + close(fd); + sscanf(buf, "%d", &i); + + return i; +} + +static gboolean mpu_timer(GsdOrientationManager *manager) { + int x, y; + static gboolean first = TRUE; + OrientationUp orientation = manager->priv->prev_orientation; + + if (manager->priv->xrandr_proxy == NULL) + return TRUE; + + x = read_sysfs_attr_as_int(mpu6050_accel_x); + y = read_sysfs_attr_as_int(mpu6050_accel_y); + + if (x > MPU_THRESHOLD) + orientation = ORIENTATION_NORMAL; + if (x < -MPU_THRESHOLD) + orientation = ORIENTATION_BOTTOM_UP; + if (y > MPU_THRESHOLD) + orientation = ORIENTATION_RIGHT_UP; + if (y < -MPU_THRESHOLD) + orientation = ORIENTATION_LEFT_UP; + + if (orientation != manager->priv->prev_orientation || first) { + first = FALSE; + manager->priv->prev_orientation = orientation; + g_debug ("Orientation changed to '%s', switching screen rotation", + orientation_to_string (manager->priv->prev_orientation)); + + do_rotation (manager); + } + + return !manager->priv->orientation_lock; +} + static gboolean gsd_orientation_manager_idle_cb (GsdOrientationManager *manager) { @@ -432,6 +493,16 @@ g_debug ("Found accelerometer at sysfs path '%s'", manager->priv->sysfs_path); manager->priv->prev_orientation = get_orientation_from_device (dev); + + /* Poll the sysfs attributes exposed by MPU6050 as it is not an uevent based input driver */ + if (g_strcmp0 (g_udev_device_get_sysfs_attr (dev, "name"), "mpu6050") == 0) { + manager->priv->prev_orientation = ORIENTATION_NORMAL; + g_timeout_add_seconds(MPU_POLL_INTERVAL, (GSourceFunc) mpu_timer, manager); + mpu6050_accel_x = g_build_filename(manager->priv->sysfs_path, "in_accel_x_raw", NULL); + mpu6050_accel_y = g_build_filename(manager->priv->sysfs_path, "in_accel_y_raw", NULL); + is_mpu6050 = TRUE; + } + g_object_unref (dev); /* Start process of owning a D-Bus name */ debian/patches/git_hidpi_scalling.patch0000664000000000000000000002005412321122275015452 0ustar From 047f030235972fdab5e15aff484006caf914216a Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Mon, 01 Jul 2013 12:14:23 +0000 Subject: xsettings: Add support for window-scaling We read the scale-factor gsettings and propagate to gdk, including doing auto-detection if the setting is 0. NOTE: The auto-detection code is currently disabled as enabling scaling breaks gnome-shell. When this is fixed we want to enable this. We also scale the old Xft.DPI setting by the window scale so that old applications get a decent size on very high dpi monitors, plus we report the unscaled dpi so that window scale aware apps (like gtk) can avoid this dpi scaling. We also scale the cursor theme size so that you will get matching sizes for cursors. --- Index: gnome-settings-daemon-3.8.6.1/plugins/xsettings/gsd-xsettings-manager.c =================================================================== --- gnome-settings-daemon-3.8.6.1.orig/plugins/xsettings/gsd-xsettings-manager.c 2014-02-03 12:06:40.014501405 +0000 +++ gnome-settings-daemon-3.8.6.1/plugins/xsettings/gsd-xsettings-manager.c 2014-02-03 12:08:05.314504245 +0000 @@ -59,6 +59,8 @@ #define GTK_MODULES_ENABLED_KEY "enabled-gtk-modules" #define TEXT_SCALING_FACTOR_KEY "text-scaling-factor" +#define SCALING_FACTOR_KEY "scaling-factor" +#define CURSOR_SIZE_KEY "cursor-size" #define FONT_ANTIALIASING_KEY "antialiasing" #define FONT_HINTING_KEY "hinting" @@ -218,6 +220,8 @@ */ #define DPI_FALLBACK 96 +#define HIDPI_LIMIT (DPI_FALLBACK * 2) + typedef struct _TranslationEntry TranslationEntry; typedef void (* TranslationFunc) (GnomeXSettingsManager *manager, TranslationEntry *trans, @@ -359,7 +363,7 @@ { "org.gnome.desktop.interface", "menubar-accel", "Gtk/MenuBarAccel", translate_string_string }, { "org.gnome.desktop.interface", "enable-animations", "Gtk/EnableAnimations", translate_bool_int }, { "org.gnome.desktop.interface", "cursor-theme", "Gtk/CursorThemeName", translate_string_string }, - { "org.gnome.desktop.interface", "cursor-size", "Gtk/CursorThemeSize", translate_int_int }, + /* cursor-size is handled via the Xft side as it needs the scaling factor */ { "org.gnome.desktop.interface", "show-input-method-menu", "Gtk/ShowInputMethodMenu", translate_bool_int }, { "org.gnome.desktop.interface", "show-unicode-menu", "Gtk/ShowUnicodeMenu", translate_bool_int }, { "org.gnome.desktop.interface", "automatic-mnemonics", "Gtk/AutoMnemonics", translate_bool_int }, @@ -408,10 +412,56 @@ return dpi * factor; } +static int +get_window_scale (GnomeXSettingsManager *manager) +{ + GSettings *interface_settings; + int window_scale; + GdkRectangle rect; + GdkDisplay *display; + GdkScreen *screen; + int width_mm, height_mm; + int monitor_scale; + double dpi_x, dpi_y; + + interface_settings = g_hash_table_lookup (manager->priv->settings, INTERFACE_SETTINGS_SCHEMA); + window_scale = + g_settings_get_uint (interface_settings, SCALING_FACTOR_KEY); + if (window_scale == 0) { + display = gdk_display_get_default (); + screen = gdk_display_get_default_screen (display); + gdk_screen_get_monitor_geometry (screen, 0, &rect); + width_mm = gdk_screen_get_monitor_width_mm (screen, 0); + height_mm = gdk_screen_get_monitor_height_mm (screen, 0); + monitor_scale = gdk_screen_get_monitor_scale_factor (screen, 0); + + window_scale = 1; + if (width_mm > 0 && height_mm > 0) { + dpi_x = (double)rect.width * monitor_scale / (width_mm / 25.4); + dpi_y = (double)rect.height * monitor_scale / (height_mm / 25.4); + /* We don't completely trust these values so both + must be high, and never pick higher ratio than + 2 automatically */ + if (dpi_x > HIDPI_LIMIT && dpi_y > HIDPI_LIMIT) + window_scale = 2; + } + + /* TODO: For now we don't support automatic scale picking, because it + any scale but 1 breaks gnome-shell. Remove this when gnome-shell + is fixed. */ + window_scale = 1; + } + + return window_scale; +} + typedef struct { gboolean antialias; gboolean hinting; + int scaled_dpi; int dpi; + int window_scale; + int cursor_size; const char *rgba; const char *hintstyle; } GnomeXftSettings; @@ -421,10 +471,15 @@ xft_settings_get (GnomeXSettingsManager *manager, GnomeXftSettings *settings) { + GSettings *interface_settings; GsdFontAntialiasingMode antialiasing; GsdFontHinting hinting; GsdFontRgbaOrder order; gboolean use_rgba = FALSE; + double dpi; + int cursor_size; + + interface_settings = g_hash_table_lookup (manager->priv->settings, INTERFACE_SETTINGS_SCHEMA); antialiasing = g_settings_get_enum (manager->priv->plugin_settings, FONT_ANTIALIASING_KEY); hinting = g_settings_get_enum (manager->priv->plugin_settings, FONT_HINTING_KEY); @@ -432,7 +487,12 @@ settings->antialias = (antialiasing != GSD_FONT_ANTIALIASING_MODE_NONE); settings->hinting = (hinting != GSD_FONT_HINTING_NONE); - settings->dpi = get_dpi_from_gsettings (manager) * 1024; /* Xft wants 1/1024ths of an inch */ + settings->window_scale = get_window_scale (manager); + dpi = get_dpi_from_gsettings (manager); + settings->dpi = dpi * 1024; /* Xft wants 1/1024ths of an inch */ + settings->scaled_dpi = dpi * settings->window_scale * 1024; + cursor_size = g_settings_get_int (interface_settings, CURSOR_SIZE_KEY); + settings->cursor_size = cursor_size * settings->window_scale; settings->rgba = "rgb"; settings->hintstyle = "hintfull"; @@ -498,8 +558,11 @@ xsettings_manager_set_int (manager->priv->managers [i], "Xft/Antialias", settings->antialias); xsettings_manager_set_int (manager->priv->managers [i], "Xft/Hinting", settings->hinting); xsettings_manager_set_string (manager->priv->managers [i], "Xft/HintStyle", settings->hintstyle); - xsettings_manager_set_int (manager->priv->managers [i], "Xft/DPI", settings->dpi); + xsettings_manager_set_int (manager->priv->managers [i], "Gdk/WindowScalingFactor", settings->window_scale); + xsettings_manager_set_int (manager->priv->managers [i], "Gdk/UnscaledDPI", settings->dpi); + xsettings_manager_set_int (manager->priv->managers [i], "Xft/DPI", settings->scaled_dpi); xsettings_manager_set_string (manager->priv->managers [i], "Xft/RGBA", settings->rgba); + xsettings_manager_set_int (manager->priv->managers [i], "Gtk/CursorThemeSize", settings->cursor_size); } gnome_settings_profile_end (NULL); } @@ -552,7 +615,7 @@ g_debug("xft_settings_set_xresources: orig res '%s'", add_string->str); update_property (add_string, "Xft.dpi", - g_ascii_dtostr (dpibuf, sizeof (dpibuf), (double) settings->dpi / 1024.0)); + g_ascii_dtostr (dpibuf, sizeof (dpibuf), (double) settings->scaled_dpi / 1024.0)); update_property (add_string, "Xft.antialias", settings->antialias ? "1" : "0"); update_property (add_string, "Xft.hinting", @@ -810,7 +873,8 @@ guint i; GVariant *value; - if (g_str_equal (key, TEXT_SCALING_FACTOR_KEY)) { + if (g_str_equal (key, TEXT_SCALING_FACTOR_KEY) || + g_str_equal (key, SCALING_FACTOR_KEY)) { xft_callback (NULL, key, manager); return; } debian/patches/correct_logout_action.patch0000664000000000000000000000227012321122275016225 0ustar # Description: let the logout key do what it's supposed to do # Ubuntu: https://launchpad.net/bugs/961501 # Upstream: https://bugzilla.gnome.org/show_bug.cgi?id=671979 Index: gnome-settings-daemon-3.7.4/plugins/media-keys/gsd-media-keys-manager.c =================================================================== --- gnome-settings-daemon-3.7.4.orig/plugins/media-keys/gsd-media-keys-manager.c 2013-01-15 09:33:28.214989030 -0500 +++ gnome-settings-daemon-3.7.4/plugins/media-keys/gsd-media-keys-manager.c 2013-01-15 09:33:28.206985030 -0500 @@ -801,6 +801,12 @@ } static void +do_logout_action (GsdMediaKeysManager *manager) +{ + execute (manager, "gnome-session-quit --logout", FALSE); +} + +static void do_eject_action_cb (GDrive *drive, GAsyncResult *res, GsdMediaKeysManager *manager) @@ -1945,7 +1951,7 @@ do_sound_action (manager, deviceid, VOLUME_UP_KEY, TRUE, TRUE); break; case LOGOUT_KEY: - gnome_session_shutdown (manager); + do_logout_action (manager); break; case EJECT_KEY: do_eject_action (manager); debian/patches/git_micmute.patch0000664000000000000000000000233312321122275014144 0ustar Author: Bastien Nocera Origion: upstream Description: media-keys: Add XF86AudioMicMute as a mic mute key Needed because of https://bugs.freedesktop.org/show_bug.cgi?id=54171 being fixed Applied-Upstream: https://git.gnome.org/browse/gnome-settings-daemon/commit/?id=3a8beaaf380a483ce33363031d8d276c371d7af1 --- --- plugins/media-keys/shortcuts-list.h | 1 + 1 file changed, 1 insertion(+) --- a/plugins/media-keys/shortcuts-list.h +++ b/plugins/media-keys/shortcuts-list.h @@ -109,6 +109,7 @@ static struct { { VOLUME_DOWN_KEY, "volume-down", NULL, NULL, SHELL_KEYBINDING_MODE_ALL }, { VOLUME_UP_KEY, "volume-up", NULL, NULL, SHELL_KEYBINDING_MODE_ALL }, { MIC_MUTE_KEY, NULL, N_("Microphone Mute"), "F20", SHELL_KEYBINDING_MODE_ALL }, + { MIC_MUTE_KEY, NULL, N_("Microphone Mute"), "XF86AudioMicMute", SHELL_KEYBINDING_MODE_ALL }, { MUTE_QUIET_KEY, NULL, N_("Quiet Volume Mute"), "XF86AudioMute", SHELL_KEYBINDING_MODE_ALL }, { VOLUME_DOWN_QUIET_KEY, NULL, N_("Quiet Volume Down"), "XF86AudioLowerVolume", SHELL_KEYBINDING_MODE_ALL }, { VOLUME_UP_QUIET_KEY, NULL, N_("Quiet Volume Up"), "XF86AudioRaiseVolume", SHELL_KEYBINDING_MODE_ALL }, debian/patches/unity-modifier-media-keys.patch0000664000000000000000000003331612321122275016635 0ustar --- a/plugins/common/gsd-keygrab.c +++ b/plugins/common/gsd-keygrab.c @@ -170,6 +170,7 @@ key->keysym != GDK_KEY_Pause && key->keysym != GDK_KEY_Print && key->keysym != GDK_KEY_Scroll_Lock && + key->keysym != GDK_KEY_Caps_Lock && key->keysym != GDK_KEY_Pause && key->keysym != GDK_KEY_Break && key->keysym != GDK_KEY_Menu) { @@ -239,19 +240,277 @@ g_array_free (all_mods, TRUE); } +static void +get_keys_for_bit (guint bit, + guint *left, + guint *right) +{ + guint left_dummy; + guint right_dummy; + + if (left == NULL) + left = &left_dummy; + if (right == NULL) + right = &right_dummy; + + *left = 0; + *right = 0; + + switch (1 << bit) { + case GDK_SHIFT_MASK: + *left = GDK_KEY_Shift_L; + *right = GDK_KEY_Shift_R; + break; + case GDK_CONTROL_MASK: + *left = GDK_KEY_Control_L; + *right = GDK_KEY_Control_R; + break; + case GDK_LOCK_MASK: + *left = GDK_KEY_Caps_Lock; + *right = GDK_KEY_Shift_Lock; + break; + case GDK_META_MASK: + case GDK_MOD1_MASK: + *left = GDK_KEY_Alt_L; + *right = GDK_KEY_Alt_R; + break; + case GDK_SUPER_MASK: + *left = GDK_KEY_Super_L; + *right = GDK_KEY_Super_R; + break; + } +} + +static guint +get_mask_for_key (guint key) +{ + switch (key) { + case GDK_KEY_Shift_L: + case GDK_KEY_Shift_R: + return GDK_SHIFT_MASK; + case GDK_KEY_Control_L: + case GDK_KEY_Control_R: + return GDK_CONTROL_MASK; + case GDK_KEY_Caps_Lock: + case GDK_KEY_Shift_Lock: + return GDK_LOCK_MASK; + case GDK_KEY_Meta_L: + case GDK_KEY_Meta_R: + case GDK_KEY_Alt_L: + case GDK_KEY_Alt_R: + return GDK_MOD1_MASK; + case GDK_KEY_Super_L: + case GDK_KEY_Super_R: + return GDK_SUPER_MASK; + } + + return 0; +} + +static guint +get_mirrored_key (guint key) +{ + switch (key) { + case GDK_KEY_Shift_L: + return GDK_KEY_Shift_R; + case GDK_KEY_Shift_R: + return GDK_KEY_Shift_L; + case GDK_KEY_Control_L: + return GDK_KEY_Control_R; + case GDK_KEY_Control_R: + return GDK_KEY_Control_L; + case GDK_KEY_Meta_L: + return GDK_KEY_Meta_R; + case GDK_KEY_Meta_R: + return GDK_KEY_Meta_L; + case GDK_KEY_Alt_L: + return GDK_KEY_Alt_R; + case GDK_KEY_Alt_R: + return GDK_KEY_Alt_L; + case GDK_KEY_Super_L: + return GDK_KEY_Super_R; + case GDK_KEY_Super_R: + return GDK_KEY_Super_L; + case GDK_KEY_Hyper_L: + return GDK_KEY_Hyper_R; + case GDK_KEY_Hyper_R: + return GDK_KEY_Hyper_L; + } + + return 0; +} + void grab_key_unsafe (Key *key, GsdKeygrabFlags flags, GSList *screens) { + guint key_mask = get_mask_for_key (key->keysym); + grab_key_internal (key, TRUE, flags, screens); + + if (key_mask != 0) { + Key copy; + guint i, j; + + if ((key->state & key_mask) != 0) { + guint mirror = get_mirrored_key (key->keysym); + + if (mirror != 0) { + gint mirror_keys_len; + GdkKeymapKey *mirror_keys; + + gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (), + mirror, + &mirror_keys, + &mirror_keys_len); + + copy.keysym = mirror; + copy.state = key->state; + copy.keycodes = g_new0 (guint, mirror_keys_len + 1); + + for (j = 0; j < mirror_keys_len; j++) + copy.keycodes[j] = mirror_keys[j].keycode; + + grab_key_internal (©, TRUE, flags, screens); + + g_free (copy.keycodes); + g_free (mirror_keys); + } + } + + for (i = 0; i < 8 * sizeof (guint); i++) { + guint left, right; + gint left_keys_len, right_keys_len; + GdkKeymapKey *left_keys, *right_keys; + + if (1 << i == key_mask || (key->state & 1 << i) == 0) + continue; + + get_keys_for_bit (i, &left, &right); + + if (left == 0 && right == 0) + continue; + + left_keys_len = 0; + right_keys_len = 0; + left_keys = NULL; + right_keys = NULL; + + if (left != 0) + gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (), + left, + &left_keys, + &left_keys_len); + + if (right != 0) + gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (), + right, + &right_keys, + &right_keys_len); + + copy.keysym = left != 0 ? left : right; + copy.state = (key->state | key_mask) & ~(1 << i); + copy.keycodes = g_new0 (guint, left_keys_len + right_keys_len + 1); + + for (j = 0; j < left_keys_len; j++) + copy.keycodes[j] = left_keys[j].keycode; + for (j = 0; j < right_keys_len; j++) + copy.keycodes[left_keys_len + j] = right_keys[j].keycode; + + grab_key_internal (©, TRUE, flags, screens); + + g_free (copy.keycodes); + g_free (right_keys); + g_free (left_keys); + } + } } void ungrab_key_unsafe (Key *key, GSList *screens) { + guint key_mask = get_mask_for_key (key->keysym); + grab_key_internal (key, FALSE, 0, screens); + + if (key_mask != 0) { + Key copy; + guint i, j; + + if ((key->state & key_mask) != 0) { + guint mirror = get_mirrored_key (key->keysym); + + if (mirror != 0) { + gint mirror_keys_len; + GdkKeymapKey *mirror_keys; + + gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (), + mirror, + &mirror_keys, + &mirror_keys_len); + + copy.keysym = mirror; + copy.state = key->state; + copy.keycodes = g_new0 (guint, mirror_keys_len + 1); + + for (j = 0; j < mirror_keys_len; j++) + copy.keycodes[j] = mirror_keys[j].keycode; + + grab_key_internal (©, FALSE, 0, screens); + + g_free (copy.keycodes); + g_free (mirror_keys); + } + } + + for (i = 0; i < 8 * sizeof (guint); i++) { + guint left, right; + gint left_keys_len, right_keys_len; + GdkKeymapKey *left_keys, *right_keys; + + if (1 << i == key_mask || (key->state & 1 << i) == 0) + continue; + + get_keys_for_bit (i, &left, &right); + + if (left == 0 && right == 0) + continue; + + left_keys_len = 0; + right_keys_len = 0; + left_keys = NULL; + right_keys = NULL; + + if (left != 0) + gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (), + left, + &left_keys, + &left_keys_len); + + if (right != 0) + gdk_keymap_get_entries_for_keyval (gdk_keymap_get_default (), + right, + &right_keys, + &right_keys_len); + + copy.keysym = left != 0 ? left : right; + copy.state = (key->state | key_mask) & ~(1 << i); + copy.keycodes = g_new0 (guint, left_keys_len + right_keys_len + 1); + + for (j = 0; j < left_keys_len; j++) + copy.keycodes[j] = left_keys[j].keycode; + for (j = 0; j < right_keys_len; j++) + copy.keycodes[left_keys_len + j] = right_keys[j].keycode; + + grab_key_internal (©, FALSE, 0, screens); + + g_free (copy.keycodes); + g_free (right_keys); + g_free (left_keys); + } + } } static gboolean @@ -333,8 +592,9 @@ if (gdk_keymap_translate_keyboard_state (gdk_keymap_get_default (), keycode, state, group, &keyval, NULL, NULL, &consumed)) { + guint key_bit, event_bit; guint lower, upper; - guint mask; + guint mask, full_mask; /* HACK: we don't want to use SysRq as a keybinding, so we avoid * its translation from Alt+Print. */ @@ -346,20 +606,33 @@ /* The Key structure contains virtual modifiers, whereas * the XEvent will be using the real modifier, so translate those */ + key_bit = get_mask_for_key (key->keysym); + event_bit = get_mask_for_key (keyval); mask = key->state; + full_mask = mask | key_bit; gdk_keymap_map_virtual_modifiers (gdk_keymap_get_default (), &mask); + gdk_keymap_map_virtual_modifiers (gdk_keymap_get_default (), &full_mask); mask &= ~(GDK_META_MASK | GDK_SUPER_MASK | GDK_HYPER_MASK); + full_mask &= ~(GDK_META_MASK | GDK_SUPER_MASK | GDK_HYPER_MASK); gdk_keyval_convert_case (keyval, &lower, &upper); /* If we are checking against the lower version of the * keysym, we might need the Shift state for matching, * so remove it from the consumed modifiers */ - if (lower == key->keysym) + if (lower == key->keysym || event_bit != 0) consumed &= ~GDK_SHIFT_MASK; - return ((lower == key->keysym || upper == key->keysym) - && (state & ~consumed & gsd_used_mods) == mask); + state &= ~consumed & gsd_used_mods; + + if (key_bit != 0 && event_bit != 0) { + state |= event_bit; + gdk_keymap_map_virtual_modifiers (gdk_keymap_get_default (), &state); + state &= ~(GDK_META_MASK | GDK_SUPER_MASK | GDK_HYPER_MASK); + return state == full_mask; + } + + return (lower == key->keysym || upper == key->keysym) && state == mask; } /* The key we passed doesn't have a keysym, so try with just the keycode */ --- a/plugins/keyboard/gsd-keyboard-manager.c +++ b/plugins/keyboard/gsd-keyboard-manager.c @@ -959,7 +959,7 @@ * and doesn't call us so we can't set the group switching XKB * option in the first place otherwise the X server's switch * will take effect and we get a broken configuration. */ - if (n_sources < 2) + if (n_sources < 2 || g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Unity") == 0) strip_xkb_option (options, "grp:"); options_str = build_xkb_options_string (options); @@ -1006,6 +1006,8 @@ gnome_xkb_info_free_var_defs (xkb_var_defs); g_free (rules_file_path); + + XkbLockModifiers (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), XkbUseCoreKbd, LockMask, 0); } static void --- a/plugins/media-keys/gsd-media-keys-manager.c +++ b/plugins/media-keys/gsd-media-keys-manager.c @@ -2559,6 +2559,8 @@ GdkEvent *event, GsdMediaKeysManager *manager) { + static gboolean ok_to_switch = TRUE; + XIEvent *xiev; XIDeviceEvent *xev; XGenericEventCookie *cookie; @@ -2582,6 +2584,9 @@ deviceid = xev->sourceid; + if (xiev->evtype == XI_KeyPress) + ok_to_switch = TRUE; + for (i = 0; i < manager->priv->keys->len; i++) { MediaKey *key; @@ -2614,6 +2619,15 @@ return GDK_FILTER_REMOVE; } + if (key->key_type == SWITCH_INPUT_SOURCE_KEY || key->key_type == SWITCH_INPUT_SOURCE_BACKWARD_KEY) { + if (ok_to_switch) { + do_action (manager, deviceid, key->key_type, xev->time); + ok_to_switch = FALSE; + } + + return GDK_FILTER_CONTINUE; + } + if (do_action (manager, deviceid, key->key_type, xev->time) == FALSE) { return GDK_FILTER_REMOVE; } else { debian/patches/migrate_metacity_keys.patch0000664000000000000000000000152312321122275016220 0ustar Description: Migrate screenshot/terminal keys from metacity gconf as well Bug-Ubuntu: https://bugs.launchpad.net/bugs/1058004 --- gnome-settings-daemon/data/gnome-settings-daemon.convert.old 2012-10-02 08:50:01.384413000 +0300 +++ gnome-settings-daemon/data/gnome-settings-daemon.convert 2012-10-02 09:05:22.243096198 +0300 @@ -61,6 +61,9 @@ volume-mute = /apps/gnome_settings_daemon/keybindings/volume_mute volume-up = /apps/gnome_settings_daemon/keybindings/volume_up www = /apps/gnome_settings_daemon/keybindings/www +screenshot = /apps/metacity/global_keybindings/run_command_screenshot +window-screenshot = /apps/metacity/global_keybindings/run_command_window_screenshot +terminal = /apps/metacity/global_keybindings/run_command_terminal [org.gnome.settings-daemon.plugins.mouse] active = /apps/gnome_settings_daemon/plugins/mouse/active debian/patches/git_enable_auto_hidpi.patch0000664000000000000000000000204412321122275016133 0ustar From 260359bc74dda450dda6bff1c4a17dd126a61b18 Mon Sep 17 00:00:00 2001 From: Alexander Larsson Date: Tue, 20 Aug 2013 12:30:29 +0000 Subject: xsettings: Enable the automatic hidpi selection gnome-shell can now handle Gtk+ enabling scaling by default, so its now safe to automatically enable this. --- diff --git a/plugins/xsettings/gsd-xsettings-manager.c b/plugins/xsettings/gsd-xsettings-manager.c index 1620566..cb018a0 100644 --- a/plugins/xsettings/gsd-xsettings-manager.c +++ b/plugins/xsettings/gsd-xsettings-manager.c @@ -454,11 +454,6 @@ get_window_scale (GnomeXSettingsManager *manager) if (dpi_x > HIDPI_LIMIT && dpi_y > HIDPI_LIMIT) window_scale = 2; } - - /* TODO: For now we don't support automatic scale picking, because it - any scale but 1 breaks gnome-shell. Remove this when gnome-shell - is fixed. */ - window_scale = 1; } return window_scale; -- cgit v0.9.2 debian/patches/series0000664000000000000000000000216412321122275012034 0ustar 05_disable_corner_tapping.patch 16_use_synchronous_notifications.patch 43_disable_locale_settings.patch 45_suppress-printer-may-not-be-connected-notification.patch #48_register_client_before_idle_callbacks.patch revert_background_dropping.patch 52_sync_background_to_accountsservice.patch 53_sync_input_sources_to_accountsservice.patch 62_unity_disable_gsd_printer.patch 63_gnome_disable_background_plugin.patch 64_restore_terminal_keyboard_shortcut_schema.patch 90_set_gmenus_xsettings.patch disable_three_touch_tap.patch correct_logout_action.patch migrate_metacity_keys.patch touchscreen_rotation.patch nexus-orientation.patch fix_broken_user_sounds_permissions.patch fix_media_keys_on_unity.patch fix_input_switching_on_unity.patch fix_screenshots_on_unity.patch git_keybindings_add_screen_reader_toggle.patch git_revert_gsd-keygrab.patch ubuntu-fix-desktop-file.patch ubuntu-lid-close-suspend.patch git_touchpad_scrolling.patch unity-modifier-media-keys.patch ubuntu-lid-open-reset-ideletime.patch git_xsettings_segfaults.patch git_hidpi_scalling.patch git_new_screencast_keybinding.patch git_enable_auto_hidpi.patch git_micmute.patch debian/patches/fix_media_keys_on_unity.patch0000664000000000000000000004051312321122275016544 0ustar Description: revert legacy keygrabber support for unity only Selective revert of upstream commits, reworked to only use legacy keygrabber when running unity. b0cee1df30b4945f524611f354ff164d4a383262 893743318c5f6a209283cd54e77076f116569fbd 9e032789283dd5aa7c13411c538af3e4032f3145 Author: Tim Lunn Last-Update: <2013-04-25> --- a/plugins/media-keys/gsd-media-keys-manager.c +++ b/plugins/media-keys/gsd-media-keys-manager.c @@ -78,6 +78,10 @@ #define SHELL_DBUS_NAME "org.gnome.Shell" #define SHELL_DBUS_PATH "/org/gnome/Shell" +#define PANEL_DBUS_NAME "org.gnome.Panel" + +#define UNITY_DBUS_NAME "com.canonical.Unity" + #define CUSTOM_BINDING_SCHEMA SETTINGS_BINDING_DIR ".custom-keybinding" #define SHELL_GRABBER_RETRY_INTERVAL 1 @@ -130,6 +134,7 @@ const char *hard_coded; char *custom_path; char *custom_command; + Key *key; guint accel_id; } MediaKey; @@ -178,6 +183,13 @@ GDBusProxy *logind_proxy; gint inhibit_keys_fd; + /* Multihead stuff */ + GdkScreen *current_screen; + GSList *screens; + + GdkScreen *screen; + int opcode; + GList *media_players; GDBusNodeInfo *introspection_data; @@ -192,6 +204,10 @@ NotifyNotification *volume_notification; NotifyNotification *brightness_notification; NotifyNotification *kb_backlight_notification; + + /* Legacy keygrabber stuff */ + guint have_legacy_keygrabber; + }; static void gsd_media_keys_manager_class_init (GsdMediaKeysManagerClass *klass); @@ -338,12 +354,34 @@ } static void +init_screens (GsdMediaKeysManager *manager) +{ + GdkDisplay *display; + int i; + + display = gdk_display_get_default (); + for (i = 0; i < gdk_display_get_n_screens (display); i++) { + GdkScreen *screen; + + screen = gdk_display_get_screen (display, i); + if (screen == NULL) { + continue; + } + manager->priv->screens = g_slist_append (manager->priv->screens, screen); + } + + manager->priv->current_screen = manager->priv->screens->data; +} + +static void media_key_free (MediaKey *key) { if (key == NULL) return; g_free (key->custom_path); g_free (key->custom_command); + if (key->key) + free_key (key->key); g_free (key); } @@ -474,6 +512,18 @@ g_free (exec); } +static void +print_key_parse_error (MediaKey *key, + const char *str) +{ + if (str == NULL || *str == '\0') + return; + if (key->settings_key != NULL) + g_debug ("Unable to parse key '%s' for GSettings entry '%s'", str, key->settings_key); + else + g_debug ("Unable to parse hard-coded key '%s'", key->hard_coded); +} + static char * get_key_string (GsdMediaKeysManager *manager, MediaKey *key) @@ -681,6 +731,39 @@ g_free (tmp); } +static gboolean +grab_media_key_unity (MediaKey *key, + GsdMediaKeysManager *manager) +{ + char *tmp; + gboolean need_flush; + + need_flush = FALSE; + + if (key->key != NULL) { + need_flush = TRUE; + ungrab_key_unsafe (key->key, manager->priv->screens); + } + + free_key (key->key); + key->key = NULL; + + tmp = get_key_string (manager, key); + + key->key = parse_key (tmp); + if (key->key == NULL) { + print_key_parse_error (key, tmp); + g_free (tmp); + return need_flush; + } + + grab_key_unsafe (key->key, GSD_KEYGRAB_NORMAL, manager->priv->screens); + + g_free (tmp); + + return TRUE; +} + static void ungrab_accelerator_complete (GObject *object, GAsyncResult *result, @@ -712,15 +795,21 @@ GsdMediaKeysManager *manager) { int i; + gboolean need_flush = FALSE; + if (manager->priv->have_legacy_keygrabber) + need_flush = TRUE; /* Give up if we don't have proxy to the shell */ - if (!manager->priv->key_grabber) + else if (!manager->priv->key_grabber) return; /* handled in gsettings_custom_changed_cb() */ if (g_str_equal (settings_key, "custom-keybindings")) return; + if (manager->priv->have_legacy_keygrabber) + gdk_error_trap_push (); + /* Find the key that was modified */ for (i = 0; i < manager->priv->keys->len; i++) { MediaKey *key; @@ -731,10 +820,21 @@ if (key->settings_key == NULL) continue; if (strcmp (settings_key, key->settings_key) == 0) { - grab_media_key (key, manager); + if (!manager->priv->have_legacy_keygrabber) + grab_media_key (key, manager); + else { + if (grab_media_key_unity (key, manager)) + need_flush = TRUE; + } break; } } + if (manager->priv->have_legacy_keygrabber) { + if (need_flush) + gdk_flush (); + if (gdk_error_trap_pop ()) + g_warning ("Grab failed for some keys, another application may already have access the them."); + } } static MediaKey * @@ -855,7 +955,17 @@ if (found) continue; - ungrab_media_key (key, manager); + if (manager->priv->have_legacy_keygrabber && key->key) { + gdk_error_trap_push (); + + ungrab_key_unsafe (key->key, + manager->priv->screens); + + gdk_flush (); + if (gdk_error_trap_pop ()) + g_warning ("Ungrab failed for custom key '%s'", key->custom_path); + } else + ungrab_media_key (key, manager); g_hash_table_remove (manager->priv->custom_settings, key->custom_path); g_ptr_array_remove_index_fast (manager->priv->keys, i); @@ -876,6 +986,9 @@ key->modes = media_keys[i].modes; g_ptr_array_add (manager->priv->keys, key); + + if (manager->priv->have_legacy_keygrabber) + grab_media_key_unity (key, manager); } static void @@ -886,6 +999,9 @@ gnome_settings_profile_start (NULL); + if (manager->priv->have_legacy_keygrabber) + gdk_error_trap_push (); + /* Media keys * Add hard-coded shortcuts first so that they can't be preempted */ for (i = 0; i < G_N_ELEMENTS (media_keys); i++) { @@ -911,10 +1027,19 @@ continue; } g_ptr_array_add (manager->priv->keys, key); + + if (manager->priv->have_legacy_keygrabber) + grab_media_key_unity (key, manager); } g_strfreev (custom_paths); - grab_media_keys (manager); + if (!manager->priv->have_legacy_keygrabber) + grab_media_keys (manager); + else { + gdk_flush (); + if (gdk_error_trap_pop ()) + g_warning ("Grab failed for some keys, another application may already have access the them."); + } gnome_settings_profile_end (NULL); } @@ -2332,6 +2457,95 @@ return FALSE; } +static GdkScreen * +get_screen_from_root (GsdMediaKeysManager *manager, + Window root) +{ + GSList *l; + + /* Look for which screen we're receiving events */ + for (l = manager->priv->screens; l != NULL; l = l->next) { + GdkScreen *screen = (GdkScreen *) l->data; + GdkWindow *window = gdk_screen_get_root_window (screen); + + if (GDK_WINDOW_XID (window) == root) + return screen; + } + + return NULL; +} + +static GdkFilterReturn +filter_key_events (XEvent *xevent, + GdkEvent *event, + GsdMediaKeysManager *manager) +{ + XIEvent *xiev; + XIDeviceEvent *xev; + XGenericEventCookie *cookie; + guint i; + guint deviceid; + + /* verify we have a key event */ + if (xevent->type != GenericEvent) + return GDK_FILTER_CONTINUE; + cookie = &xevent->xcookie; + if (cookie->extension != manager->priv->opcode) + return GDK_FILTER_CONTINUE; + + xiev = (XIEvent *) xevent->xcookie.data; + + if (xiev->evtype != XI_KeyPress && + xiev->evtype != XI_KeyRelease) + return GDK_FILTER_CONTINUE; + + xev = (XIDeviceEvent *) xiev; + + deviceid = xev->sourceid; + + for (i = 0; i < manager->priv->keys->len; i++) { + MediaKey *key; + + key = g_ptr_array_index (manager->priv->keys, i); + + if (match_xi2_key (key->key, xev)) { + switch (key->key_type) { + case VOLUME_DOWN_KEY: + case VOLUME_UP_KEY: + case VOLUME_DOWN_QUIET_KEY: + case VOLUME_UP_QUIET_KEY: + case SCREEN_BRIGHTNESS_UP_KEY: + case SCREEN_BRIGHTNESS_DOWN_KEY: + case KEYBOARD_BRIGHTNESS_UP_KEY: + case KEYBOARD_BRIGHTNESS_DOWN_KEY: + /* auto-repeatable keys */ + if (xiev->evtype != XI_KeyPress) + return GDK_FILTER_CONTINUE; + break; + default: + if (xiev->evtype != XI_KeyRelease) { + return GDK_FILTER_CONTINUE; + } + } + + manager->priv->current_screen = get_screen_from_root (manager, xev->root); + + if (key->key_type == CUSTOM_KEY) { + do_custom_action (manager, deviceid, key, xev->time); + return GDK_FILTER_REMOVE; + } + + if (do_action (manager, deviceid, key->key_type, xev->time) == FALSE) { + return GDK_FILTER_REMOVE; + } else { + return GDK_FILTER_CONTINUE; + } + } + } + + return GDK_FILTER_CONTINUE; +} + static void on_accelerator_activated (ShellKeyGrabber *grabber, guint accel_id, @@ -2448,6 +2662,9 @@ const char *name_owner, gpointer user_data) { + if (g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "gnome") != 0) + return; + GsdMediaKeysManager *manager = user_data; shell_key_grabber_proxy_new_for_bus (G_BUS_TYPE_SESSION, @@ -2467,10 +2684,57 @@ } static void +maybe_start_legacy_grabber (GsdMediaKeysManager *manager) +{ + GSList *l; + + if (g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "gnome") == 0) + return; + + manager->priv->have_legacy_keygrabber = TRUE; + + g_debug ("start_legacy_grabber"); + + if (manager->priv->keys == NULL) + return; + + init_screens (manager); + init_kbd (manager); + + /* Start filtering the events */ + for (l = manager->priv->screens; l != NULL; l = l->next) { + gnome_settings_profile_start ("gdk_window_add_filter"); + + g_debug ("adding key filter for screen: %d", + gdk_screen_get_number (l->data)); + + gdk_window_add_filter (gdk_screen_get_root_window (l->data), + (GdkFilterFunc) filter_key_events, + manager); + gnome_settings_profile_end ("gdk_window_add_filter"); + } +} + +static void +maybe_stop_legacy_grabber (GsdMediaKeysManager *manager) +{ + if (g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "gnome") == 0) + return; + + manager->priv->have_legacy_keygrabber = FALSE; + + g_ptr_array_set_size (manager->priv->keys, 0); +} + + +static void on_shell_vanished (GDBusConnection *connection, const char *name, gpointer user_data) { + if (g_strcmp0 (g_getenv ("DESKTOP_SESSION"), "gnome") != 0) + return; + GsdMediaKeysManager *manager = user_data; g_ptr_array_set_size (manager->priv->keys, 0); @@ -2531,6 +2795,7 @@ } manager->priv->icon_theme = g_settings_get_string (manager->priv->interface_settings, "icon-theme"); + ensure_cancellable (&manager->priv->grab_cancellable); ensure_cancellable (&manager->priv->shell_cancellable); @@ -2541,6 +2806,8 @@ on_shell_vanished, manager, NULL); + maybe_start_legacy_grabber (manager); + gnome_settings_profile_end (NULL); manager->priv->start_idle_id = 0; @@ -2556,6 +2823,11 @@ gnome_settings_profile_start (NULL); + if (supports_xinput2_devices (&manager->priv->opcode) == FALSE) { + g_debug ("No Xinput2 support, disabling plugin"); + return TRUE; + } + #ifdef HAVE_GUDEV manager->priv->streams = g_hash_table_new (g_direct_hash, g_direct_equal); manager->priv->udev_client = g_udev_client_new (subsystems); @@ -2574,6 +2846,7 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager) { GsdMediaKeysManagerPrivate *priv = manager->priv; + GSList *ls; int i; g_debug ("Stopping media_keys manager"); @@ -2584,6 +2857,15 @@ priv->bus_cancellable = NULL; } + if (manager->priv->have_legacy_keygrabber) { + for (ls = priv->screens; ls != NULL; ls = ls->next) { + gdk_window_remove_filter (gdk_screen_get_root_window (ls->data), + (GdkFilterFunc) filter_key_events, + manager); + } + maybe_stop_legacy_grabber (manager); + } + if (manager->priv->gtksettings != NULL) { g_signal_handlers_disconnect_by_func (manager->priv->gtksettings, sound_theme_changed, manager); manager->priv->gtksettings = NULL; @@ -2635,16 +2917,26 @@ } if (priv->keys != NULL) { + if (manager->priv->have_legacy_keygrabber) + gdk_error_trap_push (); for (i = 0; i < priv->keys->len; ++i) { MediaKey *key; key = g_ptr_array_index (manager->priv->keys, i); - ungrab_media_key (key, manager); + if (manager->priv->have_legacy_keygrabber && key->key) + ungrab_key_unsafe (key->key, priv->screens); + else + ungrab_media_key (key, manager); } g_ptr_array_free (priv->keys, TRUE); priv->keys = NULL; } + if (manager->priv->have_legacy_keygrabber){ + gdk_flush (); + gdk_error_trap_pop_ignored (); + } + if (priv->grab_cancellable != NULL) { g_cancellable_cancel (priv->grab_cancellable); g_clear_object (&priv->grab_cancellable); @@ -2655,6 +2947,7 @@ g_clear_object (&priv->shell_cancellable); } + g_clear_pointer (&priv->screens, g_slist_free); g_clear_object (&priv->sink); g_clear_object (&priv->source); g_clear_object (&priv->volume); --- a/plugins/media-keys/shortcuts-list.h +++ b/plugins/media-keys/shortcuts-list.h @@ -22,6 +22,7 @@ #define __SHORTCUTS_LIST_H__ #include "shell-keybinding-modes.h" +#include "gsd-keygrab.h" #define SETTINGS_BINDING_DIR "org.gnome.settings-daemon.plugins.media-keys" debian/patches/16_use_synchronous_notifications.patch0000664000000000000000000004021312321122275020342 0ustar Description: Use synchronous notifications when they are supported Author: ? Upstream: that's Ubuntu specific (notify-osd) --- a/plugins/media-keys/gsd-media-keys-manager.c +++ b/plugins/media-keys/gsd-media-keys-manager.c @@ -62,6 +62,8 @@ #include "gvc-mixer-control.h" #include "gvc-mixer-sink.h" +#include + #define GSD_MEDIA_KEYS_DBUS_PATH GSD_DBUS_PATH "/MediaKeys" #define GSD_MEDIA_KEYS_DBUS_NAME GSD_DBUS_NAME ".MediaKeys" @@ -185,6 +187,11 @@ GCancellable *cancellable; guint start_idle_id; + + /* Ubuntu notifications */ + NotifyNotification *volume_notification; + NotifyNotification *brightness_notification; + NotifyNotification *kb_backlight_notification; }; static void gsd_media_keys_manager_class_init (GsdMediaKeysManagerClass *klass); @@ -203,6 +210,132 @@ static gpointer manager_object = NULL; +#define NOTIFY_CAP_PRIVATE_SYNCHRONOUS "x-canonical-private-synchronous" +#define NOTIFY_CAP_PRIVATE_ICON_ONLY "x-canonical-private-icon-only" +#define NOTIFY_HINT_TRUE "true" + +typedef struct { + GsdMediaKeysManager *manager; + MediaKeyType type; + guint old_percentage; + +} GsdBrightnessActionData; + +static const char *volume_icons[] = { + "notification-audio-volume-muted", + "notification-audio-volume-low", + "notification-audio-volume-medium", + "notification-audio-volume-high", + NULL +}; + +static const char *brightness_icons[] = { + "notification-display-brightness-off", + "notification-display-brightness-low", + "notification-display-brightness-medium", + "notification-display-brightness-high", + "notification-display-brightness-full", + NULL +}; + +static const char *kb_backlight_icons[] = { + "notification-keyboard-brightness-off", + "notification-keyboard-brightness-low", + "notification-keyboard-brightness-medium", + "notification-keyboard-brightness-high", + "notification-keyboard-brightness-full", + NULL +}; + +static const char * +calculate_icon_name (gint value, const char **icon_names) +{ + value = CLAMP (value, 0, 100); + gint length = g_strv_length (icon_names); + gint s = (length - 1) * value / 100 + 1; + s = CLAMP (s, 1, length - 1); + + return icon_names[s]; +} + +static gboolean +ubuntu_osd_notification_is_supported (void) +{ + GList *caps; + gboolean has_cap; + + caps = notify_get_server_caps (); + has_cap = (g_list_find_custom (caps, NOTIFY_CAP_PRIVATE_SYNCHRONOUS, (GCompareFunc) g_strcmp0) != NULL); + g_list_foreach (caps, (GFunc) g_free, NULL); + g_list_free (caps); + + return has_cap; +} + +static gboolean +ubuntu_osd_notification_show_icon (const char *icon, + const char *hint) +{ + if (!ubuntu_osd_notification_is_supported ()) + return FALSE; + + NotifyNotification *notification = notify_notification_new (" ", "", icon); + notify_notification_set_hint_string (notification, NOTIFY_CAP_PRIVATE_SYNCHRONOUS, hint); + notify_notification_set_hint_string (notification, NOTIFY_CAP_PRIVATE_ICON_ONLY, NOTIFY_HINT_TRUE); + + gboolean res = notify_notification_show (notification, NULL); + g_object_unref (notification); + + return res; +} + +static gboolean +ubuntu_osd_do_notification (NotifyNotification **notification, + const char *hint, + gint value, + gboolean muted, + const char **icon_names) +{ + if (!ubuntu_osd_notification_is_supported ()) + return FALSE; + + if (!*notification) { + *notification = notify_notification_new (" ", "", NULL); + notify_notification_set_hint_string (*notification, NOTIFY_CAP_PRIVATE_SYNCHRONOUS, hint); + } + + value = CLAMP (value, -1, 101); + const char *icon = muted ? icon_names[0] : calculate_icon_name (value, icon_names); + notify_notification_set_hint_int32 (*notification, "value", value); + notify_notification_update (*notification, " ", "", icon); + + return notify_notification_show (*notification, NULL); +} + +static gboolean +ubuntu_osd_notification_show_volume (GsdMediaKeysManager *manager, + gint value, + gboolean muted) +{ + return ubuntu_osd_do_notification (&manager->priv->volume_notification, + "volume", value, muted, volume_icons); +} + +static gboolean +ubuntu_osd_notification_show_brightness (GsdMediaKeysManager *manager, + gint value) +{ + return ubuntu_osd_do_notification (&manager->priv->brightness_notification, + "brightness", value, value <= 0, brightness_icons); +} + +static gboolean +ubuntu_osd_notification_show_kb_backlight (GsdMediaKeysManager *manager, + gint value) +{ + return ubuntu_osd_do_notification (&manager->priv->kb_backlight_notification, + "keyboard", value, value <= 0, kb_backlight_icons); +} static void media_key_free (MediaKey *key) @@ -908,7 +1041,9 @@ } /* Show OSD */ - show_osd (manager, "media-eject-symbolic", NULL, -1); + if (!ubuntu_osd_notification_show_icon ("notification-device-eject", "Eject")) { + show_osd (manager, "media-eject-symbolic", NULL, -1); + } /* Clean up the drive selection and exit if no suitable * drives are found */ @@ -971,8 +1106,10 @@ static void do_touchpad_osd_action (GsdMediaKeysManager *manager, gboolean state) { - show_osd (manager, state ? "input-touchpad-symbolic" - : "touchpad-disabled-symbolic", NULL, -1); + if (!ubuntu_osd_notification_show_icon ((!state) ? "touchpad-disabled-symbolic" : "input-touchpad-symbolic", "Touchpad")) { + show_osd (manager, state ? "input-touchpad-symbolic" + : "touchpad-disabled-symbolic", NULL, -1); + } } static void @@ -1026,12 +1163,10 @@ const GvcMixerStreamPort *port; const char *icon; - if (!muted) { - vol = (int) (100 * (double) vol / PA_VOLUME_NORM); - vol = CLAMP (vol, 0, 100); - } else { - vol = 0.0; - } + if (ubuntu_osd_notification_show_volume (manager, vol, muted)) + goto done; + + vol = CLAMP (vol, 0, 100); icon = get_icon_name_for_volume (!GVC_IS_MIXER_SINK (stream), muted, vol); port = gvc_mixer_stream_get_port (stream); @@ -1044,6 +1179,7 @@ show_osd (manager, icon, NULL, vol); } +done: if (quiet == FALSE && sound_changed != FALSE && muted == FALSE) { ca_context_change_device (manager->priv->ca, gvc_mixer_stream_get_name (stream)); @@ -1173,7 +1309,7 @@ { GvcMixerStream *stream; gboolean old_muted, new_muted; - guint old_vol, new_vol, norm_vol_step; + guint old_vol, new_vol, norm_vol_step, osd_vol; gboolean sound_changed; /* Find the stream that corresponds to the device, if any */ @@ -1231,7 +1367,16 @@ } } - update_dialog (manager, stream, new_vol, new_muted, sound_changed, quiet); + if (type == VOLUME_DOWN_KEY && old_vol == 0 && old_muted) + osd_vol = -1; + else if (type == VOLUME_UP_KEY && old_vol == PA_VOLUME_NORM && !old_muted) + osd_vol = 101; + else if (!new_muted) + osd_vol = (int) (100 * (double) new_vol / PA_VOLUME_NORM); + else + osd_vol = 0; + + update_dialog (manager, stream, osd_vol, new_muted, sound_changed, quiet); } static void @@ -1559,8 +1704,11 @@ static gboolean do_multimedia_player_action (GsdMediaKeysManager *manager, + const char *icon, const char *key) { + if (icon != NULL) + ubuntu_osd_notification_show_icon (icon, key); return gsd_media_player_key_pressed (manager, key); } @@ -1809,7 +1957,8 @@ GError *error = NULL; guint percentage; GVariant *new_percentage; - GsdMediaKeysManager *manager = GSD_MEDIA_KEYS_MANAGER (user_data); + GsdBrightnessActionData *data = (GsdBrightnessActionData *) user_data; + GsdMediaKeysManager *manager = data->manager; new_percentage = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), res, &error); @@ -1817,16 +1966,62 @@ g_warning ("Failed to set new screen percentage: %s", error->message); g_error_free (error); + g_free (data); return; } /* update the dialog with the new value */ g_variant_get (new_percentage, "(u)", &percentage); - show_osd (manager, "display-brightness-symbolic", NULL, percentage); + guint osd_percentage; + + if (data->old_percentage == 100 && data->type == SCREEN_BRIGHTNESS_UP_KEY) + osd_percentage = 101; + else if (data->old_percentage == 0 && data->type == SCREEN_BRIGHTNESS_DOWN_KEY) + osd_percentage = -1; + else + osd_percentage = CLAMP (percentage, 0, 100); + + if (!ubuntu_osd_notification_show_brightness (manager, osd_percentage)) { + show_osd (manager, "display-brightness-symbolic", NULL, percentage); + } + g_free (data); g_variant_unref (new_percentage); } static void +do_screen_brightness_action_real (GObject *source_object, + GAsyncResult *res, + gpointer user_data) +{ + GsdBrightnessActionData *data = (GsdBrightnessActionData *) user_data; + GsdMediaKeysManager *manager = data->manager; + GError *error = NULL; + + GVariant *old_percentage = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), + res, &error); + if (old_percentage == NULL) { + g_warning ("Failed to get old screen percentage: %s", error->message); + g_error_free (error); + g_free (data); + return; + } + + g_variant_get (old_percentage, "(u)", &data->old_percentage); + + /* call into the power plugin */ + g_dbus_proxy_call (manager->priv->power_screen_proxy, + data->type == SCREEN_BRIGHTNESS_UP_KEY ? "StepUp" : "StepDown", + NULL, + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + update_screen_cb, + data); + + g_variant_unref (old_percentage); +} + +static void do_screen_brightness_action (GsdMediaKeysManager *manager, MediaKeyType type) { @@ -1836,15 +2031,18 @@ return; } - /* call into the power plugin */ + GsdBrightnessActionData *data = g_new0 (GsdBrightnessActionData, 1); + data->manager = manager; + data->type = type; + g_dbus_proxy_call (manager->priv->power_screen_proxy, - type == SCREEN_BRIGHTNESS_UP_KEY ? "StepUp" : "StepDown", + "GetPercentage", NULL, G_DBUS_CALL_FLAGS_NONE, -1, NULL, - update_screen_cb, - manager); + do_screen_brightness_action_real, + data); } static void @@ -1868,7 +2066,12 @@ /* update the dialog with the new value */ g_variant_get (new_percentage, "(u)", &percentage); - show_osd (manager, "keyboard-brightness-symbolic", NULL, percentage); + + /* FIXME: No overshoot effect for keyboard, as the power plugin has no interface + * to get the old brightness */ + if (!ubuntu_osd_notification_show_kb_backlight (manager, CLAMP (percentage, 0, 100))) { + show_osd (manager, "keyboard-brightness-symbolic", NULL, percentage); + } g_variant_unref (new_percentage); } @@ -2017,23 +2220,23 @@ do_execute_desktop_or_desktop (manager, "gcalctool.desktop", "gnome-calculator.desktop", timestamp); break; case PLAY_KEY: - return do_multimedia_player_action (manager, "Play"); + return do_multimedia_player_action (manager, NULL, "Play"); case PAUSE_KEY: - return do_multimedia_player_action (manager, "Pause"); + return do_multimedia_player_action (manager, NULL, "Pause"); case STOP_KEY: - return do_multimedia_player_action (manager, "Stop"); + return do_multimedia_player_action (manager, NULL, "Stop"); case PREVIOUS_KEY: - return do_multimedia_player_action (manager, "Previous"); + return do_multimedia_player_action (manager, NULL, "Previous"); case NEXT_KEY: - return do_multimedia_player_action (manager, "Next"); + return do_multimedia_player_action (manager, NULL, "Next"); case REWIND_KEY: - return do_multimedia_player_action (manager, "Rewind"); + return do_multimedia_player_action (manager, NULL, "Rewind"); case FORWARD_KEY: - return do_multimedia_player_action (manager, "FastForward"); + return do_multimedia_player_action (manager, NULL, "FastForward"); case REPEAT_KEY: - return do_multimedia_player_action (manager, "Repeat"); + return do_multimedia_player_action (manager, NULL, "Repeat"); case RANDOM_KEY: - return do_multimedia_player_action (manager, "Shuffle"); + return do_multimedia_player_action (manager, NULL, "Shuffle"); case VIDEO_OUT_KEY: do_video_out_action (manager, timestamp); break; @@ -2376,6 +2579,24 @@ g_clear_pointer (&priv->introspection_data, g_dbus_node_info_unref); g_clear_object (&priv->connection); + if (priv->volume_notification != NULL) { + notify_notification_close (priv->volume_notification, NULL); + g_object_unref (priv->volume_notification); + priv->volume_notification = NULL; + } + + if (priv->brightness_notification != NULL) { + notify_notification_close (priv->brightness_notification, NULL); + g_object_unref (priv->brightness_notification); + priv->brightness_notification = NULL; + } + + if (priv->kb_backlight_notification != NULL) { + notify_notification_close (priv->kb_backlight_notification, NULL); + g_object_unref (priv->kb_backlight_notification); + priv->kb_backlight_notification = NULL; + } + if (priv->keys != NULL) { for (i = 0; i < priv->keys->len; ++i) { MediaKey *key; --- a/configure.ac +++ b/configure.ac @@ -201,7 +201,7 @@ dnl - media-keys plugin stuff dnl --------------------------------------------------------------------------- -PKG_CHECK_MODULES(MEDIA_KEYS, [gio-unix-2.0 libpulse >= $PA_REQUIRED_VERSION $GUDEV_PKG libpulse-mainloop-glib >= $PA_REQUIRED_VERSION libcanberra-gtk3]) +PKG_CHECK_MODULES(MEDIA_KEYS, [gio-unix-2.0 libpulse >= $PA_REQUIRED_VERSION $GUDEV_PKG libpulse-mainloop-glib >= $PA_REQUIRED_VERSION libcanberra-gtk3 libnotify]) PKG_CHECK_MODULES(GVC, [gobject-2.0 libpulse >= $PA_REQUIRED_VERSION libpulse-mainloop-glib >= $PA_REQUIRED_VERSION]) AM_CONDITIONAL(HAVE_INTROSPECTION, false) debian/patches/63_gnome_disable_background_plugin.patch0000664000000000000000000000150612321122275020514 0ustar --- a/gnome-settings-daemon/gnome-settings-plugin-info.c +++ b/gnome-settings-daemon/gnome-settings-plugin-info.c @@ -395,6 +395,21 @@ goto out; } + if (g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "GNOME") == 0 + && g_strcmp0 (info->priv->name, "Background") == 0) { + + g_warning ("Disable background plugin when under gnome-shell"); + + g_object_unref (G_OBJECT (info->priv->module)); + info->priv->module = NULL; + + /* Mark plugin as unavailable */ + info->priv->available = FALSE; + + goto out; + } + + info->priv->plugin = GNOME_SETTINGS_PLUGIN (gnome_settings_module_new_object (GNOME_SETTINGS_MODULE (info->priv->module))); g_type_module_unuse (info->priv->module); debian/patches/61_revert_libgnomekbd_drop0000664000000000000000000010327412321122275015744 0ustar Index: b/configure.ac =================================================================== --- a/configure.ac +++ b/configure.ac @@ -47,7 +47,7 @@ GTK_REQUIRED_VERSION=3.3.18 GCONF_REQUIRED_VERSION=2.6.1 GIO_REQUIRED_VERSION=2.26.0 -GNOME_DESKTOP_REQUIRED_VERSION=3.5.3 +GNOME_DESKTOP_REQUIRED_VERSION=3.3.92 LIBNOTIFY_REQUIRED_VERSION=0.7.3 UPOWER_GLIB_REQUIRED_VERSION=0.9.1 PA_REQUIRED_VERSION=0.9.16 @@ -175,7 +175,8 @@ dnl - Keyboard plugin stuff dnl --------------------------------------------------------------------------- -PKG_CHECK_MODULES(KEYBOARD, xkbfile gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED_VERSION) +LIBGNOMEKBD_REQUIRED=3.5.1 +PKG_CHECK_MODULES(KEYBOARD, [libgnomekbdui >= $LIBGNOMEKBD_REQUIRED libgnomekbd >= $LIBGNOMEKBD_REQUIRED libxklavier >= 5.0 kbproto]) dnl --------------------------------------------------------------------------- dnl - Housekeeping plugin stuff Index: b/plugins/keyboard/delayed-dialog.c =================================================================== --- /dev/null +++ b/plugins/keyboard/delayed-dialog.c @@ -0,0 +1,128 @@ +/* + * Copyright © 2006 Novell, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + +#include +#include + +#include +#include + +#include "delayed-dialog.h" + +static gboolean delayed_show_timeout (gpointer data); +static GdkFilterReturn message_filter (GdkXEvent *xevent, + GdkEvent *event, + gpointer data); + +static GSList *dialogs = NULL; + +/** + * gsd_delayed_show_dialog: + * @dialog: the dialog + * + * Shows the dialog as with gtk_widget_show(), unless a window manager + * hasn't been started yet, in which case it will wait up to 5 seconds + * for that to happen before showing the dialog. + **/ +void +gsd_delayed_show_dialog (GtkWidget *dialog) +{ + GdkDisplay *display = gtk_widget_get_display (dialog); + Display *xdisplay = GDK_DISPLAY_XDISPLAY (display); + GdkScreen *screen = gtk_widget_get_screen (dialog); + char selection_name[10]; + Atom selection_atom; + + /* We can't use gdk_selection_owner_get() for this, because + * it's an unknown out-of-process window. + */ + snprintf (selection_name, sizeof (selection_name), "WM_S%d", + gdk_screen_get_number (screen)); + selection_atom = XInternAtom (xdisplay, selection_name, True); + if (selection_atom && + XGetSelectionOwner (xdisplay, selection_atom) != None) { + gtk_widget_show (dialog); + return; + } + + dialogs = g_slist_prepend (dialogs, dialog); + + gdk_window_add_filter (NULL, message_filter, NULL); + + g_timeout_add (5000, delayed_show_timeout, NULL); +} + +static gboolean +delayed_show_timeout (gpointer data) +{ + GSList *l; + + for (l = dialogs; l; l = l->next) + gtk_widget_show (l->data); + g_slist_free (dialogs); + dialogs = NULL; + + /* FIXME: There's no gdk_display_remove_client_message_filter */ + + return FALSE; +} + +static GdkFilterReturn +message_filter (GdkXEvent *xevent, GdkEvent *event, gpointer data) +{ + XClientMessageEvent *evt; + char *selection_name; + int screen; + GSList *l, *next; + + if (((XEvent *)xevent)->type != ClientMessage) + return GDK_FILTER_CONTINUE; + + evt = (XClientMessageEvent *)xevent; + + if (evt->message_type != XInternAtom (evt->display, "MANAGER", FALSE)) + return GDK_FILTER_CONTINUE; + + selection_name = XGetAtomName (evt->display, evt->data.l[1]); + + if (strncmp (selection_name, "WM_S", 4) != 0) { + XFree (selection_name); + return GDK_FILTER_CONTINUE; + } + + screen = atoi (selection_name + 4); + + for (l = dialogs; l; l = next) { + GtkWidget *dialog = l->data; + next = l->next; + + if (gdk_screen_get_number (gtk_widget_get_screen (dialog)) == screen) { + gtk_widget_show (dialog); + dialogs = g_slist_remove (dialogs, dialog); + } + } + + if (!dialogs) { + gdk_window_remove_filter (NULL, message_filter, NULL); + } + + XFree (selection_name); + + return GDK_FILTER_CONTINUE; +} Index: b/plugins/keyboard/delayed-dialog.h =================================================================== --- /dev/null +++ b/plugins/keyboard/delayed-dialog.h @@ -0,0 +1,32 @@ +/* + * Copyright © 2006 Novell, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA + * 02111-1307, USA. + */ + + +#ifndef __DELAYED_DIALOG_H +#define __DELAYED_DIALOG_H + +#include + +G_BEGIN_DECLS + +void gsd_delayed_show_dialog (GtkWidget *dialog); + +G_END_DECLS + +#endif Index: b/plugins/keyboard/gsd-keyboard-manager.c =================================================================== --- a/plugins/keyboard/gsd-keyboard-manager.c +++ b/plugins/keyboard/gsd-keyboard-manager.c @@ -40,15 +40,19 @@ #include #include -#include -#define GNOME_DESKTOP_USE_UNSTABLE_API -#include +#include +#include +#include +#include +#include +#include #include "gnome-settings-profile.h" #include "gsd-keyboard-manager.h" #include "gsd-input-helper.h" #include "gsd-enums.h" +#include "delayed-dialog.h" #define GSD_KEYBOARD_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_KEYBOARD_MANAGER, GsdKeyboardManagerPrivate)) @@ -66,26 +70,31 @@ #define KEY_BELL_DURATION "bell-duration" #define KEY_BELL_MODE "bell-mode" -#define GNOME_DESKTOP_INPUT_SOURCES_DIR "org.gnome.desktop.input-sources" - -#define KEY_CURRENT_INPUT_SOURCE "current" -#define KEY_INPUT_SOURCES "sources" - -#define INPUT_SOURCE_TYPE_XKB "xkb" - #define DEFAULT_LANGUAGE "en_US" struct GsdKeyboardManagerPrivate { guint start_idle_id; GSettings *settings; - GSettings *input_sources_settings; - GnomeXkbInfo *xkb_info; gint xkb_event_base; GsdNumLockState old_state; GdkDeviceManager *device_manager; guint device_added_id; guint device_removed_id; + + /* XKB */ + XklEngine *xkl_engine; + XklConfigRegistry *xkl_registry; + + GkbdDesktopConfig current_config; + GkbdKeyboardConfig current_kbd_config; + + GkbdKeyboardConfig initial_sys_kbd_config; + GSettings *settings_desktop; + GSettings *settings_keyboard; + + GtkStatusIcon *icon; + GtkMenu *popup_menu; }; static void gsd_keyboard_manager_class_init (GsdKeyboardManagerClass *klass); @@ -96,6 +105,367 @@ static gpointer manager_object = NULL; +static gboolean try_activating_xkb_config_if_new (GsdKeyboardManager *manager, + GkbdKeyboardConfig *current_sys_kbd_config); +static gboolean filter_xkb_config (GsdKeyboardManager *manager); +static void show_hide_icon (GsdKeyboardManager *manager); + +static void +activation_error (void) +{ + char const *vendor; + GtkWidget *dialog; + + vendor = + ServerVendor (GDK_DISPLAY_XDISPLAY + (gdk_display_get_default ())); + + /* VNC viewers will not work, do not barrage them with warnings */ + if (NULL != vendor && NULL != strstr (vendor, "VNC")) + return; + + dialog = gtk_message_dialog_new_with_markup (NULL, + 0, + GTK_MESSAGE_ERROR, + GTK_BUTTONS_CLOSE, + _ + ("Error activating XKB configuration.\n" + "There can be various reasons for that.\n\n" + "If you report this situation as a bug, include the results of\n" + " • %s\n" + " • %s\n" + " • %s\n" + " • %s"), + "xprop -root | grep XKB", + "gsettings get org.gnome.libgnomekbd.keyboard model", + "gsettings get org.gnome.libgnomekbd.keyboard layouts", + "gsettings get org.gnome.libgnomekbd.keyboard options"); + g_signal_connect (dialog, "response", + G_CALLBACK (gtk_widget_destroy), NULL); + gsd_delayed_show_dialog (dialog); +} + +static gboolean +ensure_manager_xkl_registry (GsdKeyboardManager *manager) +{ + if (!manager->priv->xkl_registry) { + manager->priv->xkl_registry = + xkl_config_registry_get_instance (manager->priv->xkl_engine); + /* load all materials, unconditionally! */ + if (!xkl_config_registry_load (manager->priv->xkl_registry, TRUE)) { + g_object_unref (manager->priv->xkl_registry); + manager->priv->xkl_registry = NULL; + return FALSE; + } + } + + return TRUE; +} + +static void +apply_desktop_settings (GsdKeyboardManager *manager) +{ + if (manager->priv->xkl_engine == NULL) + return; + + gsd_keyboard_manager_apply_settings (manager); + gkbd_desktop_config_load (&manager->priv->current_config); + /* again, probably it would be nice to compare things + before activating them */ + gkbd_desktop_config_activate (&manager->priv->current_config); +} + +static void +apply_xkb_settings (GsdKeyboardManager *manager) +{ + GkbdKeyboardConfig current_sys_kbd_config; + + if (manager->priv->xkl_engine == NULL) + return; + + gkbd_keyboard_config_init (¤t_sys_kbd_config, manager->priv->xkl_engine); + + gkbd_keyboard_config_load (&manager->priv->current_kbd_config, + &manager->priv->initial_sys_kbd_config); + + gkbd_keyboard_config_load_from_x_current (¤t_sys_kbd_config, + NULL); + + if (!try_activating_xkb_config_if_new (manager, ¤t_sys_kbd_config)) { + if (filter_xkb_config (manager)) { + if (!try_activating_xkb_config_if_new + (manager, ¤t_sys_kbd_config)) { + g_warning + ("Could not activate the filtered XKB configuration"); + activation_error (); + } + } else { + g_warning + ("Could not activate the XKB configuration"); + activation_error (); + } + } else + g_debug ( + "Actual KBD configuration was not changed: redundant notification\n"); + + gkbd_keyboard_config_term (¤t_sys_kbd_config); + show_hide_icon (manager); +} + +static void +desktop_settings_changed (GSettings *settings, + gchar *key, + GsdKeyboardManager *manager) +{ + apply_desktop_settings (manager); +} + +static void +xkb_settings_changed (GSettings *settings, + gchar *key, + GsdKeyboardManager *manager) +{ + apply_xkb_settings (manager); +} + +static void +popup_menu_launch_capplet (void) +{ + GAppInfo *info; + GdkAppLaunchContext *ctx; + GError *error = NULL; + + info = g_app_info_create_from_commandline ("gnome-control-center region", NULL, 0, NULL); + if (info == NULL) + return; + + ctx = gdk_display_get_app_launch_context (gdk_display_get_default ()); + + if (g_app_info_launch (info, NULL, + G_APP_LAUNCH_CONTEXT (ctx), &error) == FALSE) { + g_warning ("Could not execute keyboard properties capplet: [%s]\n", + error->message); + g_error_free (error); + } + + g_object_unref (info); + g_object_unref (ctx); +} + +static void +popup_menu_show_layout (GtkMenuItem *menuitem, + GsdKeyboardManager *manager) +{ + XklState *xkl_state; + char *command; + + xkl_state = xkl_engine_get_current_state (manager->priv->xkl_engine); + if (xkl_state->group < 0) + return; + + command = g_strdup_printf ("gkbd-keyboard-display -g %d", xkl_state->group + 1); + g_spawn_command_line_async (command, NULL); + g_free (command); +} + +static void +popup_menu_set_group (GtkMenuItem * item, gpointer param) +{ + gint group_number = GPOINTER_TO_INT (param); + XklEngine *engine = gkbd_status_get_xkl_engine (); + XklState st; + Window cur; + + st.group = group_number; + xkl_engine_allow_one_switch_to_secondary_group (engine); + cur = xkl_engine_get_current_window (engine); + if (cur != (Window) NULL) { + g_debug ("Enforcing the state %d for window %lx\n", + st.group, cur); + xkl_engine_save_state (engine, + xkl_engine_get_current_window + (engine), &st); +/* XSetInputFocus( GDK_DISPLAY(), cur, RevertToNone, CurrentTime );*/ + } else { + g_debug ( + "??? Enforcing the state %d for unknown window\n", + st.group); + /* strange situation - bad things can happen */ + } + xkl_engine_lock_group (engine, st.group); +} + +static void +ensure_popup_menu (GsdKeyboardManager *manager) +{ + GtkMenu *popup_menu = GTK_MENU (gtk_menu_new ()); + GtkMenu *groups_menu = GTK_MENU (gtk_menu_new ()); + int i = 0; + gchar **current_name = gkbd_status_get_group_names (); + + GtkWidget *item = gtk_menu_item_new_with_mnemonic (_("_Layouts")); + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), item); + gtk_menu_item_set_submenu (GTK_MENU_ITEM (item), + GTK_WIDGET (groups_menu)); + + item = gtk_menu_item_new_with_mnemonic (_("Show _Keyboard Layout...")); + gtk_widget_show (item); + g_signal_connect (item, "activate", G_CALLBACK (popup_menu_show_layout), manager); + gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), item); + + /* translators note: + * This is the name of the gnome-control-center "region" panel */ + item = gtk_menu_item_new_with_mnemonic (_("Region and Language Settings")); + gtk_widget_show (item); + g_signal_connect (item, "activate", popup_menu_launch_capplet, NULL); + gtk_menu_shell_append (GTK_MENU_SHELL (popup_menu), item); + + for (i = 0; *current_name; i++, current_name++) { + item = gtk_menu_item_new_with_label (*current_name); + gtk_widget_show (item); + gtk_menu_shell_append (GTK_MENU_SHELL (groups_menu), item); + g_signal_connect (item, "activate", + G_CALLBACK (popup_menu_set_group), + GINT_TO_POINTER (i)); + } + + if (manager->priv->popup_menu != NULL) + gtk_widget_destroy (GTK_WIDGET (manager->priv->popup_menu)); + manager->priv->popup_menu = popup_menu; +} + +static void +status_icon_popup_menu_cb (GtkStatusIcon *icon, + guint button, + guint time, + GsdKeyboardManager *manager) +{ + ensure_popup_menu (manager); + gtk_menu_popup (manager->priv->popup_menu, NULL, NULL, + gtk_status_icon_position_menu, + (gpointer) icon, button, time); +} + +static void +show_hide_icon (GsdKeyboardManager *manager) +{ + if (g_strv_length (manager->priv->current_kbd_config.layouts_variants) > 1) { + if (manager->priv->icon == NULL) { + g_debug ("Creating keyboard status icon\n"); + manager->priv->icon = gkbd_status_new (); + g_signal_connect (manager->priv->icon, "popup-menu", + G_CALLBACK + (status_icon_popup_menu_cb), + manager); + + } + } else { + if (manager->priv->icon != NULL) { + g_debug ("Destroying icon\n"); + g_object_unref (manager->priv->icon); + manager->priv->icon = NULL; + } + } +} + +static gboolean +try_activating_xkb_config_if_new (GsdKeyboardManager *manager, + GkbdKeyboardConfig *current_sys_kbd_config) +{ + /* Activate - only if different! */ + if (!gkbd_keyboard_config_equals + (&manager->priv->current_kbd_config, current_sys_kbd_config)) { + if (gkbd_keyboard_config_activate (&manager->priv->current_kbd_config)) { + return FALSE; + } + } + return TRUE; +} + +static gboolean +filter_xkb_config (GsdKeyboardManager *manager) +{ + XklConfigItem *item; + gchar *lname; + gchar *vname; + gchar **lv; + gboolean any_change = FALSE; + + g_debug ("Filtering configuration against the registry\n"); + if (!ensure_manager_xkl_registry (manager)) + return FALSE; + + lv = manager->priv->current_kbd_config.layouts_variants; + item = xkl_config_item_new (); + while (*lv) { + g_debug ("Checking [%s]\n", *lv); + if (gkbd_keyboard_config_split_items (*lv, &lname, &vname)) { + gboolean should_be_dropped = FALSE; + g_snprintf (item->name, sizeof (item->name), "%s", + lname); + if (!xkl_config_registry_find_layout + (manager->priv->xkl_registry, item)) { + g_debug ("Bad layout [%s]\n", + lname); + should_be_dropped = TRUE; + } else if (vname) { + g_snprintf (item->name, + sizeof (item->name), "%s", + vname); + if (!xkl_config_registry_find_variant + (manager->priv->xkl_registry, lname, item)) { + g_debug ( + "Bad variant [%s(%s)]\n", + lname, vname); + should_be_dropped = TRUE; + } + } + if (should_be_dropped) { + gkbd_strv_behead (lv); + any_change = TRUE; + continue; + } + } + lv++; + } + g_object_unref (item); + return any_change; +} + +static void +gsd_keyboard_xkb_init (GsdKeyboardManager *manager) +{ + Display *dpy = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); + + manager->priv->xkl_engine = xkl_engine_get_instance (dpy); + if (!manager->priv->xkl_engine) + return; + + gkbd_desktop_config_init (&manager->priv->current_config, manager->priv->xkl_engine); + gkbd_keyboard_config_init (&manager->priv->current_kbd_config, + manager->priv->xkl_engine); + xkl_engine_backup_names_prop (manager->priv->xkl_engine); + gkbd_keyboard_config_init (&manager->priv->initial_sys_kbd_config, manager->priv->xkl_engine); + gkbd_keyboard_config_load_from_x_initial (&manager->priv->initial_sys_kbd_config, + NULL); + + gnome_settings_profile_start ("xkl_engine_start_listen"); + xkl_engine_start_listen (manager->priv->xkl_engine, + XKLL_MANAGE_LAYOUTS | + XKLL_MANAGE_WINDOW_STATES); + gnome_settings_profile_end ("xkl_engine_start_listen"); + + gnome_settings_profile_start ("apply_desktop_settings"); + apply_desktop_settings (manager); + gnome_settings_profile_end ("apply_desktop_settings"); + gnome_settings_profile_start ("apply_xkb_settings"); + apply_xkb_settings (manager); + gnome_settings_profile_end ("apply_xkb_settings"); + + gnome_settings_profile_end (NULL); +} + static gboolean xkb_set_keyboard_autorepeat_rate (guint delay, guint interval) { @@ -118,11 +488,12 @@ &error_base, &major, &minor); + return have_xkb; } static void -xkb_init (GsdKeyboardManager *manager) +numlock_xkb_init (GsdKeyboardManager *manager) { Display *dpy; @@ -161,8 +532,15 @@ XkbEvent *xkbev = (XkbEvent *) xev; GsdKeyboardManager *manager = (GsdKeyboardManager *) user_data; - if (xev->type != manager->priv->xkb_event_base || - xkbev->any.xkb_type != XkbStateNotify) + /* libxklavier's events first */ + if (manager->priv->xkl_engine != NULL) + xkl_engine_filter_events (manager->priv->xkl_engine, xev); + + /* Then XKB specific events */ + if (xev->type != manager->priv->xkb_event_base) + return GDK_FILTER_CONTINUE; + + if (xkbev->any.xkb_type != XkbStateNotify) return GDK_FILTER_CONTINUE; if (xkbev->state.changed & XkbModifierLockMask) { @@ -200,262 +578,6 @@ } static void -free_xkb_component_names (XkbComponentNamesRec *p) -{ - g_return_if_fail (p != NULL); - - free (p->keymap); - free (p->keycodes); - free (p->types); - free (p->compat); - free (p->symbols); - free (p->geometry); - - g_free (p); -} - -static void -upload_xkb_description (const gchar *rules_file_path, - XkbRF_VarDefsRec *var_defs, - XkbComponentNamesRec *comp_names) -{ - Display *display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()); - XkbDescRec *xkb_desc; - gchar *rules_file; - - /* Upload it to the X server using the same method as setxkbmap */ - xkb_desc = XkbGetKeyboardByName (display, - XkbUseCoreKbd, - comp_names, - XkbGBN_AllComponentsMask, - XkbGBN_AllComponentsMask & - (~XkbGBN_GeometryMask), True); - if (!xkb_desc) { - g_warning ("Couldn't upload new XKB keyboard description"); - return; - } - - XkbFreeKeyboard (xkb_desc, 0, True); - - rules_file = g_path_get_basename (rules_file_path); - - if (!XkbRF_SetNamesProp (display, rules_file, var_defs)) - g_warning ("Couldn't update the XKB root window property"); - - g_free (rules_file); -} - -static gchar * -language_code_from_locale (const gchar *locale) -{ - if (!locale || !locale[0] || !locale[1]) - return NULL; - - if (!locale[2] || locale[2] == '_' || locale[2] == '.') - return g_strndup (locale, 2); - - if (!locale[3] || locale[3] == '_' || locale[3] == '.') - return g_strndup (locale, 3); - - return NULL; -} - -static gchar * -build_xkb_group_string (const gchar *user, - const gchar *locale, - const gchar *latin) -{ - gchar *string; - gsize length = 0; - guint commas = 2; - - if (latin) - length += strlen (latin); - else - commas -= 1; - - if (locale) - length += strlen (locale); - else - commas -= 1; - - length += strlen (user) + commas + 1; - - string = malloc (length); - - if (locale && latin) - sprintf (string, "%s,%s,%s", user, locale, latin); - else if (locale) - sprintf (string, "%s,%s", user, locale); - else if (latin) - sprintf (string, "%s,%s", user, latin); - else - sprintf (string, "%s", user); - - return string; -} - -static gboolean -layout_equal (const gchar *layout_a, - const gchar *variant_a, - const gchar *layout_b, - const gchar *variant_b) -{ - return !g_strcmp0 (layout_a, layout_b) && !g_strcmp0 (variant_a, variant_b); -} - -static void -replace_layout_and_variant (GsdKeyboardManager *manager, - XkbRF_VarDefsRec *xkb_var_defs, - const gchar *layout, - const gchar *variant) -{ - /* Toolkits need to know about both a latin layout to handle - * accelerators which are usually defined like Ctrl+C and a - * layout with the symbols for the language used in UI strings - * to handle mnemonics like Alt+Ф, so we try to find and add - * them in XKB group slots after the layout which the user - * actually intends to type with. */ - const gchar *latin_layout = "us"; - const gchar *latin_variant = ""; - const gchar *locale_layout = NULL; - const gchar *locale_variant = NULL; - const gchar *locale; - gchar *language; - - locale = setlocale (LC_MESSAGES, NULL); - /* If LANG is empty, default to en_US */ - if (!locale) - language = g_strdup (DEFAULT_LANGUAGE); - else - language = language_code_from_locale (locale); - - if (!language) - language = language_code_from_locale (DEFAULT_LANGUAGE); - - gnome_xkb_info_get_layout_info_for_language (manager->priv->xkb_info, - language, - NULL, - NULL, - NULL, - &locale_layout, - &locale_variant); - g_free (language); - - /* We want to minimize the number of XKB groups if we have - * duplicated layout+variant pairs. - * - * Also, if a layout doesn't have a variant we still have to - * include it in the variants string because the number of - * variants must agree with the number of layouts. For - * instance: - * - * layouts: "us,ru,us" - * variants: "dvorak,," - */ - if (layout_equal (latin_layout, latin_variant, locale_layout, locale_variant) || - layout_equal (latin_layout, latin_variant, layout, variant)) { - latin_layout = NULL; - latin_variant = NULL; - } - - if (layout_equal (locale_layout, locale_variant, layout, variant)) { - locale_layout = NULL; - locale_variant = NULL; - } - - free (xkb_var_defs->layout); - xkb_var_defs->layout = build_xkb_group_string (layout, locale_layout, latin_layout); - - free (xkb_var_defs->variant); - xkb_var_defs->variant = build_xkb_group_string (variant, locale_variant, latin_variant); -} - -static void -apply_xkb_layout (GsdKeyboardManager *manager, - const gchar *layout, - const gchar *variant) -{ - XkbRF_RulesRec *xkb_rules; - XkbRF_VarDefsRec *xkb_var_defs; - gchar *rules_file_path; - - gnome_xkb_info_get_var_defs (&rules_file_path, &xkb_var_defs); - - replace_layout_and_variant (manager, xkb_var_defs, layout, variant); - - gdk_error_trap_push (); - - xkb_rules = XkbRF_Load (rules_file_path, NULL, True, True); - if (xkb_rules) { - XkbComponentNamesRec *xkb_comp_names; - xkb_comp_names = g_new0 (XkbComponentNamesRec, 1); - - XkbRF_GetComponents (xkb_rules, xkb_var_defs, xkb_comp_names); - upload_xkb_description (rules_file_path, xkb_var_defs, xkb_comp_names); - - free_xkb_component_names (xkb_comp_names); - XkbRF_Free (xkb_rules, True); - } else { - g_warning ("Couldn't load XKB rules"); - } - - if (gdk_error_trap_pop ()) - g_warning ("Error loading XKB rules"); - - gnome_xkb_info_free_var_defs (xkb_var_defs); - g_free (rules_file_path); -} - -static void -apply_input_sources_settings (GSettings *settings, - gchar *key, - GsdKeyboardManager *manager) -{ - GsdKeyboardManagerPrivate *priv = manager->priv; - GVariant *sources; - guint current; - const gchar *type = NULL; - const gchar *id = NULL; - const gchar *layout = NULL; - const gchar *variant = NULL; - - sources = g_settings_get_value (priv->input_sources_settings, KEY_INPUT_SOURCES); - current = g_settings_get_uint (priv->input_sources_settings, KEY_CURRENT_INPUT_SOURCE); - - if (g_variant_n_children (sources) < 1) { - g_warning ("No input source configured, resetting"); - g_settings_reset (priv->input_sources_settings, KEY_INPUT_SOURCES); - goto exit; - } - if (current >= g_variant_n_children (sources)) { - g_settings_set_uint (priv->input_sources_settings, - KEY_CURRENT_INPUT_SOURCE, - g_variant_n_children (sources) - 1); - goto exit; - } - - g_variant_get_child (sources, current, "(&s&s)", &type, &id); - - if (!g_str_equal (type, INPUT_SOURCE_TYPE_XKB)) { - g_warning ("Unknown input source type '%s'", type); - goto exit; - } - - gnome_xkb_info_get_layout_info (priv->xkb_info, id, NULL, NULL, &layout, &variant); - - if (!layout || !layout[0]) { - g_warning ("Couldn't find XKB input source '%s'", id); - goto exit; - } - - apply_xkb_layout (manager, layout, variant); - - exit: - g_variant_unref (sources); -} - -static void apply_settings (GSettings *settings, const char *key, GsdKeyboardManager *manager) @@ -523,6 +645,12 @@ gdk_error_trap_pop_ignored (); } +void +gsd_keyboard_manager_apply_settings (GsdKeyboardManager *manager) +{ + apply_settings (manager->priv->settings, NULL, manager); +} + static void device_added_cb (GdkDeviceManager *device_manager, GdkDevice *device, @@ -532,8 +660,8 @@ source = gdk_device_get_source (device); if (source == GDK_SOURCE_KEYBOARD) { - apply_settings (manager->priv->settings, NULL, manager); - apply_input_sources_settings (manager->priv->input_sources_settings, NULL, manager); + apply_desktop_settings (manager); + apply_xkb_settings (manager); run_custom_command (device, COMMAND_DEVICE_ADDED); } } @@ -573,23 +701,23 @@ g_debug ("Starting keyboard manager"); manager->priv->settings = g_settings_new (GSD_KEYBOARD_DIR); + manager->priv->settings_desktop = g_settings_new (GKBD_DESKTOP_SCHEMA); + manager->priv->settings_keyboard = g_settings_new (GKBD_KEYBOARD_SCHEMA); - xkb_init (manager); + gsd_keyboard_xkb_init (manager); + numlock_xkb_init (manager); set_devicepresence_handler (manager); - manager->priv->input_sources_settings = g_settings_new (GNOME_DESKTOP_INPUT_SOURCES_DIR); - - manager->priv->xkb_info = gnome_xkb_info_new (); - /* apply current settings before we install the callback */ - apply_settings (manager->priv->settings, NULL, manager); - apply_input_sources_settings (manager->priv->input_sources_settings, NULL, manager); + gsd_keyboard_manager_apply_settings (manager); g_signal_connect (G_OBJECT (manager->priv->settings), "changed", G_CALLBACK (apply_settings), manager); - g_signal_connect (G_OBJECT (manager->priv->input_sources_settings), "changed", - G_CALLBACK (apply_input_sources_settings), manager); + g_signal_connect (manager->priv->settings_desktop, "changed", + (GCallback) desktop_settings_changed, manager); + g_signal_connect (manager->priv->settings_keyboard, "changed", + (GCallback) xkb_settings_changed, manager); install_xkb_filter (manager); @@ -625,9 +753,18 @@ g_debug ("Stopping keyboard manager"); - g_clear_object (&p->settings); - g_clear_object (&p->input_sources_settings); - g_clear_object (&p->xkb_info); + if (p->settings != NULL) { + g_object_unref (p->settings); + p->settings = NULL; + } + if (p->settings_desktop != NULL) { + g_object_unref (p->settings_desktop); + p->settings_desktop = NULL; + } + if (p->settings_keyboard != NULL) { + g_object_unref (p->settings_keyboard); + p->settings_keyboard = NULL; + } if (p->device_manager != NULL) { g_signal_handler_disconnect (p->device_manager, p->device_added_id); @@ -635,7 +772,24 @@ p->device_manager = NULL; } + if (p->popup_menu != NULL) { + gtk_widget_destroy (GTK_WIDGET (p->popup_menu)); + p->popup_menu = NULL; + } + remove_xkb_filter (manager); + + if (p->xkl_registry != NULL) { + g_object_unref (p->xkl_registry); + p->xkl_registry = NULL; + } + + if (p->xkl_engine != NULL) { + xkl_engine_stop_listen (p->xkl_engine, + XKLL_MANAGE_LAYOUTS | XKLL_MANAGE_WINDOW_STATES); + g_object_unref (p->xkl_engine); + p->xkl_engine = NULL; + } } static void Index: b/plugins/keyboard/gsd-keyboard-manager.h =================================================================== --- a/plugins/keyboard/gsd-keyboard-manager.h +++ b/plugins/keyboard/gsd-keyboard-manager.h @@ -51,6 +51,7 @@ gboolean gsd_keyboard_manager_start (GsdKeyboardManager *manager, GError **error); void gsd_keyboard_manager_stop (GsdKeyboardManager *manager); +void gsd_keyboard_manager_apply_settings (GsdKeyboardManager *manager); G_END_DECLS Index: b/plugins/keyboard/Makefile.am =================================================================== --- a/plugins/keyboard/Makefile.am +++ b/plugins/keyboard/Makefile.am @@ -20,6 +20,8 @@ gsd-keyboard-plugin.c \ gsd-keyboard-manager.h \ gsd-keyboard-manager.c \ + delayed-dialog.h \ + delayed-dialog.c \ $(NULL) libkeyboard_la_CPPFLAGS = \ @@ -52,8 +54,8 @@ test-keyboard.c \ gsd-keyboard-manager.h \ gsd-keyboard-manager.c \ - $(NULL) - + delayed-dialog.h \ + delayed-dialog.c test_keyboard_CFLAGS = $(libkeyboard_la_CFLAGS) test_keyboard_CPPFLAGS = $(libkeyboard_la_CPPFLAGS) test_keyboard_LDADD = $(libkeyboard_la_LIBADD) $(top_builddir)/gnome-settings-daemon/libgsd.la debian/patches/ubuntu-lid-close-suspend.patch0000664000000000000000000001462412321122275016516 0ustar From 59d0751fd18a8e75cb15ad80df85975e71324016 Mon Sep 17 00:00:00 2001 From: Tim Lunn Date: Sun, 14 Jul 2013 10:30:08 +1000 Subject: [PATCH] Revert "Remove unused settings" and add a 'handle-lid-switch' inhibitor based on lid-close-*-action settings. This reverts commit 58cb4eee64bbd8ca43111b1f80fdaacde8ad5f12. --- ...settings-daemon.plugins.power.gschema.xml.in.in | 22 ++++++++++++++++++++++ plugins/power/gsd-power-manager.c | 10 ++++++++++ 2 files changed, 32 insertions(+) --- a/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in +++ b/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in @@ -61,6 +61,28 @@ Power button action The action to take when the system power button is pressed. + + + 'suspend' + Laptop lid close action on battery + The action to take when the laptop lid is closed and the laptop is on battery power. + + + 'suspend' + Laptop lid close action when on AC + The action to take when the laptop lid is closed and the laptop is on AC power. + + + false + Laptop lid, when closed, will suspend even if there is an external monitor plugged in + With no external monitors plugged in, closing a laptop's lid + will suspend the machine (as set by the lid-close-battery-action and + lid-close-ac-action keys). By default, however, closing the lid when + an external monitor is present will not suspend the machine, so that one can keep + working on that monitor (e.g. for docking stations or media viewers). Set this + key to False to keep the default behavior, or to True to suspend the laptop whenever the + lid is closed and regardless of external monitors. + 'hibernate' Battery critical low action --- a/plugins/power/gsd-power-manager.c +++ b/plugins/power/gsd-power-manager.c @@ -207,6 +207,7 @@ GDBusProxy *logind_proxy; gint inhibit_lid_switch_fd; gboolean inhibit_lid_switch_taken; + gboolean inhibit_lid_switch_action; gint inhibit_suspend_fd; gboolean inhibit_suspend_taken; guint inhibit_lid_switch_timer_id; @@ -240,6 +241,7 @@ static gdouble engine_get_percentage (GsdPowerManager *manager); static void do_power_action_type (GsdPowerManager *manager, GsdPowerActionType action_type); static void do_lid_closed_action (GsdPowerManager *manager); +static void inhibit_lid_switch (GsdPowerManager *manager); static void uninhibit_lid_switch (GsdPowerManager *manager); static void main_battery_or_ups_low_changed (GsdPowerManager *manager, gboolean is_low); static gboolean idle_is_session_inhibited (GsdPowerManager *manager, guint mask, gboolean *is_inhibited); @@ -2141,6 +2143,9 @@ { GsdXrandrBootBehaviour val; + if (manager->priv->inhibit_lid_switch_action) + return FALSE; + if (!external_monitor_is_connected (manager->priv->rr_screen)) return TRUE; @@ -2194,6 +2199,26 @@ } static void +setup_lid_closed_action (GsdPowerManager *manager) +{ + GsdPowerActionType policy; + + if (up_client_get_on_battery (manager->priv->up_client)) { + policy = g_settings_get_enum (manager->priv->settings, "lid-close-battery-action"); + } else { + policy = g_settings_get_enum (manager->priv->settings, "lid-close-ac-action"); + } + + if (policy == GSD_POWER_ACTION_NOTHING) { + inhibit_lid_switch (manager); + manager->priv->inhibit_lid_switch_action = TRUE; + } else { + uninhibit_lid_switch (manager); + manager->priv->inhibit_lid_switch_action = FALSE; + } +} + +static void do_lid_open_action (GsdPowerManager *manager) { /* play a sound, using sounds from the naming spec */ @@ -2259,6 +2284,10 @@ lock_screensaver (manager); } } + else { + if (manager->priv->inhibit_lid_switch_action) + lock_screensaver (manager); + } } static void @@ -2273,6 +2302,8 @@ main_battery_or_ups_low_changed (manager, FALSE); } + setup_lid_closed_action (manager); + /* same state */ tmp = up_client_get_lid_is_closed (manager->priv->up_client); if (manager->priv->lid_is_closed == tmp) @@ -3130,6 +3161,10 @@ idle_configure (manager); return; } + if (g_str_has_prefix (key, "lid-close")) { + setup_lid_closed_action (manager); + return; + } } static void @@ -3539,6 +3574,7 @@ /* don't blank inside a VM */ manager->priv->is_virtual_machine = gsd_power_is_hardware_a_vm (); + setup_lid_closed_action (manager); gnome_settings_profile_end (NULL); return TRUE; } @@ -3586,6 +3622,7 @@ close (manager->priv->inhibit_lid_switch_fd); manager->priv->inhibit_lid_switch_fd = -1; manager->priv->inhibit_lid_switch_taken = FALSE; + manager->priv->inhibit_lid_switch_action = FALSE; } if (manager->priv->inhibit_suspend_fd != -1) { close (manager->priv->inhibit_suspend_fd); @@ -3622,6 +3659,7 @@ manager->priv = GSD_POWER_MANAGER_GET_PRIVATE (manager); manager->priv->inhibit_lid_switch_fd = -1; manager->priv->inhibit_suspend_fd = -1; + manager->priv->inhibit_lid_switch_action = FALSE; manager->priv->screensaver_cancellable = g_cancellable_new (); manager->priv->bus_cancellable = g_cancellable_new (); } debian/patches/62_unity_disable_gsd_printer.patch0000664000000000000000000000235212321122275017401 0ustar Description: Disable gsd-printer plugin under Unity. We are still using system-config-printer for this, so no need to start another service for this. Forwarded: No, Ubuntu specific Author: Tim Lunn Date: Mon, 3 Jun 2013 09:46:56 +1000 Subject: [PATCH] Disable print notification plugin on unity. --- gnome-settings-daemon/gnome-settings-plugin-info.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) --- a/gnome-settings-daemon/gnome-settings-plugin-info.c +++ b/gnome-settings-daemon/gnome-settings-plugin-info.c @@ -381,6 +381,20 @@ goto out; } + if (g_strcmp0 (g_getenv ("XDG_CURRENT_DESKTOP"), "Unity") == 0 + && g_strcmp0 (info->priv->name, "Print-notifications") == 0) { + + g_warning ("Disable print plugin under Unity"); + + g_object_unref (G_OBJECT (info->priv->module)); + info->priv->module = NULL; + + /* Mark plugin as unavailable */ + info->priv->available = FALSE; + + goto out; + } + info->priv->plugin = GNOME_SETTINGS_PLUGIN (gnome_settings_module_new_object (GNOME_SETTINGS_MODULE (info->priv->module))); g_type_module_unuse (info->priv->module); debian/patches/05_disable_corner_tapping.patch0000664000000000000000000000200312321122275016631 0ustar Description: Disable corner tapping when disabling tap to click Bug: https://bugzilla.gnome.org/show_bug.cgi?id=607474 Bug-Ubuntu: https://bugs.launchpad.net/bugs/509724 Index: gnome-settings-daemon-3.6.1/plugins/mouse/gsd-mouse-manager.c =================================================================== --- gnome-settings-daemon-3.6.1.orig/plugins/mouse/gsd-mouse-manager.c 2012-10-05 13:56:44.000000000 +0200 +++ gnome-settings-daemon-3.6.1/plugins/mouse/gsd-mouse-manager.c 2012-10-26 10:20:07.735005058 +0200 @@ -650,6 +650,10 @@ &bytes_after, &data); if (rc == Success && type == XA_INTEGER && format == 8 && nitems >= 7) { + /* Set MR mapping for corner tapping on the right side*/ + data[0] = (state) ? 2 : 0; + data[1] = (state) ? 3 : 0; + /* Set RLM mapping for 1/2/3 fingers*/ data[4] = (state) ? ((left_handed) ? 3 : 1) : 0; data[5] = (state) ? ((left_handed) ? 1 : 3) : 0; debian/patches/ubuntu-fix-desktop-file.patch0000664000000000000000000000147512321122275016336 0ustar Description: Add Unity to autostart desktop file. . gnome-settings-daemon (3.8.1-0ubuntu1~raring2) raring; urgency=low . * New upstream release * debian/patches: - 16_use_synchronous_notifications.patch, refreshed - fix_suspend_on_lid_closed.patch, workaround for now. - fix_media_keys_on_unity.patch, we need to watch for unity and fire up the legacy keygrabber. * Update desktop file to also autostart in Unity Author: Tim Lunn --- a/data/gnome-settings-daemon.desktop.in.in +++ b/data/gnome-settings-daemon.desktop.in.in @@ -2,7 +2,7 @@ Type=Application _Name=GNOME Settings Daemon Exec=@libexecdir@/gnome-settings-daemon-localeexec -OnlyShowIn=GNOME; +OnlyShowIn=GNOME;Unity; NoDisplay=true X-GNOME-Autostart-Phase=Initialization X-GNOME-Autostart-Notify=true debian/patches/90_set_gmenus_xsettings.patch0000664000000000000000000001204212321122275016425 0ustar Index: gnome-settings-daemon-3.6.3/plugins/xsettings/gsd-xsettings-manager.c =================================================================== --- gnome-settings-daemon-3.6.3.orig/plugins/xsettings/gsd-xsettings-manager.c 2012-11-07 10:08:12.000000000 +0100 +++ gnome-settings-daemon-3.6.3/plugins/xsettings/gsd-xsettings-manager.c 2012-11-20 13:26:46.306775857 +0100 @@ -242,7 +242,9 @@ GsdXSettingsGtk *gtk; guint shell_name_watch_id; + guint unity_name_watch_id; gboolean have_shell; + gboolean have_unity; guint notify_idle_id; }; @@ -703,17 +705,18 @@ } static void -notify_have_shell (GnomeXSettingsManager *manager, - gboolean have_shell) +notify_have_shell (GnomeXSettingsManager *manager) { int i; gnome_settings_profile_start (NULL); - if (manager->priv->have_shell == have_shell) - return; - manager->priv->have_shell = have_shell; for (i = 0; manager->priv->managers [i]; i++) { - xsettings_manager_set_int (manager->priv->managers [i], "Gtk/ShellShowsAppMenu", have_shell); + /* Shell is showing appmenu if either GNOME Shell or Unity is running. */ + xsettings_manager_set_int (manager->priv->managers [i], "Gtk/ShellShowsAppMenu", + manager->priv->have_shell || manager->priv->have_unity); + /* Shell is showing menubar *only* if Unity runs */ + xsettings_manager_set_int (manager->priv->managers [i], "Gtk/ShellShowsMenubar", + manager->priv->have_unity); } queue_notify (manager); gnome_settings_profile_end (NULL); @@ -725,7 +728,10 @@ const gchar *name_owner, gpointer user_data) { - notify_have_shell (user_data, TRUE); + GnomeXSettingsManager *manager = user_data; + + manager->priv->have_shell = TRUE; + notify_have_shell (manager); } static void @@ -733,7 +739,33 @@ const gchar *name, gpointer user_data) { - notify_have_shell (user_data, FALSE); + GnomeXSettingsManager *manager = user_data; + + manager->priv->have_shell = FALSE; + notify_have_shell (manager); +} + +static void +on_unity_appeared (GDBusConnection *connection, + const gchar *name, + const gchar *name_owner, + gpointer user_data) +{ + GnomeXSettingsManager *manager = user_data; + + manager->priv->have_unity = TRUE; + notify_have_shell (manager); +} + +static void +on_unity_disappeared (GDBusConnection *connection, + const gchar *name, + gpointer user_data) +{ + GnomeXSettingsManager *manager = user_data; + + manager->priv->have_unity = FALSE; + notify_have_shell (manager); } static void @@ -856,7 +888,7 @@ static void start_shell_monitor (GnomeXSettingsManager *manager) { - notify_have_shell (manager, TRUE); + notify_have_shell (manager); manager->priv->have_shell = TRUE; manager->priv->shell_name_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION, "org.gnome.Shell", @@ -867,6 +899,20 @@ NULL); } +static void +start_unity_monitor (GnomeXSettingsManager *manager) +{ + notify_have_shell (manager); + manager->priv->have_unity = TRUE; + manager->priv->unity_name_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION, + "com.canonical.AppMenu.Registrar", + 0, + on_unity_appeared, + on_unity_disappeared, + manager, + NULL); +} + gboolean gnome_xsettings_manager_start (GnomeXSettingsManager *manager, GError **error) @@ -933,6 +979,7 @@ start_fontconfig_monitor (manager); start_shell_monitor (manager); + start_unity_monitor (manager); for (i = 0; manager->priv->managers [i]; i++) xsettings_manager_set_string (manager->priv->managers [i], @@ -978,6 +1025,9 @@ if (manager->priv->shell_name_watch_id > 0) g_bus_unwatch_name (manager->priv->shell_name_watch_id); + if (manager->priv->unity_name_watch_id > 0) + g_bus_unwatch_name (manager->priv->unity_name_watch_id); + if (p->settings != NULL) { g_hash_table_destroy (p->settings); p->settings = NULL; debian/patches/fix_input_switching_on_unity.patch0000664000000000000000000001350212321122275017646 0ustar From a49d454a019334f05dc7f6ba9a96299a178ddd19 Mon Sep 17 00:00:00 2001 From: Tim Lunn Date: Sun, 1 Sep 2013 09:34:17 +1000 Subject: [PATCH] Revert "Revert "media-keys: Add key bindings to switch input sources"" This reverts commit cc45fec342713745f391533a202976e97670f9e5. Patched to use the new g_settings keys for input source switching --- plugins/media-keys/gsd-media-keys-manager.c | 59 ++++++++++++++++++++++++++++- plugins/media-keys/shortcuts-list.h | 6 +++ 2 files changed, 64 insertions(+), 1 deletion(-) Index: b/plugins/media-keys/gsd-media-keys-manager.c =================================================================== --- a/plugins/media-keys/gsd-media-keys-manager.c +++ b/plugins/media-keys/gsd-media-keys-manager.c @@ -114,6 +114,10 @@ #define VOLUME_STEP 6 /* percents for one volume button press */ #define MAX_VOLUME 65536.0 +#define GNOME_DESKTOP_INPUT_SOURCES_DIR "org.gnome.desktop.input-sources" +#define KEY_CURRENT_INPUT_SOURCE "current" +#define KEY_INPUT_SOURCES "sources" + #define SYSTEMD_DBUS_NAME "org.freedesktop.login1" #define SYSTEMD_DBUS_PATH "/org/freedesktop/login1" #define SYSTEMD_DBUS_INTERFACE "org.freedesktop.login1.Manager" @@ -157,6 +161,7 @@ #endif /* HAVE_GUDEV */ GSettings *settings; + GSettings *input_settings; GHashTable *custom_settings; GPtrArray *keys; @@ -530,7 +535,9 @@ get_key_string (GsdMediaKeysManager *manager, MediaKey *key) { - if (key->settings_key != NULL) + if (key->settings_key == "switch-input-source" || key->settings_key == "switch-input-source-backward") + return g_settings_get_strv (manager->priv->input_settings, key->settings_key)[0]; + else if (key->settings_key != NULL) return g_settings_get_string (manager->priv->settings, key->settings_key); else if (key->hard_coded != NULL) return g_strdup (key->hard_coded); @@ -2111,6 +2118,44 @@ * are not used in this context */ break; } + +} + +static void +do_switch_input_source_action (GsdMediaKeysManager *manager, + MediaKeyType type) +{ + GSettings *settings; + GVariant *sources; + gint i, n; + + if (!manager->priv->have_legacy_keygrabber) + return; + + settings = g_settings_new (GNOME_DESKTOP_INPUT_SOURCES_DIR); + sources = g_settings_get_value (settings, KEY_INPUT_SOURCES); + + n = g_variant_n_children (sources); + if (n < 2) + goto out; + + i = g_settings_get_uint (settings, KEY_CURRENT_INPUT_SOURCE); + + if (type == SWITCH_INPUT_SOURCE_KEY) + i += 1; + else + i -= 1; + + if (i < 0) + i = n - 1; + else if (i >= n) + i = 0; + + g_settings_set_uint (settings, KEY_CURRENT_INPUT_SOURCE, i); + + out: + g_variant_unref (sources); + g_object_unref (settings); } static void @@ -2451,6 +2496,10 @@ case BATTERY_KEY: do_battery_action (manager); break; + case SWITCH_INPUT_SOURCE_KEY: + case SWITCH_INPUT_SOURCE_BACKWARD_KEY: + do_switch_input_source_action (manager, type); + break; /* Note, no default so compiler catches missing keys */ case CUSTOM_KEY: g_assert_not_reached (); @@ -2773,6 +2822,12 @@ g_signal_connect (G_OBJECT (manager->priv->settings), "changed::custom-keybindings", G_CALLBACK (gsettings_custom_changed_cb), manager); + manager->priv->input_settings = g_settings_new (INPUT_SETTINGS_BINDING_DIR); + g_signal_connect (G_OBJECT (manager->priv->input_settings), "changed", + G_CALLBACK (gsettings_changed_cb), manager); + g_signal_connect (G_OBJECT (manager->priv->input_settings), "changed::custom-keybindings", + G_CALLBACK (gsettings_custom_changed_cb), manager); + manager->priv->custom_settings = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref); @@ -2903,6 +2958,7 @@ g_clear_object (&priv->logind_proxy); g_clear_object (&priv->settings); + g_clear_object (&priv->input_settings); g_clear_object (&priv->power_settings); g_clear_object (&priv->power_proxy); g_clear_object (&priv->power_screen_proxy); Index: b/plugins/media-keys/shortcuts-list.h =================================================================== --- a/plugins/media-keys/shortcuts-list.h +++ b/plugins/media-keys/shortcuts-list.h @@ -25,6 +25,7 @@ #include "gsd-keygrab.h" #define SETTINGS_BINDING_DIR "org.gnome.settings-daemon.plugins.media-keys" +#define INPUT_SETTINGS_BINDING_DIR "org.gnome.desktop.wm.keybindings" typedef enum { TOUCHPAD_KEY, @@ -83,6 +84,8 @@ KEYBOARD_BRIGHTNESS_DOWN_KEY, KEYBOARD_BRIGHTNESS_TOGGLE_KEY, BATTERY_KEY, + SWITCH_INPUT_SOURCE_KEY, + SWITCH_INPUT_SOURCE_BACKWARD_KEY, CUSTOM_KEY } MediaKeyType; @@ -160,6 +163,9 @@ { KEYBOARD_BRIGHTNESS_DOWN_KEY, NULL, N_("Keyboard Brightness Down"), "XF86KbdBrightnessDown", SHELL_KEYBINDING_MODE_ALL }, { KEYBOARD_BRIGHTNESS_TOGGLE_KEY, NULL, N_("Keyboard Brightness Toggle"), "XF86KbdLightOnOff", SHELL_KEYBINDING_MODE_ALL }, { BATTERY_KEY, NULL, N_("Battery Status"), "XF86Battery", GSD_KEYBINDING_MODE_LAUNCHER }, + { SWITCH_INPUT_SOURCE_KEY, "switch-input-source", NULL, NULL, SHELL_KEYBINDING_MODE_ALL }, + { SWITCH_INPUT_SOURCE_BACKWARD_KEY, "switch-input-source-backward", NULL, NULL, SHELL_KEYBINDING_MODE_ALL } + }; #undef SCREENSAVER_MODE debian/patches/48_register_client_before_idle_callbacks.patch0000664000000000000000000000747312321122275021663 0ustar Index: gnome-settings-daemon-3.6.1/gnome-settings-daemon/main.c =================================================================== --- gnome-settings-daemon-3.6.1.orig/gnome-settings-daemon/main.c 2012-10-26 10:19:49.467004174 +0200 +++ gnome-settings-daemon-3.6.1/gnome-settings-daemon/main.c 2012-10-26 10:19:49.527004177 +0200 @@ -303,28 +303,6 @@ } #endif -static void -got_session_proxy (GObject *source_object, - GAsyncResult *res, - gpointer user_data) -{ - GDBusProxy *proxy; - GError *error = NULL; - - proxy = g_dbus_proxy_new_finish (res, &error); - if (proxy == NULL) { - g_debug ("Could not connect to the Session manager: %s", error->message); - g_error_free (error); - } else { -#ifdef HAVE_IBUS - /* This will register with gnome-session after calling Setenv. */ - set_legacy_ibus_env_vars (proxy); -#else - register_with_gnome_session (proxy); -#endif - } -} - static gboolean on_term_signal_pipe_closed (GIOChannel *source, GIOCondition condition, @@ -374,16 +352,6 @@ { g_assert (bus != NULL); - g_dbus_proxy_new (bus, - G_DBUS_PROXY_FLAGS_NONE, - NULL, - GNOME_SESSION_DBUS_NAME, - GNOME_SESSION_DBUS_OBJECT, - GNOME_SESSION_DBUS_INTERFACE, - NULL, - (GAsyncReadyCallback) got_session_proxy, - NULL); - watch_for_term_signal (manager); } @@ -406,6 +374,56 @@ gtk_main_quit (); } +static gboolean +do_register_client (gpointer user_data) +{ + GDBusProxy *proxy = (GDBusProxy *) user_data; + g_assert (proxy != NULL); + + const char *startup_id = g_getenv ("DESKTOP_AUTOSTART_ID"); + g_dbus_proxy_call (proxy, + "RegisterClient", + g_variant_new ("(ss)", "gnome-settings-daemon", startup_id ? startup_id : ""), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + (GAsyncReadyCallback) on_client_registered, + manager); + + return FALSE; +} + +static void +queue_register_client (void) +{ + GDBusConnection *bus = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL); + if (!bus) + return; + + GError *error = NULL; + GDBusProxy *proxy = g_dbus_proxy_new_sync (bus, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + GNOME_SESSION_DBUS_NAME, + GNOME_SESSION_DBUS_OBJECT, + GNOME_SESSION_DBUS_INTERFACE, + NULL, + &error); + g_object_unref (bus); + + if (proxy == NULL) { + g_debug ("Could not connect to the Session manager: %s", error->message); + g_error_free (error); + return; + } + + /* Register the daemon with gnome-session */ + g_signal_connect (G_OBJECT (proxy), "g-signal", + G_CALLBACK (on_session_over), NULL); + + g_idle_add_full (G_PRIORITY_DEFAULT, do_register_client, proxy, NULL); +} + static void bus_register (void) { @@ -499,6 +517,8 @@ notify_init ("gnome-settings-daemon"); + queue_register_client (); + bus_register (); gnome_settings_profile_start ("gnome_settings_manager_new"); debian/patches/git_keybindings_add_screen_reader_toggle.patch0000664000000000000000000000213212321122275022036 0ustar From f20df9907933d24519a5e69d565cf25715349fda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alejandro=20Pi=C3=B1eiro?= Date: Tue, 13 Aug 2013 20:41:49 +0200 Subject: [PATCH] Adding shortcut for toggle screen reader https://bugzilla.gnome.org/show_bug.cgi?id=705929 --- data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in b/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in index a46888d..0af3978 100644 --- a/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in +++ b/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in @@ -146,7 +146,7 @@ <_description>Binding to show the screen magnifier - '' + '<Alt><Super>s' <_summary>Toggle screen reader <_description>Binding to start the screen reader -- 1.8.3.2 debian/patches/ubuntu-lid-open-reset-ideletime.patch0000664000000000000000000000222312321122275017742 0ustar Description: Choose a different key to inject to reset the X11 idle time on resume. Author: Stephen M. Webb Bug-Ubuntu: https://bugs.launchpad.net/unity/+bug/1227920 Forwarded: https://bugzilla.gnome.org/show_bug.cgi?id=710106 Index: gnome-settings-daemon/plugins/power/gpm-common.c =================================================================== --- gnome-settings-daemon.orig/plugins/power/gpm-common.c 2013-10-11 14:31:10.538433000 -0400 +++ gnome-settings-daemon/plugins/power/gpm-common.c 2013-10-11 15:05:49.482697946 -0400 @@ -1667,8 +1667,8 @@ static gboolean first_keycode = FALSE; if (inited == FALSE) { - keycode1 = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), GDK_KEY_Alt_L); - keycode2 = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), GDK_KEY_Alt_R); + keycode1 = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), GDK_KEY_Shift_L); + keycode2 = XKeysymToKeycode (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), GDK_KEY_Shift_R); } gdk_error_trap_push (); debian/patches/52_sync_background_to_accountsservice.patch0000664000000000000000000001063112321122275021301 0ustar Index: gnome-settings-daemon-3.6.1/plugins/background/gsd-background-manager.c =================================================================== --- gnome-settings-daemon-3.6.1.orig/plugins/background/gsd-background-manager.c 2012-05-24 11:50:44.000000000 +0200 +++ gnome-settings-daemon-3.6.1/plugins/background/gsd-background-manager.c 2012-10-26 10:19:49.567004179 +0200 @@ -412,6 +412,98 @@ setup_bg_and_draw_background (manager); } +static void +set_accountsservice_background (const gchar *background) +{ + GDBusProxy *proxy = NULL; + GDBusProxy *user = NULL; + GVariant *variant = NULL; + GError *error = NULL; + gchar *object_path = NULL; + + proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + "org.freedesktop.Accounts", + "/org/freedesktop/Accounts", + "org.freedesktop.Accounts", + NULL, + &error); + + if (proxy == NULL) { + g_warning ("Failed to contact accounts service: %s", error->message); + g_error_free (error); + return; + } + + variant = g_dbus_proxy_call_sync (proxy, + "FindUserByName", + g_variant_new ("(s)", g_get_user_name ()), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + + if (variant == NULL) { + g_warning ("Could not contact accounts service to look up '%s': %s", + g_get_user_name (), error->message); + g_error_free (error); + goto bail; + } + + g_variant_get (variant, "(o)", &object_path); + user = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_NONE, + NULL, + "org.freedesktop.Accounts", + object_path, + "org.freedesktop.Accounts.User", + NULL, + &error); + g_free (object_path); + + if (user == NULL) { + g_warning ("Could not create proxy for user '%s': %s", + g_variant_get_string (variant, NULL), error->message); + g_error_free (error); + goto bail; + } + g_variant_unref (variant); + + variant = g_dbus_proxy_call_sync (user, + "SetBackgroundFile", + g_variant_new ("(s)", background ? background : ""), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error); + + if (variant == NULL) { + g_warning ("Failed to set the background '%s': %s", background, error->message); + g_error_free (error); + goto bail; + } + +bail: + if (proxy != NULL) + g_object_unref (proxy); + if (variant != NULL) + g_variant_unref (variant); +} + +static void +picture_uri_changed (GSettings *settings, + const char *key, + GsdBackgroundManager *manager) +{ + const char *picture_uri = g_settings_get_string (settings, key); + GFile *picture_file = g_file_new_for_uri (picture_uri); + char *picture_path = g_file_get_path (picture_file); + set_accountsservice_background (picture_path); + g_free (picture_path); + g_object_unref (picture_file); +} + gboolean gsd_background_manager_start (GsdBackgroundManager *manager, GError **error) @@ -424,6 +516,8 @@ manager->priv->settings = g_settings_new ("org.gnome.desktop.background"); g_signal_connect (manager->priv->settings, "changed::draw-background", G_CALLBACK (draw_background_changed), manager); + g_signal_connect (manager->priv->settings, "changed::picture-uri", + G_CALLBACK (picture_uri_changed), manager); /* If this is set, nautilus will draw the background and is * almost definitely in our session. however, it may not be debian/patches/git_xsettings_segfaults.patch0000664000000000000000000000255712321122275016616 0ustar Subject: xsettings: unwatch dbus before destroying xsettings managers fix possible race since notify_have_shell is getting called after the managers are destroyed. https://bugzilla.gnome.org/show_bug.cgi?id=711238 --- diff --git a/plugins/xsettings/gsd-xsettings-manager.c b/plugins/xsettings/gsd-xsettings-manager.c index b0ed011..80fa388 100644 --- a/plugins/xsettings/gsd-xsettings-manager.c +++ b/plugins/xsettings/gsd-xsettings-manager.c @@ -1013,6 +1013,12 @@ g_debug ("Stopping xsettings manager"); + if (manager->priv->shell_name_watch_id > 0) + g_bus_unwatch_name (manager->priv->shell_name_watch_id); + + if (manager->priv->unity_name_watch_id > 0) + g_bus_unwatch_name (manager->priv->unity_name_watch_id); + if (p->managers != NULL) { for (i = 0; p->managers [i]; ++i) xsettings_manager_destroy (p->managers [i]); @@ -1028,12 +1034,6 @@ stop_fontconfig_monitor (manager); - if (manager->priv->shell_name_watch_id > 0) - g_bus_unwatch_name (manager->priv->shell_name_watch_id); - - if (manager->priv->unity_name_watch_id > 0) - g_bus_unwatch_name (manager->priv->unity_name_watch_id); - if (p->settings != NULL) { g_hash_table_destroy (p->settings); p->settings = NULL; debian/patches/git_touchpad_scrolling.patch0000664000000000000000000000532612321122275016371 0ustar From 36920e3a9c193badec2898a9a8b979f51d7be094 Mon Sep 17 00:00:00 2001 From: Ondrej Holy Date: Fri, 11 Oct 2013 10:52:37 +0000 Subject: mouse: fix two finger scrolling detection https://bugzilla.gnome.org/show_bug.cgi?id=702858 --- diff --git a/plugins/mouse/gsd-mouse-manager.c b/plugins/mouse/gsd-mouse-manager.c index 768a1e3..e86c709 100644 --- a/plugins/mouse/gsd-mouse-manager.c +++ b/plugins/mouse/gsd-mouse-manager.c @@ -717,19 +717,16 @@ set_scroll_method (GsdMouseManager *manager, { int rc; XDevice *xdevice; - Atom act_type, prop_edge, prop_twofinger; + Atom act_type, prop, prop_edge, prop_twofinger; int act_format; unsigned long nitems, bytes_after; unsigned char *data; + prop = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), "Synaptics Capabilities", True); prop_edge = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), "Synaptics Edge Scrolling", False); prop_twofinger = XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), "Synaptics Two-Finger Scrolling", False); - if (!prop_twofinger && method == GSD_TOUCHPAD_SCROLL_METHOD_TWO_FINGER_SCROLLING) { - method = GSD_TOUCHPAD_SCROLL_METHOD_EDGE_SCROLLING; - g_settings_set_enum (manager->priv->touchpad_settings, KEY_SCROLL_METHOD, method); - } - if (!prop_edge || !prop_twofinger) + if (!prop_edge || !prop_twofinger || !prop) return; xdevice = open_gdk_device (device); @@ -745,6 +742,20 @@ set_scroll_method (GsdMouseManager *manager, gdk_error_trap_push (); rc = XGetDeviceProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xdevice, + prop, 0, 2, False, + XA_INTEGER, &act_type, &act_format, &nitems, + &bytes_after, &data); + if (rc == Success && act_type != None) { + if (!(data[3]) && method == GSD_TOUCHPAD_SCROLL_METHOD_TWO_FINGER_SCROLLING) { + g_warning ("Two finger scroll is not supported by %s", gdk_device_get_name (device)); + method = GSD_TOUCHPAD_SCROLL_METHOD_EDGE_SCROLLING; + g_settings_set_enum (manager->priv->touchpad_settings, KEY_SCROLL_METHOD, method); + } + + XFree (data); + } + + rc = XGetDeviceProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xdevice, prop_edge, 0, 1, False, XA_INTEGER, &act_type, &act_format, &nitems, &bytes_after, &data); -- debian/patches/git_revert_gsd-keygrab.patch0000664000000000000000000000370212321122275016270 0ustar Description: Revert "common: Remove now unused key grab functions" This reverts commit b7f766de2a8f38b1e8cb76d8dfd9ff098c14c257. https://bugzilla.gnome.org/show_bug.cgi?id=693016 Last-Update: <2013-04-25> --- a/plugins/common/gsd-keygrab.h +++ b/plugins/common/gsd-keygrab.h @@ -42,12 +42,18 @@ GsdKeygrabFlags flags, GSList *screens); +void ungrab_key_unsafe (Key *key, + GSList *screens); + gboolean match_xi2_key (Key *key, XIDeviceEvent *event); gboolean key_uses_keycode (const Key *key, guint keycode); +Key * parse_key (const char *str); +void free_key (Key *key); + void grab_button (int deviceid, gboolean grab, GSList *screens); --- a/plugins/common/gsd-keygrab.c +++ b/plugins/common/gsd-keygrab.c @@ -247,6 +247,13 @@ grab_key_internal (key, TRUE, flags, screens); } +void +ungrab_key_unsafe (Key *key, + GSList *screens) +{ + grab_key_internal (key, FALSE, 0, screens); +} + static gboolean have_xkb (Display *dpy) { @@ -361,6 +368,38 @@ && key_uses_keycode (key, keycode)); } +Key * +parse_key (const char *str) +{ + Key *key; + + if (str == NULL || + *str == '\0' || + g_str_equal (str, "disabled")) { + return NULL; + } + + key = g_new0 (Key, 1); + gtk_accelerator_parse_with_keycode (str, &key->keysym, &key->keycodes, &key->state); + if (key->keysym == 0 && + key->keycodes == NULL && + key->state == 0) { + g_free (key); + return NULL; + } + + return key; +} + +void +free_key (Key *key) +{ + if (key == NULL) + return; + g_free (key->keycodes); + g_free (key); +} + static void grab_button_real (int deviceid, gboolean grab, debian/patches/45_suppress-printer-may-not-be-connected-notification.patch0000664000000000000000000000416612321122275024113 0ustar # Ubuntu: https://launchpad.net/bugs/842768 Index: gnome-settings-daemon-3.6.1/plugins/print-notifications/gsd-print-notifications-manager.c =================================================================== --- gnome-settings-daemon-3.6.1.orig/plugins/print-notifications/gsd-print-notifications-manager.c 2012-10-05 13:56:44.000000000 +0200 +++ gnome-settings-daemon-3.6.1/plugins/print-notifications/gsd-print-notifications-manager.c 2012-10-26 10:19:49.487004175 +0200 @@ -293,7 +293,7 @@ static const char * const reasons[] = { "toner-low", "toner-empty", - "connecting-to-device", + /*"connecting-to-device",*/ "cover-open", "cups-missing-filter", "door-open", @@ -310,7 +310,7 @@ /* Translators: The printer has no toner left (same as in system-config-printer) */ N_("Toner empty"), /* Translators: The printer is in the process of connecting to a shared network output device (same as in system-config-printer) */ - N_("Not connected?"), + /*N_("Not connected?"),*/ /* Translators: One or more covers on the printer are open (same as in system-config-printer) */ N_("Cover open"), /* Translators: A filter or backend is not installed (same as in system-config-printer) */ @@ -336,7 +336,7 @@ /* Translators: The printer has no toner left (same as in system-config-printer) */ N_("Printer '%s' has no toner left."), /* Translators: The printer is in the process of connecting to a shared network output device (same as in system-config-printer) */ - N_("Printer '%s' may not be connected."), + /*N_("Printer '%s' may not be connected."),*/ /* Translators: One or more covers on the printer are open (same as in system-config-printer) */ N_("The cover is open on printer '%s'."), /* Translators: A filter or backend is not installed (same as in system-config-printer) */ debian/patches/disable_three_touch_tap.patch0000664000000000000000000000216412321122275016500 0ustar # Description: disable three-touch tap to click by default, it conflicts with the unity resize handles, see that email for details: https://lists.ubuntu.com/archives/ubuntu-desktop/2012-February/003694.html # Forwarded: no, Ubuntu specific since it's for unity Index: gnome-settings-daemon-3.6.1/plugins/mouse/gsd-mouse-manager.c =================================================================== --- gnome-settings-daemon-3.6.1.orig/plugins/mouse/gsd-mouse-manager.c 2012-10-26 10:19:49.427004172 +0200 +++ gnome-settings-daemon-3.6.1/plugins/mouse/gsd-mouse-manager.c 2012-10-26 10:19:49.691004186 +0200 @@ -657,7 +657,7 @@ /* Set RLM mapping for 1/2/3 fingers*/ data[4] = (state) ? ((left_handed) ? 3 : 1) : 0; data[5] = (state) ? ((left_handed) ? 1 : 3) : 0; - data[6] = (state) ? 2 : 0; + data[6] = 0; /* Disable three touch tap so gestures work */ XChangeDeviceProperty (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), xdevice, prop, XA_INTEGER, 8, PropModeReplace, data, nitems); } debian/patches/touchscreen_rotation.patch0000664000000000000000000001315012321122275016076 0ustar From c1dbf0ad1b49356346f1eb0690e66be428814ef0 Mon Sep 17 00:00:00 2001 From: Jani Monoses Date: Wed, 30 Jan 2013 11:18:48 +0200 Subject: [PATCH] Use transformation matrix to rotate touchscreens. Bug #691691. Signed-off-by: Jani Monoses --- plugins/xrandr/gsd-xrandr-manager.c | 61 ++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 34 deletions(-) diff --git a/plugins/xrandr/gsd-xrandr-manager.c b/plugins/xrandr/gsd-xrandr-manager.c index 2fb6204..790d9c9 100644 --- a/plugins/xrandr/gsd-xrandr-manager.c +++ b/plugins/xrandr/gsd-xrandr-manager.c @@ -1502,15 +1502,13 @@ get_next_rotation (GnomeRRRotation allowed_rotations, GnomeRRRotation current_ro struct { GnomeRRRotation rotation; - /* evdev */ - gboolean x_axis_inversion; - gboolean y_axis_inversion; - gboolean axes_swap; + /* Coordinate Transformation Matrix */ + gfloat matrix[9]; } evdev_rotations[] = { - { GNOME_RR_ROTATION_0, 0, 0, 0 }, - { GNOME_RR_ROTATION_90, 1, 0, 1 }, - { GNOME_RR_ROTATION_180, 1, 1, 0 }, - { GNOME_RR_ROTATION_270, 0, 1, 1 } + { GNOME_RR_ROTATION_0, {1, 0, 0, 0, 1, 0, 0, 0, 1}}, + { GNOME_RR_ROTATION_90, {0, -1, 1, 1, 0, 0, 0, 0, 1}}, + { GNOME_RR_ROTATION_180, {-1, 0, 1, 0, -1, 1, 0, 0, 1}}, + { GNOME_RR_ROTATION_270, {0, 1, 0, -1, 0, 1, 0, 0, 1}} }; static guint @@ -1566,6 +1564,7 @@ rotate_touchscreens (GsdXrandrManager *mgr, XDeviceInfo *device_info; gint n_devices; guint i, rot_idx; + Atom float_atom; if (!supports_xinput_devices ()) return; @@ -1578,6 +1577,8 @@ rotate_touchscreens (GsdXrandrManager *mgr, rot_idx = get_rotation_index (rotation); + float_atom = XInternAtom(GDK_DISPLAY_XDISPLAY(gdk_display_get_default()), "FLOAT", True); + for (i = 0; i < n_devices; i++) { if (is_wacom_tablet_device (mgr, &device_info[i])) { g_debug ("Not rotating tablet device '%s'", device_info[i].name); @@ -1587,13 +1588,13 @@ rotate_touchscreens (GsdXrandrManager *mgr, if (device_info_is_touchscreen (&device_info[i]) || device_info_is_tablet (&device_info[i])) { XDevice *device; - char c = evdev_rotations[rot_idx].axes_swap; - PropertyHelper axes_swap = { - .name = "Evdev Axes Swap", - .nitems = 1, - .format = 8, - .type = XA_INTEGER, - .data.c = &c, + gfloat *m = evdev_rotations[rot_idx].matrix; + PropertyHelper matrix = { + .name = "Coordinate Transformation Matrix", + .nitems = 9, + .format = 32, + .type = float_atom, + .data.i = (int *)m, }; g_debug ("About to rotate '%s'", device_info[i].name); @@ -1603,26 +1604,18 @@ rotate_touchscreens (GsdXrandrManager *mgr, if (gdk_error_trap_pop () || (device == NULL)) continue; - if (device_set_property (device, device_info[i].name, &axes_swap) != FALSE) { - char axis[] = { - evdev_rotations[rot_idx].x_axis_inversion, - evdev_rotations[rot_idx].y_axis_inversion - }; - PropertyHelper axis_invert = { - .name = "Evdev Axis Inversion", - .nitems = 2, - .format = 8, - .type = XA_INTEGER, - .data.c = axis, - }; - - device_set_property (device, device_info[i].name, &axis_invert); - - g_debug ("Rotated '%s' to configuration '%d, %d, %d'", + if (device_set_property (device, device_info[i].name, &matrix) != FALSE) { + g_debug ("Rotated '%s' to configuration '%f, %f, %f, %f, %f, %f, %f, %f, %f'\n", device_info[i].name, - evdev_rotations[rot_idx].x_axis_inversion, - evdev_rotations[rot_idx].y_axis_inversion, - evdev_rotations[rot_idx].axes_swap); + evdev_rotations[rot_idx].matrix[0], + evdev_rotations[rot_idx].matrix[1], + evdev_rotations[rot_idx].matrix[2], + evdev_rotations[rot_idx].matrix[3], + evdev_rotations[rot_idx].matrix[4], + evdev_rotations[rot_idx].matrix[5], + evdev_rotations[rot_idx].matrix[6], + evdev_rotations[rot_idx].matrix[7], + evdev_rotations[rot_idx].matrix[8]); } XCloseDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), device); debian/patches/fix_broken_user_sounds_permissions.patch0000664000000000000000000000256412321122275021056 0ustar Description: Fix up temporarily broken permissions that users may have if they upgraded to 3.6.4-0ubuntu10 Author: Iain Lane Forwarded: not-needed (temporary) Index: b/plugins/sound/gsd-sound-manager.c =================================================================== --- a/plugins/sound/gsd-sound-manager.c +++ b/plugins/sound/gsd-sound-manager.c @@ -20,6 +20,7 @@ #include "config.h" +#include #include #include #include @@ -33,6 +34,7 @@ #include #include +#include #include #include @@ -268,6 +270,14 @@ /* ... and we listen to changes of the theme base directories * in $HOME ...*/ p = g_build_filename (g_get_user_data_dir (), "sounds", NULL); + /* See bug #694134 - the initial commit had the permissions below wrong + * so users may have the directory without the right permissions. Fix + * them up if so. */ + if (!g_access (p, F_OK) && g_access (p, R_OK | W_OK | X_OK) != 0) + { + g_debug ("Permissions on %s wrong; resetting", p); + g_chmod (p, S_IRUSR | S_IWUSR | S_IXUSR); + } if (g_mkdir_with_parents(p, 0700) == 0) register_directory_callback (manager, p, NULL); g_free (p); debian/patches/64_restore_terminal_keyboard_shortcut_schema.patch0000664000000000000000000000646312321122275022670 0ustar Index: gnome-settings-daemon-3.7.91/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in =================================================================== --- gnome-settings-daemon-3.7.91.orig/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in 2013-03-08 18:25:20.441961407 -0500 +++ gnome-settings-daemon-3.7.91/data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in 2013-03-08 18:25:20.437961407 -0500 @@ -130,6 +130,11 @@ <_summary>Copy a screenshot of an area to clipboard <_description>Binding to copy a screenshot of an area to clipboard. + + '<Primary><Alt>t' + <_summary>Launch terminal + <_description>Binding to launch the terminal. + 'XF86WWW' <_summary>Launch web browser Index: gnome-settings-daemon-3.7.91/plugins/media-keys/gsd-media-keys-manager.c =================================================================== --- gnome-settings-daemon-3.7.91.orig/plugins/media-keys/gsd-media-keys-manager.c 2013-03-08 18:25:20.441961407 -0500 +++ gnome-settings-daemon-3.7.91/plugins/media-keys/gsd-media-keys-manager.c 2013-03-08 18:25:20.441961407 -0500 @@ -960,6 +960,22 @@ } static void +do_terminal_action (GsdMediaKeysManager *manager) +{ + GSettings *settings; + char *term; + + settings = g_settings_new ("org.gnome.desktop.default-applications.terminal"); + term = g_settings_get_string (settings, "exec"); + + if (term) + execute (manager, term, FALSE); + + g_free (term); + g_object_unref (settings); +} + +static void gnome_session_shutdown (GsdMediaKeysManager *manager) { GError *error = NULL; @@ -2250,6 +2266,9 @@ case AREA_SCREENSHOT_CLIP_KEY: gsd_screenshot_take (type); break; + case TERMINAL_KEY: + do_terminal_action (manager); + break; case WWW_KEY: do_url_action (manager, "http", timestamp); break; Index: gnome-settings-daemon-3.7.91/plugins/media-keys/shortcuts-list.h =================================================================== --- gnome-settings-daemon-3.7.91.orig/plugins/media-keys/shortcuts-list.h 2013-03-08 18:25:20.441961407 -0500 +++ gnome-settings-daemon-3.7.91/plugins/media-keys/shortcuts-list.h 2013-03-08 18:25:34.201960831 -0500 @@ -51,6 +51,7 @@ SCREENSHOT_CLIP_KEY, WINDOW_SCREENSHOT_CLIP_KEY, AREA_SCREENSHOT_CLIP_KEY, + TERMINAL_KEY, WWW_KEY, PLAY_KEY, PAUSE_KEY, @@ -122,6 +123,7 @@ { SCREENSHOT_CLIP_KEY, "screenshot-clip", NULL, NULL, SHELL_KEYBINDING_MODE_ALL }, { WINDOW_SCREENSHOT_CLIP_KEY, "window-screenshot-clip", NULL, NULL, SHELL_KEYBINDING_MODE_NORMAL }, { AREA_SCREENSHOT_CLIP_KEY, "area-screenshot-clip", NULL, NULL, SHELL_KEYBINDING_MODE_ALL }, + { TERMINAL_KEY, "terminal", NULL, NULL, GSD_KEYBINDING_MODE_LAUNCHER }, { WWW_KEY, "www", NULL, NULL, GSD_KEYBINDING_MODE_LAUNCHER }, { PLAY_KEY, "play", NULL, NULL, SHELL_KEYBINDING_MODE_ALL }, { PAUSE_KEY, "pause", NULL, NULL, SHELL_KEYBINDING_MODE_ALL }, debian/watch0000664000000000000000000000017512321122275010221 0ustar version=2 http://ftp.gnome.org/pub/GNOME/sources/gnome-settings-daemon/([0-9.]+)/ \ gnome-settings-daemon-([\d\.]+)\.tar\.xz debian/gnome-settings-daemon.links0000664000000000000000000000012212321122275014426 0ustar usr/lib/gnome-settings-daemon/gnome-settings-daemon usr/bin/gnome-settings-daemon debian/gnome-settings-daemon.user-session.upstart0000664000000000000000000000037312321122275017456 0ustar description "The Gnome Settings Daemon" author "Stéphane Graber " start on started dbus and starting gnome-session INSTANCE=GNOME stop on stopping gnome-session respawn exec /usr/lib/gnome-settings-daemon/gnome-settings-daemon debian/copyright0000664000000000000000000000554612321122275011132 0ustar This package was debianized by Sebastien Bacher on Wed, 16 Jan 2008 11:12:19 +0100. It was downloaded from http://ftp.acc.umu.se/pub/GNOME/sources/gnome-settings-daemon Upstream Authors: Jonathan Blandford William Jon McCann Copyright: Copyright © 2001 Ximian, Inc. Copyright (C) 2007 William Jon McCann Copyright (C) 2000 Helix Code, Inc Copyright © 2007 Matthias Clasen Copyright (C) 2007 Rodrigo Moya Copyright (C) 2007 Anders Carlsson Copyright © 2004 Red Hat, Inc. Copyright 2002 Sun Microsystems, Inc. Copyright © 2005,2006 Novell, Inc. Copyright © 2007 The GNOME Foundation Copyright (C) 2002-2005 - Paolo Maggi Copyright (C) 2002 Red Hat, Inc. Copyright 1998, 2001 Tim Janik Copyright � 2001 Udaltsoft Copyright (C) 2001, 2002, 2003 Bastien Nocera Copyright (C) 2003 Ross Burton Copyright © 2001 Jonathan Blandford License: This package is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA On Debian systems, the complete text of the GNU General Public License can be found in `/usr/share/common-licenses/GPL'. eggaccelerators.h, eggaccelerators.c License: This package is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this package; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA On Debian systems, the complete text of the GNU Lesser General Public License can be found in `/usr/share/common-licenses/LGPL'. The Debian packaging is (C) 2008, Sebastien Bacher and is licensed under the GPL, see above.