From 2e49deab1f157b71773eb3ff0a8933bf98321c11 Mon Sep 17 00:00:00 2001 From: guibuilder_pel7x64builder0 Date: Tue, 5 Jun 2018 09:40:42 +0200 Subject: [PATCH] gnome-shell package update Signed-off-by: guibuilder_pel7x64builder0 --- ...-Revert-build-Drop-autotools-support.patch | 1632 +++++++++++++++++ ...-to-window-title-instead-of-WM_CLASS.patch | 28 + ...ll-process-working.svg-to-filesystem.patch | 28 + ...Notify-about-extension-issues-on-upd.patch | 69 + ...ns-Add-a-SESSION_MODE-extension-type.patch | 42 + SOURCES/0001-gdm-add-AuthList-control.patch | 240 +++ ...login-delay-even-if-animations-disab.patch | 71 + ...-authentication-if-all-schemes-are-d.patch | 29 + ...Allow-overriding-the-override-schema.patch | 115 ++ ...oginDialog-make-info-messages-themed.patch | 35 +- ...-emit-session-activated-on-user-acti.patch | 122 ++ ...spew-to-console-when-focus-moves-aro.patch | 51 + ...dOsd-Ensure-to-pick-pad-devices-only.patch | 41 + ...-add-an-icon-to-the-ActivitiesButton.patch | 67 + ...eld-unblank-when-inserting-smartcard.patch | 33 + ...DBus-method-to-load-a-single-extensi.patch | 52 + ...ow-an-exception-if-power-off-disable.patch | 91 + ...-back-workspaces-submenu-for-static-.patch | 44 + ...ld-Remove-included-Makefiles-as-well.patch | 299 +++ ...upport-for-GDM-s-ChoiceList-PAM-exte.patch | 267 +++ ...ld-Remove-check-for-missing-disthook.patch | 38 + ...uild-Use-new-mkenums_simple-function.patch | 200 ++ .../allow-timed-login-with-no-user-list.patch | 188 ++ .../disable-unlock-entry-until-question.patch | 167 ++ SOURCES/enforce-smartcard-at-unlock.patch | 115 ++ .../gnome-shell-favourite-apps-firefox.patch | 21 + .../gnome-shell-favourite-apps-terminal.patch | 25 + SOURCES/gnome-shell-favourite-apps-yelp.patch | 26 + SOURCES/org.gnome.shell.gschema.override | 2 + SPECS/gnome-shell.spec | 1339 ++++++++++++++ 30 files changed, 5469 insertions(+), 8 deletions(-) create mode 100644 SOURCES/0001-Revert-build-Drop-autotools-support.patch create mode 100644 SOURCES/0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch create mode 100644 SOURCES/0001-data-install-process-working.svg-to-filesystem.patch create mode 100644 SOURCES/0001-extensionSystem-Notify-about-extension-issues-on-upd.patch create mode 100644 SOURCES/0001-extensions-Add-a-SESSION_MODE-extension-type.patch create mode 100644 SOURCES/0001-gdm-add-AuthList-control.patch create mode 100644 SOURCES/0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch create mode 100644 SOURCES/0001-gdm-use-password-authentication-if-all-schemes-are-d.patch create mode 100644 SOURCES/0001-global-Allow-overriding-the-override-schema.patch create mode 100644 SOURCES/0001-loginDialog-only-emit-session-activated-on-user-acti.patch create mode 100644 SOURCES/0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch create mode 100644 SOURCES/0001-padOsd-Ensure-to-pick-pad-devices-only.patch create mode 100644 SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch create mode 100644 SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch create mode 100644 SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch create mode 100644 SOURCES/0001-system-don-t-throw-an-exception-if-power-off-disable.patch create mode 100644 SOURCES/0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch create mode 100644 SOURCES/0002-Revert-build-Remove-included-Makefiles-as-well.patch create mode 100644 SOURCES/0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch create mode 100644 SOURCES/0003-build-Remove-check-for-missing-disthook.patch create mode 100644 SOURCES/0004-Revert-build-Use-new-mkenums_simple-function.patch create mode 100644 SOURCES/allow-timed-login-with-no-user-list.patch create mode 100644 SOURCES/disable-unlock-entry-until-question.patch create mode 100644 SOURCES/enforce-smartcard-at-unlock.patch create mode 100644 SOURCES/gnome-shell-favourite-apps-firefox.patch create mode 100644 SOURCES/gnome-shell-favourite-apps-terminal.patch create mode 100644 SOURCES/gnome-shell-favourite-apps-yelp.patch create mode 100644 SOURCES/org.gnome.shell.gschema.override create mode 100644 SPECS/gnome-shell.spec diff --git a/SOURCES/0001-Revert-build-Drop-autotools-support.patch b/SOURCES/0001-Revert-build-Drop-autotools-support.patch new file mode 100644 index 0000000..b9e5dff --- /dev/null +++ b/SOURCES/0001-Revert-build-Drop-autotools-support.patch @@ -0,0 +1,1632 @@ +From a24679ddf8b96590fc6bf5ed7fadc8724a40445c Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Fri, 15 Sep 2017 10:39:50 +0200 +Subject: [PATCH 1/2] Revert "build: Drop autotools support" + +This reverts commit cf010cfd8fc1440373c1ed44540a54a5341cf3eb. +--- + Makefile.am | 33 ++++ + autogen.sh | 35 ++++ + browser-plugin/Makefile.am | 23 +++ + configure.ac | 280 +++++++++++++++++++++++++++++++ + data/Makefile.am | 136 +++++++++++++++ + docs/Makefile.am | 1 + + docs/reference/Makefile.am | 1 + + docs/reference/shell/Makefile.am | 139 ++++++++++++++++ + docs/reference/st/Makefile.am | 104 ++++++++++++ + gtk-doc.make | 304 ++++++++++++++++++++++++++++++++++ + js/Makefile.am | 39 +++++ + man/Makefile.am | 19 +++ + src/Makefile.am | 349 +++++++++++++++++++++++++++++++++++++++ + tests/Makefile.am | 45 +++++ + 14 files changed, 1508 insertions(+) + create mode 100644 Makefile.am + create mode 100755 autogen.sh + create mode 100644 browser-plugin/Makefile.am + create mode 100644 configure.ac + create mode 100644 data/Makefile.am + create mode 100644 docs/Makefile.am + create mode 100644 docs/reference/Makefile.am + create mode 100644 docs/reference/shell/Makefile.am + create mode 100644 docs/reference/st/Makefile.am + create mode 100644 gtk-doc.make + create mode 100644 js/Makefile.am + create mode 100644 man/Makefile.am + create mode 100644 src/Makefile.am + create mode 100644 tests/Makefile.am + +diff --git a/Makefile.am b/Makefile.am +new file mode 100644 +index 000000000..eba7d2b28 +--- /dev/null ++++ b/Makefile.am +@@ -0,0 +1,33 @@ ++# Point to our macro directory and pick up user flags from the environment ++ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} ++ ++SUBDIRS = data js subprojects/gvc src tests po docs ++ ++if BUILD_BROWSER_PLUGIN ++SUBDIRS += browser-plugin ++endif ++ ++if ENABLE_MAN ++SUBDIRS += man ++endif ++ ++EXTRA_DIST = \ ++ .project \ ++ .settings \ ++ autogen.sh \ ++ tools/check-for-missing.py ++ ++# These are files checked into Git that we don't want to distribute ++DIST_EXCLUDE = \ ++ .gitignore \ ++ .gitmodules \ ++ gnome-shell.doap \ ++ HACKING \ ++ MAINTAINERS \ ++ tools/build/* ++ ++distcheck-hook: ++ @echo "Checking disted files against files in git" ++ @$(srcdir)/tools/check-for-missing.py $(srcdir) $(distdir) $(DIST_EXCLUDE) ++ ++DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man +diff --git a/autogen.sh b/autogen.sh +new file mode 100755 +index 000000000..9794dc3b9 +--- /dev/null ++++ b/autogen.sh +@@ -0,0 +1,35 @@ ++#!/bin/sh ++# Run this to generate all the initial makefiles, etc. ++ ++srcdir=`dirname $0` ++test -z "$srcdir" && srcdir=. ++ ++olddir="$(pwd)" ++ ++cd "${srcdir}" ++ ++(test -f configure.ac \ ++ && test -d src) || { ++ echo -n "**Error**: Directory "\`$srcdir\'" does not look like the" ++ echo " top-level gnome-shell directory" ++ exit 1 ++} ++ ++# Fetch submodules if needed ++if test ! -f subprojects/gvc/Makefile.am || test ! -f data/theme/gnome-shell-sass/COPYING; ++then ++ echo "+ Setting up submodules" ++ git submodule init ++fi ++git submodule update ++ ++aclocal --install || exit 1 ++gtkdocize --copy || exit 1 ++intltoolize --force --copy --automake || exit 1 ++autoreconf --verbose --force --install || exit 1 ++ ++cd "${olddir}" ++ ++if [ "$NOCONFIGURE" = "" ]; then ++ "${srcdir}/configure" "$@" || exit 1 ++fi +diff --git a/browser-plugin/Makefile.am b/browser-plugin/Makefile.am +new file mode 100644 +index 000000000..6ed1d6340 +--- /dev/null ++++ b/browser-plugin/Makefile.am +@@ -0,0 +1,23 @@ ++ ++mozillalibdir = $(BROWSER_PLUGIN_DIR) ++ ++mozillalib_LTLIBRARIES = libgnome-shell-browser-plugin.la ++ ++# Browsers can unload and reload the module while browsing, which is not supported by GObject. ++# We pass -Wl,-z,nodelete to the linker to ensure the module is never unloaded. ++# https://bugzilla.gnome.org/show_bug.cgi?id=737932 ++libgnome_shell_browser_plugin_la_LDFLAGS = -module -avoid-version -no-undefined -Wl,-z,nodelete ++ ++libgnome_shell_browser_plugin_la_LIBADD = \ ++ $(BROWSER_PLUGIN_LIBS) ++ ++libgnome_shell_browser_plugin_la_SOURCES = \ ++ browser-plugin.c \ ++ npapi/npapi.h \ ++ npapi/npfunctions.h \ ++ npapi/npruntime.h \ ++ npapi/nptypes.h ++ ++libgnome_shell_browser_plugin_la_CFLAGS = \ ++ $(BROWSER_PLUGIN_CFLAGS) \ ++ -DG_LOG_DOMAIN=\"GnomeShellBrowserPlugin\" +diff --git a/configure.ac b/configure.ac +new file mode 100644 +index 000000000..6372c4dff +--- /dev/null ++++ b/configure.ac +@@ -0,0 +1,280 @@ ++AC_PREREQ(2.63) ++AC_INIT([gnome-shell],[3.25.4],[https://bugzilla.gnome.org/enter_bug.cgi?product=gnome-shell],[gnome-shell]) ++AX_IS_RELEASE([git-directory]) ++ ++AC_CONFIG_HEADERS([config.h]) ++AC_CONFIG_SRCDIR([src/shell-global.c]) ++AC_CONFIG_MACRO_DIR([m4]) ++AC_CONFIG_AUX_DIR([config]) ++ ++AC_SUBST([PACKAGE_NAME], ["$PACKAGE_NAME"]) ++AC_SUBST([PACKAGE_VERSION], ["$PACKAGE_VERSION"]) ++ ++AM_INIT_AUTOMAKE([1.11 no-dist-gzip dist-xz tar-ustar foreign]) ++AM_MAINTAINER_MODE([enable]) ++ ++m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])]) ++ ++# Checks for programs. ++AC_PROG_CC ++ ++# Initialize libtool ++LT_PREREQ([2.2.6]) ++LT_INIT([disable-static]) ++ ++# i18n ++GETTEXT_PACKAGE=gnome-shell ++AC_SUBST(GETTEXT_PACKAGE) ++AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", ++ [The prefix for our gettext translation domains.]) ++ ++AM_GNU_GETTEXT_VERSION([0.19.6]) ++AM_GNU_GETTEXT([external]) ++ ++PKG_PROG_PKG_CONFIG([0.22]) ++ ++AC_PATH_PROG([XSLTPROC], [xsltproc]) ++ ++GLIB_GSETTINGS ++ ++# Get a value to substitute into gnome-shell.in ++AM_PATH_PYTHON([3]) ++AC_SUBST(PYTHON) ++ ++# We depend on a specific version of the libmutter API. The mutter variants of ++# the Cogl and Clutter libraries also use this API version. ++LIBMUTTER_API_VERSION=1 ++ ++LIBMUTTER=libmutter-$LIBMUTTER_API_VERSION ++LIBMUTTER_COGL=mutter-cogl-$LIBMUTTER_API_VERSION ++LIBMUTTER_COGL_PANGO=mutter-cogl-pango-$LIBMUTTER_API_VERSION ++LIBMUTTER_CLUTTER=mutter-clutter-$LIBMUTTER_API_VERSION ++ ++# We need at least this, since gst_plugin_register_static() was added ++# in 0.10.16, but nothing older than 0.10.21 has been tested. ++GSTREAMER_MIN_VERSION=0.11.92 ++ ++recorder_modules= ++build_recorder=false ++AC_MSG_CHECKING([for GStreamer (needed for recording functionality)]) ++if $PKG_CONFIG --exists gstreamer-1.0 '>=' $GSTREAMER_MIN_VERSION ; then ++ AC_MSG_RESULT(yes) ++ build_recorder=true ++ recorder_modules="gstreamer-1.0 gstreamer-base-1.0 x11 gtk+-3.0" ++else ++ AC_MSG_RESULT(no) ++fi ++ ++AM_CONDITIONAL(BUILD_RECORDER, $build_recorder) ++ ++AC_ARG_ENABLE([systemd], ++ AS_HELP_STRING([--enable-systemd], [Use systemd]), ++ [enable_systemd=$enableval], ++ [enable_systemd=auto]) ++AS_IF([test x$enable_systemd != xno], [ ++ AC_MSG_CHECKING([for libsystemd]) ++ PKG_CHECK_EXISTS([libsystemd], ++ [have_systemd=yes ++ AC_DEFINE([HAVE_SYSTEMD], [1], [Define if we have systemd])], ++ [have_systemd=no]) ++ AC_MSG_RESULT($have_systemd) ++]) ++ ++AC_MSG_RESULT($enable_systemd) ++ ++GOBJECT_INTROSPECTION_MIN_VERSION=1.49.1 ++GJS_MIN_VERSION=1.47.0 ++MUTTER_MIN_VERSION=3.25.3 ++GTK_MIN_VERSION=3.15.0 ++GIO_MIN_VERSION=2.53.0 ++LIBECAL_MIN_VERSION=3.5.3 ++LIBEDATASERVER_MIN_VERSION=3.17.2 ++POLKIT_MIN_VERSION=0.100 ++STARTUP_NOTIFICATION_MIN_VERSION=0.11 ++GCR_MIN_VERSION=3.7.5 ++GNOME_DESKTOP_REQUIRED_VERSION=3.7.90 ++NETWORKMANAGER_MIN_VERSION=0.9.8 ++PULSE_MIN_VERS=2.0 ++ ++# Collect more than 20 libraries for a prize! ++SHARED_PCS="gio-unix-2.0 >= $GIO_MIN_VERSION ++ libxml-2.0 ++ gtk+-3.0 >= $GTK_MIN_VERSION ++ atk-bridge-2.0 ++ gjs-1.0 >= $GJS_MIN_VERSION ++ $recorder_modules ++ gdk-x11-3.0 libsoup-2.4 ++ $LIBMUTTER_CLUTTER >= $MUTTER_MIN_VERSION ++ $LIBMUTTER_COGL_PANGO ++ libstartup-notification-1.0 >= $STARTUP_NOTIFICATION_MIN_VERSION ++ gobject-introspection-1.0 >= $GOBJECT_INTROSPECTION_MIN_VERSION ++ libcanberra libcanberra-gtk3 ++ polkit-agent-1 >= $POLKIT_MIN_VERSION ++ gcr-base-3 >= $GCR_MIN_VERSION" ++if test x$have_systemd = xyes; then ++ SHARED_PCS="${SHARED_PCS} libsystemd" ++fi ++ ++PKG_CHECK_MODULES(GNOME_SHELL, $SHARED_PCS) ++PKG_CHECK_MODULES(MUTTER, $LIBMUTTER >= $MUTTER_MIN_VERSION) ++ ++PKG_CHECK_MODULES(GNOME_SHELL_JS, gio-2.0 gjs-1.0 >= $GJS_MIN_VERSION) ++PKG_CHECK_MODULES(ST, $LIBMUTTER_CLUTTER gtk+-3.0 libcroco-0.6 >= 0.6.8 x11) ++PKG_CHECK_MODULES(SHELL_PERF_HELPER, gtk+-3.0 gio-2.0) ++PKG_CHECK_MODULES(SHELL_HOTPLUG_SNIFFER, gio-2.0 gdk-pixbuf-2.0) ++PKG_CHECK_MODULES(TRAY, $LIBMUTTER_CLUTTER gtk+-3.0) ++PKG_CHECK_MODULES(GVC, libpulse >= $PULSE_MIN_VERS libpulse-mainloop-glib gobject-2.0) ++PKG_CHECK_MODULES(DESKTOP_SCHEMAS, gsettings-desktop-schemas >= 3.21.3) ++ ++AC_SUBST(LIBMUTTER_API_VERSION) ++ ++AC_ARG_ENABLE(browser-plugin, ++ [AS_HELP_STRING([--enable-browser-plugin], ++ [Enable browser plugin [default=yes]])],, ++ enable_browser_plugin=yes) ++AS_IF([test x$enable_browser_plugin = xyes], [ ++ PKG_CHECK_MODULES(BROWSER_PLUGIN, gio-2.0 >= $GIO_MIN_VERSION json-glib-1.0 >= 0.13.2) ++]) ++AM_CONDITIONAL(BUILD_BROWSER_PLUGIN, test x$enable_browser_plugin = xyes) ++ ++PKG_CHECK_MODULES(BLUETOOTH, gnome-bluetooth-1.0 >= 3.9.0, ++ [AC_DEFINE([HAVE_BLUETOOTH],[1],[Define if you have libgnome-bluetooth-applet]) ++ AC_SUBST([HAVE_BLUETOOTH],[1])], ++ [AC_DEFINE([HAVE_BLUETOOTH],[0]) ++ AC_SUBST([HAVE_BLUETOOTH],[0])]) ++ ++PKG_CHECK_MODULES(CALENDAR_SERVER, libecal-1.2 >= $LIBECAL_MIN_VERSION libedataserver-1.2 >= $LIBEDATASERVER_MIN_VERSION gio-2.0) ++AC_SUBST(CALENDAR_SERVER_CFLAGS) ++AC_SUBST(CALENDAR_SERVER_LIBS) ++ ++GNOME_KEYBINDINGS_KEYSDIR=`$PKG_CONFIG --variable keysdir gnome-keybindings` ++AC_SUBST([GNOME_KEYBINDINGS_KEYSDIR]) ++ ++GOBJECT_INTROSPECTION_CHECK([$GOBJECT_INTROSPECTION_MIN_VERSION]) ++ ++MUTTER_GIR_DIR=`$PKG_CONFIG --variable=girdir $LIBMUTTER` ++AC_SUBST(MUTTER_GIR_DIR) ++ ++MUTTER_TYPELIB_DIR=`$PKG_CONFIG --variable=typelibdir $LIBMUTTER` ++AC_SUBST(MUTTER_TYPELIB_DIR) ++ ++GLIB_COMPILE_RESOURCES=`$PKG_CONFIG --variable glib_compile_resources gio-2.0` ++AC_SUBST(GLIB_COMPILE_RESOURCES) ++ ++AC_CHECK_FUNCS(fdwalk) ++AC_CHECK_FUNCS(mallinfo) ++AC_CHECK_HEADERS([sys/resource.h]) ++ ++# _NL_TIME_FIRST_WEEKDAY is an enum and not a define ++AC_MSG_CHECKING([for _NL_TIME_FIRST_WEEKDAY]) ++AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include ]], ++ [[nl_langinfo(_NL_TIME_FIRST_WEEKDAY);]])], ++ [langinfo_ok=yes], [langinfo_ok=no]) ++AC_MSG_RESULT($langinfo_ok) ++if test "$langinfo_ok" = "yes"; then ++ AC_DEFINE([HAVE__NL_TIME_FIRST_WEEKDAY], [1], ++ [Define if _NL_TIME_FIRST_WEEKDAY is available]) ++fi ++ ++AC_ARG_ENABLE(networkmanager, ++ AS_HELP_STRING([--disable-networkmanager], ++ [disable NetworkManager support @<:@default=auto@:>@]),, ++ [enable_networkmanager=auto]) ++ ++if test "x$enable_networkmanager" != "xno"; then ++ PKG_CHECK_MODULES(NETWORKMANAGER, ++ [libnm-glib ++ libnm-util >= $NETWORKMANAGER_MIN_VERSION ++ libnm-gtk >= $NETWORKMANAGER_MIN_VERSION ++ libsecret-1 >= 0.18], ++ [have_networkmanager=yes], ++ [have_networkmanager=no]) ++ ++ GNOME_SHELL_CFLAGS="$GNOME_SHELL_CFLAGS $NETWORKMANAGER_CFLAGS" ++ GNOME_SHELL_LIBS="$GNOME_SHELL_LIBS $NETWORKMANAGER_LIBS" ++else ++ have_networkmanager="no (disabled)" ++fi ++ ++if test "x$have_networkmanager" = "xyes"; then ++ AC_DEFINE(HAVE_NETWORKMANAGER, [1], [Define if we have NetworkManager]) ++ AC_SUBST([HAVE_NETWORKMANAGER], [1]) ++else ++ if test "x$enable_networkmanager" = "xyes"; then ++ AC_MSG_ERROR([Couldn't find NetworkManager.]) ++ fi ++ AC_SUBST([HAVE_NETWORKMANAGER], [0]) ++fi ++ ++AM_CONDITIONAL(HAVE_NETWORKMANAGER, test "$have_networkmanager" = "yes") ++ ++# Sets GLIB_GENMARSHAL and GLIB_MKENUMS ++AM_PATH_GLIB_2_0() ++ ++GTK_DOC_CHECK([1.15], [--flavour no-tmpl]) ++ ++AC_ARG_ENABLE(man, ++ [AS_HELP_STRING([--enable-man], ++ [generate man pages [default=yes]])],, ++ enable_man=yes) ++if test "$enable_man" != no; then ++ AC_PATH_PROG([XSLTPROC], [xsltproc]) ++ if test -z "$XSLTPROC"; then ++ AC_MSG_ERROR([xsltproc is required for --enable-man]) ++ fi ++fi ++AM_CONDITIONAL(ENABLE_MAN, test "$enable_man" != no) ++ ++AX_COMPILER_FLAGS() ++case "$WARN_CFLAGS" in ++ *-Werror*) ++ WARN_CFLAGS="$WARN_CFLAGS -Wno-error=deprecated-declarations" ++ ;; ++esac ++ ++AM_CFLAGS="$AM_CFLAGS $WARN_CFLAGS" ++AC_SUBST(AM_CFLAGS) ++ ++if test -z "${BROWSER_PLUGIN_DIR}"; then ++ BROWSER_PLUGIN_DIR="\${libdir}/mozilla/plugins" ++fi ++AC_ARG_VAR([BROWSER_PLUGIN_DIR],[Where to install the plugin to]) ++ ++AC_ARG_VAR([GDBUS_CODEGEN],[the gdbus-codegen programme]) ++AC_PATH_PROG([GDBUS_CODEGEN],[gdbus-codegen],[]) ++if test -z "$GDBUS_CODEGEN"; then ++ AC_MSG_ERROR([gdbus-codegen not found]) ++fi ++ ++AC_PATH_PROG([SASSC],[sassc],[]) ++ ++AC_CONFIG_FILES([ ++ Makefile ++ data/Makefile ++ docs/Makefile ++ docs/reference/Makefile ++ docs/reference/shell/Makefile ++ docs/reference/shell/version.xml ++ docs/reference/st/Makefile ++ docs/reference/st/version.xml ++ js/Makefile ++ src/Makefile ++ subprojects/gvc/Makefile ++ browser-plugin/Makefile ++ tests/Makefile ++ po/Makefile.in ++ man/Makefile ++]) ++AC_OUTPUT ++ ++echo " ++Build configuration: ++ ++ Prefix: ${prefix} ++ Source code location: ${srcdir} ++ Compiler: ${CC} ++ Compiler Warnings: $ax_enable_compile_warnings ++ ++ Support for NetworkManager: $have_networkmanager ++ Support for GStreamer recording: $build_recorder ++" +diff --git a/data/Makefile.am b/data/Makefile.am +new file mode 100644 +index 000000000..8c01e49d1 +--- /dev/null ++++ b/data/Makefile.am +@@ -0,0 +1,136 @@ ++CLEANFILES = ++NULL = ++ ++portaldir = $(datadir)/xdg-desktop-portal/portals ++portal_DATA = gnome-shell.portal ++ ++desktopdir=$(datadir)/applications ++desktop_DATA = org.gnome.Shell.desktop gnome-shell-extension-prefs.desktop ++ ++if HAVE_NETWORKMANAGER ++desktop_DATA += org.gnome.Shell.PortalHelper.desktop ++ ++servicedir = $(datadir)/dbus-1/services ++service_DATA = org.gnome.Shell.PortalHelper.service ++ ++CLEANFILES += \ ++ org.gnome.Shell.PortalHelper.service \ ++ org.gnome.Shell.PortalHelper.desktop \ ++ org.gnome.Shell.PortalHelper.desktop.in \ ++ $(NULL) ++ ++endif ++ ++%.service: %.service.in ++ $(AM_V_GEN) sed -e "s|@libexecdir[@]|$(libexecdir)|" \ ++ $< > $@ || rm $@ ++ ++# We substitute in bindir so it works as an autostart ++# file when built in a non-system prefix ++%.desktop.in:%.desktop.in.in ++ $(AM_V_GEN) sed -e "s|@bindir[@]|$(bindir)|" \ ++ -e "s|@VERSION[@]|$(VERSION)|" \ ++ $< > $@ || rm $@ ++ ++%.desktop:%.desktop.in ++ $(AM_V_GEN) $(MSGFMT) --desktop --template $(builddir)/$< \ ++ -d $(top_srcdir)/po -o $@ ++ ++introspectiondir = $(datadir)/dbus-1/interfaces ++introspection_DATA = \ ++ org.gnome.Shell.PadOsd.xml \ ++ org.gnome.Shell.Screencast.xml \ ++ org.gnome.Shell.Screenshot.xml \ ++ org.gnome.ShellSearchProvider.xml \ ++ org.gnome.ShellSearchProvider2.xml \ ++ $(NULL) ++ ++theme_sources = \ ++ theme/gnome-shell-high-contrast.scss \ ++ theme/gnome-shell.scss \ ++ theme/gnome-shell-sass/_colors.scss \ ++ theme/gnome-shell-sass/_common.scss \ ++ theme/gnome-shell-sass/_drawing.scss \ ++ theme/gnome-shell-sass/_high-contrast-colors.scss \ ++ $(NULL) ++ ++dist_theme_files = \ ++ $(theme_sources) \ ++ theme/HACKING \ ++ theme/README \ ++ theme/gnome-shell-sass/COPYING \ ++ theme/gnome-shell-sass/HACKING \ ++ theme/gnome-shell-sass/NEWS \ ++ theme/gnome-shell-sass/README \ ++ theme/gnome-shell-sass/gnome-shell-sass.doap \ ++ theme/pad-osd.css \ ++ theme/parse-sass.sh \ ++ $(NULL) ++ ++%.css: %.scss $(theme_sources) ++ @if test -n "$(SASSC)"; then \ ++ if $(AM_V_P); then PS4= set -x; else echo " GEN $@"; fi; \ ++ $(SASSC) -a $< $@; \ ++ fi ++ ++resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/theme --generate-dependencies $(srcdir)/gnome-shell-theme.gresource.xml) ++gnome-shell-theme.gresource: gnome-shell-theme.gresource.xml $(resource_files) ++ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/theme $< ++resourcedir = $(pkgdatadir) ++resource_DATA = gnome-shell-theme.gresource ++ ++backgrounddir = $(pkgdatadir) ++background_DATA = perf-background.xml ++ ++perf-background.xml: perf-background.xml.in ++ $(AM_V_GEN) sed -e "s|@datadir[@]|$(datadir)|" \ ++ $< > $@ || rm $@ ++ ++keysdir = @GNOME_KEYBINDINGS_KEYSDIR@ ++keys_DATA = 50-gnome-shell-system.xml ++ ++gsettings_SCHEMAS = org.gnome.shell.gschema.xml ++ ++%.gschema.xml: %.gschema.xml.in Makefile ++ $(AM_V_GEN) sed -e 's|@GETTEXT_PACKAGE[@]|$(GETTEXT_PACKAGE)|g' \ ++ $< > $@ || rm $@ ++ ++@GSETTINGS_RULES@ ++ ++# We need to compile schemas at make time ++# to run from source tree ++gschemas.compiled: $(gsettings_SCHEMAS:.xml=.valid) ++ $(AM_V_GEN) $(GLIB_COMPILE_SCHEMAS) --targetdir=. . ++ ++all-local: gschemas.compiled ++ ++convertdir = $(datadir)/GConf/gsettings ++convert_DATA = gnome-shell-overrides.convert ++ ++EXTRA_DIST = \ ++ org.gnome.Shell.desktop.in.in \ ++ gnome-shell-extension-prefs.desktop.in.in \ ++ $(portal_DATA) \ ++ $(introspection_DATA) \ ++ $(menu_DATA) \ ++ $(convert_DATA) \ ++ $(keys_DATA) \ ++ $(dist_theme_files) \ ++ perf-background.xml.in \ ++ org.gnome.Shell.PortalHelper.desktop.in.in \ ++ org.gnome.Shell.PortalHelper.service.in \ ++ org.gnome.shell.gschema.xml.in \ ++ gnome-shell-theme.gresource.xml \ ++ $(resource_files) \ ++ $(NULL) ++ ++CLEANFILES += \ ++ org.gnome.Shell.desktop.in \ ++ gnome-shell-extension-prefs.in \ ++ $(desktop_DATA) \ ++ $(gsettings_SCHEMAS) \ ++ perf-background.xml \ ++ gschemas.compiled \ ++ org.gnome.shell.gschema.valid \ ++ gnome-shell-theme.gresource \ ++ $(NULL) +diff --git a/docs/Makefile.am b/docs/Makefile.am +new file mode 100644 +index 000000000..f3ddc22dd +--- /dev/null ++++ b/docs/Makefile.am +@@ -0,0 +1 @@ ++SUBDIRS = reference +diff --git a/docs/reference/Makefile.am b/docs/reference/Makefile.am +new file mode 100644 +index 000000000..2721dc0e0 +--- /dev/null ++++ b/docs/reference/Makefile.am +@@ -0,0 +1 @@ ++SUBDIRS = shell st +diff --git a/docs/reference/shell/Makefile.am b/docs/reference/shell/Makefile.am +new file mode 100644 +index 000000000..715e3f26c +--- /dev/null ++++ b/docs/reference/shell/Makefile.am +@@ -0,0 +1,139 @@ ++## Process this file with automake to produce Makefile.in ++ ++# We require automake 1.6 at least. ++AUTOMAKE_OPTIONS = 1.6 ++ ++# This is a blank Makefile.am for using gtk-doc. ++# Copy this to your project's API docs directory and modify the variables to ++# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples ++# of using the various options. ++ ++# The name of the module, e.g. 'glib'. ++DOC_MODULE=shell ++ ++# Uncomment for versioned docs and specify the version of the module, e.g. '2'. ++#DOC_MODULE_VERSION=2 ++ ++ ++# The top-level SGML file. You can change this if you want to. ++DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml ++ ++# Directories containing the source code ++# gtk-doc will search all .c and .h files beneath these paths ++# for inline comments documenting functions and macros. ++DOC_SOURCE_DIR=$(top_srcdir)/src ++ ++# Extra options to pass to gtkdoc-scangobj. Not normally needed. ++SCANGOBJ_OPTIONS= ++ ++# Extra options to supply to gtkdoc-scan. ++# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" ++SCAN_OPTIONS=--rebuild-types ++ ++# Extra options to supply to gtkdoc-mkdb. ++# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml ++MKDB_OPTIONS=--xml-mode --output-format=xml ++ ++# Extra options to supply to gtkdoc-mktmpl ++# e.g. MKTMPL_OPTIONS=--only-section-tmpl ++MKTMPL_OPTIONS= ++ ++# Extra options to supply to gtkdoc-mkhtml ++MKHTML_OPTIONS= ++ ++# Extra options to supply to gtkdoc-fixref. Not normally needed. ++# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html ++FIXXREF_OPTIONS= ++ ++# Used for dependencies. The docs will be rebuilt if any of these change. ++# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h ++# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c ++HFILE_GLOB=$(top_srcdir)/src/*.h ++CFILE_GLOB=$(top_srcdir)/src/*.c ++ ++# Extra header to include when scanning, which are not under DOC_SOURCE_DIR ++# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h ++EXTRA_HFILES= ++ ++# Header files or dirs to ignore when scanning. Use base file/dir names ++# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code ++IGNORE_HFILES= \ ++ calendar-server \ ++ gvc \ ++ hotplug-sniffer \ ++ st \ ++ tray \ ++ gactionmuxer.h \ ++ gactionobservable.h \ ++ gactionobserver.h \ ++ shell-network-agent.h \ ++ shell-recorder-src.h ++ ++if !BUILD_RECORDER ++IGNORE_HFILES += shell-recorder.h ++endif ++ ++# Images to copy into HTML directory. ++# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png ++HTML_IMAGES= ++ ++doc-gen-org.gnome.Shell.SearchProvider.xml: $(top_srcdir)/data/org.gnome.ShellSearchProvider.xml ++ gdbus-codegen \ ++ --interface-prefix org.gnome.ShellSearchProvider. \ ++ --generate-docbook doc-gen \ ++ $(top_srcdir)/data/org.gnome.ShellSearchProvider.xml ++ ++doc-gen-org.gnome.Shell.SearchProvider2.xml: $(top_srcdir)/data/org.gnome.ShellSearchProvider2.xml ++ gdbus-codegen \ ++ --interface-prefix org.gnome.ShellSearchProvider2. \ ++ --generate-docbook doc-gen \ ++ $(top_srcdir)/data/org.gnome.ShellSearchProvider2.xml ++ ++doc-gen-org.gnome.Shell.Screenshot.xml: $(top_srcdir)/data/org.gnome.Shell.Screenshot.xml ++ gdbus-codegen \ ++ --interface-prefix org.gnome.Shell.Screenshot. \ ++ --generate-docbook doc-gen \ ++ $(top_srcdir)/data/org.gnome.Shell.Screenshot.xml ++ ++# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). ++# e.g. content_files=running.sgml building.sgml changes-2.0.sgml ++content_files= \ ++ doc-gen-org.gnome.Shell.SearchProvider.xml \ ++ doc-gen-org.gnome.Shell.SearchProvider2.xml \ ++ doc-gen-org.gnome.Shell.Screenshot.xml ++ ++# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded ++# These files must be listed here *and* in content_files ++# e.g. expand_content_files=running.sgml ++expand_content_files= ++ ++# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. ++# Only needed if you are using gtkdoc-scangobj to dynamically query widget ++# signals and properties. ++# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) ++# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) ++GTKDOC_CFLAGS=$(GNOME_SHELL_CFLAGS) ++GTKDOC_LIBS=$(GNOME_SHELL_LIBS) $(top_builddir)/src/libgnome-shell-menu.la $(top_builddir)/src/libgnome-shell.la -rpath $(MUTTER_TYPELIB_DIR) ++ ++# This includes the standard gtk-doc make rules, copied by gtkdocize. ++include $(top_srcdir)/gtk-doc.make ++ ++# Other files to distribute ++# e.g. EXTRA_DIST += version.xml.in ++EXTRA_DIST += version.xml.in ++ ++# Files not to distribute ++# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types ++# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt ++DISTCLEANFILES = $(DOC_MODULE).types ++ ++# Comment this out if you want 'make check' to test you doc status ++# and run some sanity checks ++if ENABLE_GTK_DOC ++TESTS_ENVIRONMENT = cd $(srcdir) && \ ++ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ ++ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) ++#TESTS = $(GTKDOC_CHECK) ++endif ++ ++-include $(top_srcdir)/git.mk +diff --git a/docs/reference/st/Makefile.am b/docs/reference/st/Makefile.am +new file mode 100644 +index 000000000..df2d357d5 +--- /dev/null ++++ b/docs/reference/st/Makefile.am +@@ -0,0 +1,104 @@ ++## Process this file with automake to produce Makefile.in ++ ++# We require automake 1.6 at least. ++AUTOMAKE_OPTIONS = 1.6 ++ ++# This is a blank Makefile.am for using gtk-doc. ++# Copy this to your project's API docs directory and modify the variables to ++# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples ++# of using the various options. ++ ++# The name of the module, e.g. 'glib'. ++DOC_MODULE=st ++ ++# Uncomment for versioned docs and specify the version of the module, e.g. '2'. ++#DOC_MODULE_VERSION=2 ++ ++ ++# The top-level SGML file. You can change this if you want to. ++DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.sgml ++ ++# Directories containing the source code ++# gtk-doc will search all .c and .h files beneath these paths ++# for inline comments documenting functions and macros. ++DOC_SOURCE_DIR=$(top_srcdir)/src/st ++ ++# Extra options to pass to gtkdoc-scangobj. Not normally needed. ++SCANGOBJ_OPTIONS= ++ ++# Extra options to supply to gtkdoc-scan. ++# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED" ++SCAN_OPTIONS=--rebuild-types --rebuild-sections ++ ++# Extra options to supply to gtkdoc-mkdb. ++# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml ++MKDB_OPTIONS=--xml-mode --output-format=xml ++ ++# Extra options to supply to gtkdoc-mktmpl ++# e.g. MKTMPL_OPTIONS=--only-section-tmpl ++MKTMPL_OPTIONS= ++ ++# Extra options to supply to gtkdoc-mkhtml ++MKHTML_OPTIONS= ++ ++# Extra options to supply to gtkdoc-fixref. Not normally needed. ++# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html ++FIXXREF_OPTIONS= ++ ++# Used for dependencies. The docs will be rebuilt if any of these change. ++# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h ++# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c ++HFILE_GLOB=$(top_srcdir)/src/st/*.h ++CFILE_GLOB=$(top_srcdir)/src/st/*.c ++ ++# Extra header to include when scanning, which are not under DOC_SOURCE_DIR ++# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h ++EXTRA_HFILES= ++ ++# Header files or dirs to ignore when scanning. Use base file/dir names ++# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code ++IGNORE_HFILES=st-private.h st-theme-node-private.h ++ ++# Images to copy into HTML directory. ++# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png ++HTML_IMAGES= ++ ++# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE). ++# e.g. content_files=running.sgml building.sgml changes-2.0.sgml ++content_files= ++ ++# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded ++# These files must be listed here *and* in content_files ++# e.g. expand_content_files=running.sgml ++expand_content_files= ++ ++# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library. ++# Only needed if you are using gtkdoc-scangobj to dynamically query widget ++# signals and properties. ++# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS) ++# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib) ++GTKDOC_CFLAGS= ++GTKDOC_LIBS=$(top_builddir)/src/libst-1.0.la -rpath $(MUTTER_TYPELIB_DIR) ++ ++# This includes the standard gtk-doc make rules, copied by gtkdocize. ++include $(top_srcdir)/gtk-doc.make ++ ++# Other files to distribute ++# e.g. EXTRA_DIST += version.xml.in ++EXTRA_DIST += version.xml.in ++ ++# Files not to distribute ++# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types ++# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt ++DISTCLEANFILES = $(DOC_MODULE).types $(DOC_MODULE)-sections.txt ++ ++# Comment this out if you want 'make check' to test you doc status ++# and run some sanity checks ++if ENABLE_GTK_DOC ++TESTS_ENVIRONMENT = cd $(srcdir) && \ ++ DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \ ++ SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir) ++#TESTS = $(GTKDOC_CHECK) ++endif ++ ++-include $(top_srcdir)/git.mk +diff --git a/gtk-doc.make b/gtk-doc.make +new file mode 100644 +index 000000000..e4a12a5b2 +--- /dev/null ++++ b/gtk-doc.make +@@ -0,0 +1,304 @@ ++# -*- mode: makefile -*- ++ ++#################################### ++# Everything below here is generic # ++#################################### ++ ++if GTK_DOC_USE_LIBTOOL ++GTKDOC_CC = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++GTKDOC_LD = $(LIBTOOL) --tag=CC --mode=link $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) ++GTKDOC_RUN = $(LIBTOOL) --mode=execute ++else ++GTKDOC_CC = $(CC) $(INCLUDES) $(GTKDOC_DEPS_CFLAGS) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) ++GTKDOC_LD = $(CC) $(GTKDOC_DEPS_LIBS) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) ++GTKDOC_RUN = ++endif ++ ++# We set GPATH here; this gives us semantics for GNU make ++# which are more like other make's VPATH, when it comes to ++# whether a source that is a target of one rule is then ++# searched for in VPATH/GPATH. ++# ++GPATH = $(srcdir) ++ ++TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE) ++ ++SETUP_FILES = \ ++ $(content_files) \ ++ $(expand_content_files) \ ++ $(DOC_MAIN_SGML_FILE) \ ++ $(DOC_MODULE)-sections.txt \ ++ $(DOC_MODULE)-overrides.txt ++ ++EXTRA_DIST = \ ++ $(HTML_IMAGES) \ ++ $(SETUP_FILES) ++ ++DOC_STAMPS=setup-build.stamp scan-build.stamp sgml-build.stamp \ ++ html-build.stamp pdf-build.stamp \ ++ sgml.stamp html.stamp pdf.stamp ++ ++SCANOBJ_FILES = \ ++ $(DOC_MODULE).args \ ++ $(DOC_MODULE).hierarchy \ ++ $(DOC_MODULE).interfaces \ ++ $(DOC_MODULE).prerequisites \ ++ $(DOC_MODULE).signals ++ ++REPORT_FILES = \ ++ $(DOC_MODULE)-undocumented.txt \ ++ $(DOC_MODULE)-undeclared.txt \ ++ $(DOC_MODULE)-unused.txt ++ ++gtkdoc-check.test: Makefile ++ $(AM_V_GEN)echo "#!/bin/sh -e" > $@; \ ++ echo "$(GTKDOC_CHECK_PATH) || exit 1" >> $@; \ ++ chmod +x $@ ++ ++CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS) gtkdoc-check.test ++ ++if GTK_DOC_BUILD_HTML ++HTML_BUILD_STAMP=html-build.stamp ++else ++HTML_BUILD_STAMP= ++endif ++if GTK_DOC_BUILD_PDF ++PDF_BUILD_STAMP=pdf-build.stamp ++else ++PDF_BUILD_STAMP= ++endif ++ ++all-gtk-doc: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) ++.PHONY: all-gtk-doc ++ ++if ENABLE_GTK_DOC ++all-local: all-gtk-doc ++endif ++ ++docs: $(HTML_BUILD_STAMP) $(PDF_BUILD_STAMP) ++ ++$(REPORT_FILES): sgml-build.stamp ++ ++#### setup #### ++ ++GTK_DOC_V_SETUP=$(GTK_DOC_V_SETUP_$(V)) ++GTK_DOC_V_SETUP_=$(GTK_DOC_V_SETUP_$(AM_DEFAULT_VERBOSITY)) ++GTK_DOC_V_SETUP_0=@echo " DOC Preparing build"; ++ ++setup-build.stamp: ++ -$(GTK_DOC_V_SETUP)if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ ++ files=`echo $(SETUP_FILES) $(DOC_MODULE).types`; \ ++ if test "x$$files" != "x" ; then \ ++ for file in $$files ; do \ ++ destdir=`dirname $(abs_builddir)/$$file`; \ ++ test -d "$$destdir" || mkdir -p "$$destdir"; \ ++ test -f $(abs_srcdir)/$$file && \ ++ cp -pf $(abs_srcdir)/$$file $(abs_builddir)/$$file || true; \ ++ done; \ ++ fi; \ ++ fi ++ $(AM_V_at)touch setup-build.stamp ++ ++ ++#### scan #### ++ ++GTK_DOC_V_SCAN=$(GTK_DOC_V_SCAN_$(V)) ++GTK_DOC_V_SCAN_=$(GTK_DOC_V_SCAN_$(AM_DEFAULT_VERBOSITY)) ++GTK_DOC_V_SCAN_0=@echo " DOC Scanning header files"; ++ ++GTK_DOC_V_INTROSPECT=$(GTK_DOC_V_INTROSPECT_$(V)) ++GTK_DOC_V_INTROSPECT_=$(GTK_DOC_V_INTROSPECT_$(AM_DEFAULT_VERBOSITY)) ++GTK_DOC_V_INTROSPECT_0=@echo " DOC Introspecting gobjects"; ++ ++scan-build.stamp: setup-build.stamp $(HFILE_GLOB) $(CFILE_GLOB) ++ $(GTK_DOC_V_SCAN)_source_dir='' ; \ ++ for i in $(DOC_SOURCE_DIR) ; do \ ++ _source_dir="$${_source_dir} --source-dir=$$i" ; \ ++ done ; \ ++ gtkdoc-scan --module=$(DOC_MODULE) --ignore-headers="$(IGNORE_HFILES)" $${_source_dir} $(SCAN_OPTIONS) $(EXTRA_HFILES) ++ $(GTK_DOC_V_INTROSPECT)if grep -l '^..*$$' $(DOC_MODULE).types > /dev/null 2>&1 ; then \ ++ scanobj_options=""; \ ++ gtkdoc-scangobj 2>&1 --help | grep >/dev/null "\-\-verbose"; \ ++ if test "$$?" = "0"; then \ ++ if test "x$(V)" = "x1"; then \ ++ scanobj_options="--verbose"; \ ++ fi; \ ++ fi; \ ++ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" RUN="$(GTKDOC_RUN)" CFLAGS="$(GTKDOC_CFLAGS) $(CFLAGS)" LDFLAGS="$(GTKDOC_LIBS) $(LDFLAGS)" \ ++ gtkdoc-scangobj $(SCANGOBJ_OPTIONS) $$scanobj_options --module=$(DOC_MODULE); \ ++ else \ ++ for i in $(SCANOBJ_FILES) ; do \ ++ test -f $$i || touch $$i ; \ ++ done \ ++ fi ++ $(AM_V_at)touch scan-build.stamp ++ ++$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp ++ @true ++ ++#### xml #### ++ ++GTK_DOC_V_XML=$(GTK_DOC_V_XML_$(V)) ++GTK_DOC_V_XML_=$(GTK_DOC_V_XML_$(AM_DEFAULT_VERBOSITY)) ++GTK_DOC_V_XML_0=@echo " DOC Building XML"; ++ ++sgml-build.stamp: setup-build.stamp $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt $(expand_content_files) xml/gtkdocentities.ent ++ $(GTK_DOC_V_XML)_source_dir='' ; \ ++ for i in $(DOC_SOURCE_DIR) ; do \ ++ _source_dir="$${_source_dir} --source-dir=$$i" ; \ ++ done ; \ ++ gtkdoc-mkdb --module=$(DOC_MODULE) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $${_source_dir} $(MKDB_OPTIONS) ++ $(AM_V_at)touch sgml-build.stamp ++ ++sgml.stamp: sgml-build.stamp ++ @true ++ ++xml/gtkdocentities.ent: Makefile ++ $(GTK_DOC_V_XML)$(MKDIR_P) $(@D) && ( \ ++ echo ""; \ ++ echo ""; \ ++ echo ""; \ ++ echo ""; \ ++ echo ""; \ ++ echo ""; \ ++ echo ""; \ ++ ) > $@ ++ ++#### html #### ++ ++GTK_DOC_V_HTML=$(GTK_DOC_V_HTML_$(V)) ++GTK_DOC_V_HTML_=$(GTK_DOC_V_HTML_$(AM_DEFAULT_VERBOSITY)) ++GTK_DOC_V_HTML_0=@echo " DOC Building HTML"; ++ ++GTK_DOC_V_XREF=$(GTK_DOC_V_XREF_$(V)) ++GTK_DOC_V_XREF_=$(GTK_DOC_V_XREF_$(AM_DEFAULT_VERBOSITY)) ++GTK_DOC_V_XREF_0=@echo " DOC Fixing cross-references"; ++ ++html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) ++ $(GTK_DOC_V_HTML)rm -rf html && mkdir html && \ ++ mkhtml_options=""; \ ++ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-verbose"; \ ++ if test "$$?" = "0"; then \ ++ if test "x$(V)" = "x1"; then \ ++ mkhtml_options="$$mkhtml_options --verbose"; \ ++ fi; \ ++ fi; \ ++ gtkdoc-mkhtml 2>&1 --help | grep >/dev/null "\-\-path"; \ ++ if test "$$?" = "0"; then \ ++ mkhtml_options="$$mkhtml_options --path=\"$(abs_srcdir)\""; \ ++ fi; \ ++ cd html && gtkdoc-mkhtml $$mkhtml_options $(MKHTML_OPTIONS) $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE) ++ -@test "x$(HTML_IMAGES)" = "x" || \ ++ for file in $(HTML_IMAGES) ; do \ ++ if test -f $(abs_srcdir)/$$file ; then \ ++ cp $(abs_srcdir)/$$file $(abs_builddir)/html; \ ++ fi; \ ++ if test -f $(abs_builddir)/$$file ; then \ ++ cp $(abs_builddir)/$$file $(abs_builddir)/html; \ ++ fi; \ ++ done; ++ $(GTK_DOC_V_XREF)gtkdoc-fixxref --module=$(DOC_MODULE) --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS) ++ $(AM_V_at)touch html-build.stamp ++ ++#### pdf #### ++ ++GTK_DOC_V_PDF=$(GTK_DOC_V_PDF_$(V)) ++GTK_DOC_V_PDF_=$(GTK_DOC_V_PDF_$(AM_DEFAULT_VERBOSITY)) ++GTK_DOC_V_PDF_0=@echo " DOC Building PDF"; ++ ++pdf-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files) $(expand_content_files) ++ $(GTK_DOC_V_PDF)rm -f $(DOC_MODULE).pdf && \ ++ mkpdf_options=""; \ ++ gtkdoc-mkpdf 2>&1 --help | grep >/dev/null "\-\-verbose"; \ ++ if test "$$?" = "0"; then \ ++ if test "x$(V)" = "x1"; then \ ++ mkpdf_options="$$mkpdf_options --verbose"; \ ++ fi; \ ++ fi; \ ++ if test "x$(HTML_IMAGES)" != "x"; then \ ++ for img in $(HTML_IMAGES); do \ ++ part=`dirname $$img`; \ ++ echo $$mkpdf_options | grep >/dev/null "\-\-imgdir=$$part "; \ ++ if test $$? != 0; then \ ++ mkpdf_options="$$mkpdf_options --imgdir=$$part"; \ ++ fi; \ ++ done; \ ++ fi; \ ++ gtkdoc-mkpdf --path="$(abs_srcdir)" $$mkpdf_options $(DOC_MODULE) $(DOC_MAIN_SGML_FILE) $(MKPDF_OPTIONS) ++ $(AM_V_at)touch pdf-build.stamp ++ ++############## ++ ++clean-local: ++ @rm -f *~ *.bak ++ @rm -rf .libs ++ @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-types" ; then \ ++ rm -f $(DOC_MODULE).types; \ ++ fi ++ @if echo $(SCAN_OPTIONS) | grep -q "\-\-rebuild-sections" ; then \ ++ rm -f $(DOC_MODULE)-sections.txt; \ ++ fi ++ ++distclean-local: ++ @rm -rf xml html $(REPORT_FILES) $(DOC_MODULE).pdf \ ++ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt ++ @if test "$(abs_srcdir)" != "$(abs_builddir)" ; then \ ++ rm -f $(SETUP_FILES) $(DOC_MODULE).types; \ ++ fi ++ ++maintainer-clean-local: ++ @rm -rf xml html ++ ++install-data-local: ++ @installfiles=`echo $(builddir)/html/*`; \ ++ if test "$$installfiles" = '$(builddir)/html/*'; \ ++ then echo 1>&2 'Nothing to install' ; \ ++ else \ ++ if test -n "$(DOC_MODULE_VERSION)"; then \ ++ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ ++ else \ ++ installdir="$(DESTDIR)$(TARGET_DIR)"; \ ++ fi; \ ++ $(mkinstalldirs) $${installdir} ; \ ++ for i in $$installfiles; do \ ++ echo ' $(INSTALL_DATA) '$$i ; \ ++ $(INSTALL_DATA) $$i $${installdir}; \ ++ done; \ ++ if test -n "$(DOC_MODULE_VERSION)"; then \ ++ mv -f $${installdir}/$(DOC_MODULE).devhelp2 \ ++ $${installdir}/$(DOC_MODULE)-$(DOC_MODULE_VERSION).devhelp2; \ ++ fi; \ ++ $(GTKDOC_REBASE) --relative --dest-dir=$(DESTDIR) --html-dir=$${installdir}; \ ++ fi ++ ++uninstall-local: ++ @if test -n "$(DOC_MODULE_VERSION)"; then \ ++ installdir="$(DESTDIR)$(TARGET_DIR)-$(DOC_MODULE_VERSION)"; \ ++ else \ ++ installdir="$(DESTDIR)$(TARGET_DIR)"; \ ++ fi; \ ++ rm -rf $${installdir} ++ ++# ++# Require gtk-doc when making dist ++# ++if HAVE_GTK_DOC ++dist-check-gtkdoc: docs ++else ++dist-check-gtkdoc: ++ @echo "*** gtk-doc is needed to run 'make dist'. ***" ++ @echo "*** gtk-doc was not found when 'configure' ran. ***" ++ @echo "*** please install gtk-doc and rerun 'configure'. ***" ++ @false ++endif ++ ++dist-hook: dist-check-gtkdoc all-gtk-doc dist-hook-local ++ @mkdir $(distdir)/html ++ @cp ./html/* $(distdir)/html ++ @-cp ./$(DOC_MODULE).pdf $(distdir)/ ++ @-cp ./$(DOC_MODULE).types $(distdir)/ ++ @-cp ./$(DOC_MODULE)-sections.txt $(distdir)/ ++ @cd $(distdir) && rm -f $(DISTCLEANFILES) ++ @$(GTKDOC_REBASE) --online --relative --html-dir=$(distdir)/html ++ ++.PHONY : dist-hook-local docs +diff --git a/js/Makefile.am b/js/Makefile.am +new file mode 100644 +index 000000000..6369c7502 +--- /dev/null ++++ b/js/Makefile.am +@@ -0,0 +1,39 @@ ++NULL = ++BUILT_SOURCES = ++ ++misc/config.js: misc/config.js.in Makefile ++ [ -d $(@D) ] || $(mkdir_p) $(@D) ; \ ++ sed -e "s|[@]PACKAGE_NAME@|$(PACKAGE_NAME)|g" \ ++ -e "s|[@]PACKAGE_VERSION@|$(PACKAGE_VERSION)|g" \ ++ -e "s|[@]HAVE_BLUETOOTH@|$(HAVE_BLUETOOTH)|g" \ ++ -e "s|[@]HAVE_NETWORKMANAGER@|$(HAVE_NETWORKMANAGER)|g" \ ++ -e "s|[@]GETTEXT_PACKAGE@|$(GETTEXT_PACKAGE)|g" \ ++ -e "s|[@]datadir@|$(datadir)|g" \ ++ -e "s|[@]libexecdir@|$(libexecdir)|g" \ ++ -e "s|[@]sysconfdir@|$(sysconfdir)|g" \ ++ -e "s|[@]LIBMUTTER_API_VERSION@|$(LIBMUTTER_API_VERSION)|g" \ ++ $< > $@ ++ ++js_resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate-dependencies $(srcdir)/js-resources.gresource.xml) ++js-resources.h: js-resources.gresource.xml $(js_resource_files) misc/config.js ++ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate --c-name shell_js_resources $< ++js-resources.c: js-resources.gresource.xml $(js_resource_files) misc/config.js ++ $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir) --sourcedir=$(builddir) --generate --c-name shell_js_resources $< ++ ++js_built_sources = js-resources.c js-resources.h ++ ++BUILT_SOURCES += $(js_built_sources) ++ ++all-local: $(js_built_sources) ++ ++js_resource_dist_files = $(filter-out misc/config.js, $(js_resource_files)) ++ ++EXTRA_DIST = \ ++ $(js_resource_dist_files) \ ++ js-resources.gresource.xml \ ++ misc/config.js.in \ ++ $(NULL) ++ ++CLEANFILES = \ ++ $(js_built_sources) \ ++ $(NULL) +diff --git a/man/Makefile.am b/man/Makefile.am +new file mode 100644 +index 000000000..166b66cf8 +--- /dev/null ++++ b/man/Makefile.am +@@ -0,0 +1,19 @@ ++XSLTPROC_FLAGS = \ ++ --nonet \ ++ --stringparam man.output.quietly 1 \ ++ --stringparam funcsynopsis.style ansi \ ++ --stringparam man.th.extra1.suppress 1 \ ++ --stringparam man.authors.section.enabled 0 \ ++ --stringparam man.copyright.section.enabled 0 ++ ++.xml.1: ++ $(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< ++ ++man_MANS = \ ++ gnome-shell.1 ++ ++xml_files = $(man_MANS:.1=.xml) ++ ++EXTRA_DIST = $(xml_files) ++ ++DISTCLEANFILES = $(man_MANS) +diff --git a/src/Makefile.am b/src/Makefile.am +new file mode 100644 +index 000000000..24628ccc9 +--- /dev/null ++++ b/src/Makefile.am +@@ -0,0 +1,349 @@ ++NULL = ++BUILT_SOURCES = ++CLEANFILES = ++EXTRA_DIST = ++bin_SCRIPTS = ++libexec_PROGRAMS = ++noinst_LTLIBRARIES = ++noinst_PROGRAMS = ++service_in_files = ++ ++-include $(INTROSPECTION_MAKEFILE) ++INTROSPECTION_GIRS = ++INTROSPECTION_SCANNER_ARGS = --warn-all --warn-error --add-include-path=$(srcdir) --add-include-path=$(MUTTER_GIR_DIR) -L$(MUTTER_TYPELIB_DIR) ++INTROSPECTION_COMPILER_ARGS = --includedir=$(srcdir) --includedir=$(MUTTER_TYPELIB_DIR) ++ ++typelibdir = $(pkglibdir) ++typelib_DATA = $(INTROSPECTION_GIRS:.gir=.typelib) ++ ++servicedir = $(datadir)/dbus-1/services ++service_DATA = $(service_in_files:.service.in=.service) ++ ++%.service: %.service.in Makefile ++ $(AM_V_GEN) \ ++ [ -d $(@D) ] || $(mkdir_p) $(@D) ; \ ++ sed -e "s|\@libexecdir\@|$(libexecdir)|" $< > $@.tmp && mv $@.tmp $@ ++CLEANFILES += $(service_DATA) ++ ++CLEANFILES += $(gir_DATA) $(typelib_DATA) ++ ++bin_SCRIPTS += gnome-shell-extension-tool gnome-shell-perf-tool ++EXTRA_DIST += gnome-shell-extension-tool.in gnome-shell-perf-tool.in ++bin_PROGRAMS = gnome-shell gnome-shell-extension-prefs ++ ++generated_script_substitutions = \ ++ -e "s|@bindir[@]|$(bindir)|g" \ ++ -e "s|@datadir[@]|$(datadir)|g" \ ++ -e "s|@libexecdir[@]|$(libexecdir)|g" \ ++ -e "s|@libdir[@]|$(libdir)|g" \ ++ -e "s|@pkglibdir[@]|$(pkglibdir)|g" \ ++ -e "s|@pkgdatadir[@]|$(pkgdatadir)|g" \ ++ -e "s|@PYTHON[@]|$(PYTHON)|g" \ ++ -e "s|@VERSION[@]|$(VERSION)|g" \ ++ -e "s|@sysconfdir[@]|$(sysconfdir)|g" ++ ++gnome-shell-extension-tool: gnome-shell-extension-tool.in Makefile ++ $(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@ ++ ++gnome-shell-perf-tool: gnome-shell-perf-tool.in Makefile ++ $(AM_V_GEN) sed $(generated_script_substitutions) $< > $@.tmp && mv $@.tmp $@ && chmod a+x $@ ++ ++org-gtk-application.c org-gtk-application.h: org.gtk.Application.xml Makefile ++ $(AM_V_GEN) $(GDBUS_CODEGEN) \ ++ --generate-c-code org-gtk-application \ ++ --c-namespace Shell \ ++ $< ++ ++EXTRA_DIST += org.gtk.Application.xml ++CLEANFILES += gnome-shell $(bin_SCRIPTS) ++ ++include Makefile-st.am ++include Makefile-tray.am ++include Makefile-calendar-server.am ++include Makefile-hotplug-sniffer.am ++ ++gnome_shell_cflags = \ ++ $(GNOME_SHELL_CFLAGS) \ ++ -I$(srcdir)/tray \ ++ -DCLUTTER_ENABLE_EXPERIMENTAL_API \ ++ -DCOGL_ENABLE_EXPERIMENTAL_API \ ++ -DVERSION=\"$(VERSION)\" \ ++ -DLOCALEDIR=\"$(datadir)/locale\" \ ++ -DDATADIR=\"$(datadir)\" \ ++ -DGNOME_SHELL_LIBEXECDIR=\"$(libexecdir)\" \ ++ -DGNOME_SHELL_DATADIR=\"$(pkgdatadir)\" \ ++ -DGNOME_SHELL_PKGLIBDIR=\"$(pkglibdir)\" ++ ++privlibdir = $(pkglibdir) ++privlib_LTLIBRARIES = libgnome-shell-menu.la libgnome-shell.la ++ ++shell_built_sources = \ ++ org-gtk-application.h \ ++ org-gtk-application.c \ ++ shell-enum-types.h \ ++ shell-enum-types.c ++ ++BUILT_SOURCES += $(shell_built_sources) ++ ++shell_public_headers_h = \ ++ shell-app.h \ ++ shell-app-system.h \ ++ shell-app-usage.h \ ++ shell-embedded-window.h \ ++ shell-generic-container.h \ ++ shell-glsl-quad.h \ ++ shell-gtk-embed.h \ ++ shell-global.h \ ++ shell-invert-lightness-effect.h \ ++ shell-action-modes.h \ ++ shell-mount-operation.h \ ++ shell-perf-log.h \ ++ shell-screenshot.h \ ++ shell-stack.h \ ++ shell-tray-icon.h \ ++ shell-tray-manager.h \ ++ shell-util.h \ ++ shell-window-tracker.h \ ++ shell-wm.h \ ++ $(NULL) ++ ++if HAVE_NETWORKMANAGER ++shell_public_headers_h += shell-network-agent.h ++endif ++ ++libgnome_shell_menu_la_SOURCES = \ ++ gtkactionmuxer.h \ ++ gtkactionmuxer.c \ ++ gtkactionobservable.h \ ++ gtkactionobservable.c \ ++ gtkactionobserver.h \ ++ gtkactionobserver.c \ ++ gtkmenutrackeritem.c \ ++ gtkmenutrackeritem.h \ ++ gtkmenutracker.c \ ++ gtkmenutracker.h \ ++ $(NULL) ++ ++libgnome_shell_sources = \ ++ $(shell_public_headers_h) \ ++ $(shell_private_sources) \ ++ gnome-shell-plugin.c \ ++ shell-app.c \ ++ shell-app-private.h \ ++ shell-app-system.c \ ++ shell-app-system-private.h \ ++ shell-app-usage.c \ ++ shell-embedded-window-private.h \ ++ shell-embedded-window.c \ ++ shell-generic-container.c \ ++ shell-global.c \ ++ shell-global-private.h \ ++ shell-glsl-quad.c \ ++ shell-gtk-embed.c \ ++ shell-invert-lightness-effect.c \ ++ shell-keyring-prompt.h \ ++ shell-keyring-prompt.c \ ++ shell-menu-tracker.c \ ++ shell-menu-tracker.h \ ++ shell-mount-operation.c \ ++ shell-perf-log.c \ ++ shell-polkit-authentication-agent.h \ ++ shell-polkit-authentication-agent.c \ ++ shell-screenshot.c \ ++ shell-secure-text-buffer.c \ ++ shell-secure-text-buffer.h \ ++ shell-stack.c \ ++ shell-tray-icon.c \ ++ shell-tray-manager.c \ ++ shell-util.c \ ++ shell-window-tracker.c \ ++ shell-window-tracker-private.h \ ++ shell-wm.c \ ++ shell-wm-private.h \ ++ $(NULL) ++ ++if HAVE_NETWORKMANAGER ++libgnome_shell_sources += shell-network-agent.c ++endif ++ ++ ++libgnome_shell_built_sources = \ ++ $(shell_built_sources) \ ++ $(top_builddir)/js/js-resources.c \ ++ $(top_builddir)/js/js-resources.h \ ++ $(NULL) ++ ++libgnome_shell_la_SOURCES = $(libgnome_shell_sources) ++nodist_libgnome_shell_la_SOURCES = $(libgnome_shell_built_sources) ++ ++shell_no_gir_sources = \ ++ org-gtk-application.h \ ++ org-gtk-application.c ++ ++libgnome_shell_la_gir_sources = \ ++ $(filter-out %-private.h $(shell_private_sources) $(shell_no_gir_sources), $(shell_public_headers_h) $(libgnome_shell_sources) $(libgnome_shell_built_sources)) ++ ++gnome_shell_SOURCES = main.c ++gnome_shell_CPPFLAGS = \ ++ -DMUTTER_TYPELIB_DIR=\"$(MUTTER_TYPELIB_DIR)\" \ ++ $(MUTTER_CFLAGS) \ ++ $(gnome_shell_cflags) ++ ++# Here, and after, we repeat mutter and bluetooth libraries just for the rpath ++# The dependency is already pulled in by libtool ++gnome_shell_LDADD = libgnome-shell.la $(GNOME_SHELL_LIBS) $(MUTTER_LIBS) ++gnome_shell_LDFLAGS = -rpath $(MUTTER_TYPELIB_DIR) ++gnome_shell_DEPENDENCIES = libgnome-shell.la ++ ++gnome_shell_extension_prefs_SOURCES = \ ++ gnome-shell-extension-prefs.c \ ++ $(NULL) ++nodist_gnome_shell_extension_prefs_SOURCES = \ ++ $(top_builddir)/js/js-resources.c \ ++ $(top_builddir)/js/js-resources.h \ ++ $(NULL) ++gnome_shell_extension_prefs_CPPFLAGS = $(gnome_shell_cflags) ++gnome_shell_extension_prefs_LDADD = $(GNOME_SHELL_LIBS) ++gnome_shell_extension_prefs_LDFLAGS = -rpath $(MUTTER_TYPELIB_DIR) ++ ++if HAVE_NETWORKMANAGER ++ ++libexec_PROGRAMS += gnome-shell-portal-helper ++gnome_shell_portal_helper_SOURCES = \ ++ gnome-shell-portal-helper.c \ ++ $(NULL) ++nodist_gnome_shell_portal_helper_SOURCES = \ ++ $(top_builddir)/js/js-resources.c \ ++ $(top_builddir)/js/js-resources.h \ ++ $(NULL) ++gnome_shell_portal_helper_CPPFLAGS = $(gnome_shell_cflags) ++gnome_shell_portal_helper_LDADD = $(GNOME_SHELL_LIBS) ++gnome_shell_portal_helper_LDFLAGS = -rpath $(MUTTER_TYPELIB_DIR) ++ ++endif ++ ++######################################## ++ ++shell_recorder_sources = \ ++ shell-recorder.c \ ++ shell-recorder.h ++ ++# Custom element is an internal detail ++ ++if BUILD_RECORDER ++libgnome_shell_sources += $(shell_recorder_sources) ++ ++shell_recorder_private_sources = \ ++ shell-recorder-src.c \ ++ shell-recorder-src.h \ ++ $(NULL) ++ ++shell_private_sources = $(shell_recorder_private_sources) ++ ++endif BUILD_RECORDER ++ ++######################################## ++ ++libexec_PROGRAMS += gnome-shell-perf-helper ++ ++gnome_shell_perf_helper_SOURCES = shell-perf-helper.c ++gnome_shell_perf_helper_CPPFLAGS = $(SHELL_PERF_HELPER_CFLAGS) ++gnome_shell_perf_helper_LDADD = $(SHELL_PERF_HELPER_LIBS) -lm ++ ++######################################## ++ ++noinst_PROGRAMS += run-js-test ++ ++run_js_test_CPPFLAGS = $(MUTTER_CFLAGS) $(gnome_shell_cflags) ++run_js_test_LDADD = libgnome-shell.la $(GNOME_SHELL_JS_LIBS) $(MUTTER_LIBS) ++run_js_test_LDFLAGS = -export-dynamic -rpath $(MUTTER_TYPELIB_DIR) ++ ++run_js_test_SOURCES = \ ++ run-js-test.c ++ ++######################################## ++ ++shell-enum-types.h: stamp-shell-enum-types.h Makefile ++ @true ++stamp-shell-enum-types.h: $(srcdir)/shell-enum-types.h.in $(shell_public_headers_h) ++ $(AM_V_GEN) ( \ ++ $(GLIB_MKENUMS) \ ++ --template $< \ ++ $(addprefix $(srcdir)/,$(shell_public_headers_h)) ) > $(@F).tmp && \ ++ (cmp -s $(@F).tmp shell-enum-types.h || mv $(@F).tmp shell-enum-types.h) && \ ++ rm -f $(@F).tmp && \ ++ echo timestamp > $(@F) ++EXTRA_DIST += shell-enum-types.h.in ++CLEANFILES += stamp-shell-enum-types.h ++ ++shell-enum-types.c: $(srcdir)/shell-enum-types.c.in stamp-shell-enum-types.h ++ $(AM_V_GEN) ( \ ++ $(GLIB_MKENUMS) \ ++ --template $< \ ++ $(addprefix $(srcdir)/,$(shell_public_headers_h)) ) > $(@F).tmp && \ ++ mv $(@F).tmp $(@F) && \ ++ rm -f $(@F).tmp ++EXTRA_DIST += shell-enum-types.c.in ++ ++gvcdir = $(top_builddir)/subprojects/gvc ++ ++libgnome_shell_ldflags = -avoid-version ++libgnome_shell_libadd = \ ++ -lm \ ++ $(GNOME_SHELL_LIBS) \ ++ libgnome-shell-menu.la \ ++ libst-1.0.la \ ++ libtray.la \ ++ $(gvcdir)/libgvc.la \ ++ $(NULL) ++ ++libgnome_shell_menu_la_LDFLAGS = $(libgnome_shell_ldflags) ++libgnome_shell_menu_la_LIBADD = $(GNOME_SHELL_LIBS) ++libgnome_shell_menu_la_CPPFLAGS = $(GNOME_SHELL_CFLAGS) ++ ++libgnome_shell_la_LDFLAGS = $(libgnome_shell_ldflags) ++libgnome_shell_la_LIBADD = $(GNOME_SHELL_LIBS) $(MUTTER_LIBS) $(libgnome_shell_libadd) ++libgnome_shell_la_CPPFLAGS = $(MUTTER_CFLAGS) $(gnome_shell_cflags) ++ ++ShellMenu-0.1.gir: libgnome-shell-menu.la ++ShellMenu_0_1_gir_INCLUDES = Gio-2.0 ++ShellMenu_0_1_gir_CFLAGS = $(libgnome_shell_menu_la_CPPFLAGS) -I $(srcdir) ++ShellMenu_0_1_gir_LIBS = libgnome-shell-menu.la ++ShellMenu_0_1_gir_FILES = \ ++ gtkactionmuxer.h \ ++ gtkactionmuxer.c \ ++ gtkactionobservable.h \ ++ gtkactionobservable.c \ ++ gtkactionobserver.h \ ++ gtkactionobserver.c \ ++ gtkmenutrackeritem.c \ ++ gtkmenutrackeritem.h \ ++ $(NULL) ++ShellMenu_0_1_gir_SCANNERFLAGS = \ ++ --namespace=ShellMenu --identifier-prefix=Gtk ++INTROSPECTION_GIRS += ShellMenu-0.1.gir ++CLEANFILES += ShellMenu-0.1.gir ++ ++Shell-0.1.gir: gnome-shell St-1.0.gir ShellMenu-0.1.gir ++Shell_0_1_gir_INCLUDES = Clutter-$(LIBMUTTER_API_VERSION) ClutterX11-$(LIBMUTTER_API_VERSION) Meta-$(LIBMUTTER_API_VERSION) Soup-2.4 ++if HAVE_NETWORKMANAGER ++Shell_0_1_gir_INCLUDES += NetworkManager-1.0 NMClient-1.0 ++endif ++Shell_0_1_gir_CFLAGS = $(libgnome_shell_la_CPPFLAGS) -I $(srcdir) ++Shell_0_1_gir_LIBS = libgnome-shell.la ++Shell_0_1_gir_FILES = $(libgnome_shell_la_gir_sources) ++Shell_0_1_gir_SCANNERFLAGS = \ ++ --include-uninstalled=$(builddir)/St-1.0.gir \ ++ --include-uninstalled=$(builddir)/ShellMenu-0.1.gir \ ++ --add-include-path=$(MUTTER_GIR_DIR) ++INTROSPECTION_GIRS += Shell-0.1.gir ++CLEANFILES += Shell-0.1.gir ++ ++St-1.0.gir: libst-1.0.la ++St_1_0_gir_INCLUDES = Clutter-$(LIBMUTTER_API_VERSION) Gtk-3.0 ++St_1_0_gir_CFLAGS = $(st_cflags) -DST_COMPILATION ++St_1_0_gir_LIBS = libst-1.0.la ++St_1_0_gir_FILES = $(filter-out %-private.h $(st_non_gir_sources), $(addprefix $(srcdir)/,$(st_source_h))) \ ++ $(addprefix $(srcdir)/,$(st_source_c)) ++INTROSPECTION_GIRS += St-1.0.gir ++CLEANFILES += St-1.0.gir +diff --git a/tests/Makefile.am b/tests/Makefile.am +new file mode 100644 +index 000000000..22ef81d30 +--- /dev/null ++++ b/tests/Makefile.am +@@ -0,0 +1,45 @@ ++noinst_SCRIPTS = run-test.sh ++EXTRA_DIST = run-test.sh.in ++ ++TEST_JS = \ ++ interactive/background-repeat.js \ ++ interactive/background-size.js \ ++ interactive/borders.js \ ++ interactive/border-radius.js \ ++ interactive/border-width.js \ ++ interactive/box-layout.js \ ++ interactive/box-shadow-animated.js \ ++ interactive/box-shadows.js \ ++ interactive/calendar.js \ ++ interactive/css-fonts.js \ ++ interactive/entry.js \ ++ interactive/gapplication.js \ ++ interactive/icons.js \ ++ interactive/inline-style.js \ ++ interactive/scrolling.js \ ++ interactive/scroll-view-sizing.js \ ++ interactive/test-title.js \ ++ interactive/transitions.js \ ++ testcommon/100-200.svg \ ++ testcommon/200-100.svg \ ++ testcommon/200-200.svg \ ++ testcommon/border-image.png \ ++ testcommon/face-plain.png \ ++ testcommon/ui.js \ ++ unit/insertSorted.js \ ++ unit/markup.js \ ++ unit/jsParse.js \ ++ unit/url.js ++EXTRA_DIST += $(TEST_JS) ++ ++TEST_MISC = \ ++ testcommon/test.css ++EXTRA_DIST += $(TEST_MISC) ++ ++run-test.sh: run-test.sh.in ++ $(AM_V_GEN) sed \ ++ -e "s|@MUTTER_TYPELIB_DIR[@]|$(MUTTER_TYPELIB_DIR)|" \ ++ -e "s|@srcdir[@]|$(srcdir)|" \ ++ $< > $@ && chmod a+x $@ ++ ++CLEANFILES = run-test.sh +-- +2.13.5 + diff --git a/SOURCES/0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch b/SOURCES/0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch new file mode 100644 index 0000000..9b1d19d --- /dev/null +++ b/SOURCES/0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch @@ -0,0 +1,28 @@ +From 4104864c0e6e9e39e09353d86a67668109abe272 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Wed, 20 May 2015 16:44:00 +0200 +Subject: [PATCH] app: Fall back to window title instead of WM_CLASS + +It's a bad fallback as it's clearly window-specific (rather than +app-specific), but it likely looks prettier when we fail to associate +a .desktop file ... +--- + src/shell-app.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/shell-app.c b/src/shell-app.c +index dbf537ce9..84fcc97bf 100644 +--- a/src/shell-app.c ++++ b/src/shell-app.c +@@ -265,7 +265,7 @@ shell_app_get_name (ShellApp *app) + const char *name = NULL; + + if (window) +- name = meta_window_get_wm_class (window); ++ name = meta_window_get_title (window); + if (!name) + name = C_("program", "Unknown"); + return name; +-- +2.14.2 + diff --git a/SOURCES/0001-data-install-process-working.svg-to-filesystem.patch b/SOURCES/0001-data-install-process-working.svg-to-filesystem.patch new file mode 100644 index 0000000..d679b3a --- /dev/null +++ b/SOURCES/0001-data-install-process-working.svg-to-filesystem.patch @@ -0,0 +1,28 @@ +From fa1ec00431d9c0b1592e1b7c56784ef8d8c26a98 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 8 Jun 2017 12:04:31 -0400 +Subject: [PATCH] data: install process-working.svg to filesystem + +This helps prevent unlock failure on inplace upgrades between +7.3 and 7.4 +--- + data/Makefile.am | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/data/Makefile.am b/data/Makefile.am +index 8c01e49d1..f9c198c1c 100644 +--- a/data/Makefile.am ++++ b/data/Makefile.am +@@ -73,6 +73,9 @@ dist_theme_files = \ + $(SASSC) -a $< $@; \ + fi + ++themedir = $(pkgdatadir)/theme ++dist_theme_DATA = theme/process-working.svg ++ + resource_files = $(shell $(GLIB_COMPILE_RESOURCES) --sourcedir=$(srcdir)/theme --generate-dependencies $(srcdir)/gnome-shell-theme.gresource.xml) + gnome-shell-theme.gresource: gnome-shell-theme.gresource.xml $(resource_files) + $(AM_V_GEN) $(GLIB_COMPILE_RESOURCES) --target=$@ --sourcedir=$(srcdir)/theme $< +-- +2.14.2 + diff --git a/SOURCES/0001-extensionSystem-Notify-about-extension-issues-on-upd.patch b/SOURCES/0001-extensionSystem-Notify-about-extension-issues-on-upd.patch new file mode 100644 index 0000000..43c074a --- /dev/null +++ b/SOURCES/0001-extensionSystem-Notify-about-extension-issues-on-upd.patch @@ -0,0 +1,69 @@ +From b3132648a9a15b9c151bde6733cb0c252dac6a25 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Mon, 21 Sep 2015 20:18:12 +0200 +Subject: [PATCH] extensionSystem: Notify about extension issues on update + +--- + js/ui/extensionSystem.js | 32 ++++++++++++++++++++++++++++++++ + 1 file changed, 32 insertions(+) + +diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js +index c2a11b8a5..5e78618c4 100644 +--- a/js/ui/extensionSystem.js ++++ b/js/ui/extensionSystem.js +@@ -7,6 +7,7 @@ const GLib = imports.gi.GLib; + const Gio = imports.gi.Gio; + const St = imports.gi.St; + ++const Config = imports.misc.config; + const ExtensionUtils = imports.misc.extensionUtils; + const Main = imports.ui.main; + +@@ -306,6 +307,36 @@ function _onVersionValidationChanged() { + } + } + ++function _doUpdateCheck() { ++ let version = Config.PACKAGE_VERSION.split('.'); ++ if (parseInt(version[1]) % 2 == 0) ++ version.pop(); ++ ++ let pkgCacheDir = GLib.get_user_cache_dir() + '/gnome-shell/'; ++ let updateStamp = Gio.file_new_for_path(pkgCacheDir + ++ 'update-check-' + version.join('.')); ++ if (updateStamp.query_exists(null)) ++ return; ++ ++ GLib.mkdir_with_parents (pkgCacheDir, 0o755); ++ updateStamp.create(0, null).close(null); ++ ++ let nOutdated = enabledExtensions.reduce(function(n, uuid) { ++ let extension = ExtensionUtils.extensions[uuid]; ++ if (extension && extension.state == ExtensionState.OUT_OF_DATE) ++ n++; ++ return n; ++ }, 0); ++ ++ if (nOutdated == 0) ++ return; ++ ++ Main.notify(ngettext("%d extension is out of date", ++ "%d extensions are out of date", ++ nOutdated).format(nOutdated), ++ _("You can visit http://extensions.gnome.org for updates")); ++} ++ + function _loadExtensions() { + global.settings.connect('changed::' + ENABLED_EXTENSIONS_KEY, onEnabledExtensionsChanged); + global.settings.connect('changed::' + DISABLE_USER_EXTENSIONS_KEY, onEnabledExtensionsChanged); +@@ -320,6 +351,7 @@ function _loadExtensions() { + extension.type = ExtensionUtils.ExtensionType.SESSION_MODE; + }); + finder.scanExtensions(); ++ _doUpdateCheck(); + } + + function enableAllExtensions() { +-- +2.14.2 + diff --git a/SOURCES/0001-extensions-Add-a-SESSION_MODE-extension-type.patch b/SOURCES/0001-extensions-Add-a-SESSION_MODE-extension-type.patch new file mode 100644 index 0000000..2aeccd0 --- /dev/null +++ b/SOURCES/0001-extensions-Add-a-SESSION_MODE-extension-type.patch @@ -0,0 +1,42 @@ +From 446b7a65536ea60b75f1ec705cd8fa287fda968e Mon Sep 17 00:00:00 2001 +From: Rui Matos +Date: Fri, 8 Nov 2013 13:58:09 +0100 +Subject: [PATCH] extensions: Add a SESSION_MODE extension type + +This allows e.g. gnome-tweak-tool to present these extensions in a +different way since they can't be disabled. +--- + js/misc/extensionUtils.js | 3 ++- + js/ui/extensionSystem.js | 2 ++ + 2 files changed, 4 insertions(+), 1 deletion(-) + +diff --git a/js/misc/extensionUtils.js b/js/misc/extensionUtils.js +index ca02582c9..3eea38565 100644 +--- a/js/misc/extensionUtils.js ++++ b/js/misc/extensionUtils.js +@@ -13,7 +13,8 @@ const FileUtils = imports.misc.fileUtils; + + var ExtensionType = { + SYSTEM: 1, +- PER_USER: 2 ++ PER_USER: 2, ++ SESSION_MODE: 3 + }; + + // Maps uuid -> metadata object +diff --git a/js/ui/extensionSystem.js b/js/ui/extensionSystem.js +index 51ce234c2..c2a11b8a5 100644 +--- a/js/ui/extensionSystem.js ++++ b/js/ui/extensionSystem.js +@@ -316,6 +316,8 @@ function _loadExtensions() { + let finder = new ExtensionUtils.ExtensionFinder(); + finder.connect('extension-found', function(finder, extension) { + loadExtension(extension); ++ if (Main.sessionMode.enabledExtensions.indexOf(extension.uuid) != -1) ++ extension.type = ExtensionUtils.ExtensionType.SESSION_MODE; + }); + finder.scanExtensions(); + } +-- +2.14.2 + diff --git a/SOURCES/0001-gdm-add-AuthList-control.patch b/SOURCES/0001-gdm-add-AuthList-control.patch new file mode 100644 index 0000000..44e3586 --- /dev/null +++ b/SOURCES/0001-gdm-add-AuthList-control.patch @@ -0,0 +1,240 @@ +From 356171d85579d27da3180fd78ffb353f23c9073f Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Tue, 18 Jul 2017 12:58:14 -0400 +Subject: [PATCH 1/2] gdm: add AuthList control + +Ultimately, we want to add support for GDM's new ChoiceList +PAM extension. That extension allows PAM modules to present +a list of choices to the user. Before we can support that +extension, however, we need to have a list control in the +login-screen/unlock screen. This commit adds that control. + +For the most part, it's a copy-and-paste of the gdm userlist, +but with less features. It lacks API specific to the users, +lacks the built in timed login indicator, etc. It does feature +a label heading. +--- + js/gdm/authList.js | 198 ++++++++++++++++++++++++++++++++++++++++++ + js/js-resources.gresource.xml | 1 + + 2 files changed, 199 insertions(+) + create mode 100644 js/gdm/authList.js + +diff --git a/js/gdm/authList.js b/js/gdm/authList.js +new file mode 100644 +index 000000000..893e35075 +--- /dev/null ++++ b/js/gdm/authList.js +@@ -0,0 +1,198 @@ ++// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- ++/* ++ * Copyright 2017 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, 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, see . ++ */ ++ ++const Clutter = imports.gi.Clutter; ++const GObject = imports.gi.GObject; ++const Gtk = imports.gi.Gtk; ++const Lang = imports.lang; ++const Meta = imports.gi.Meta; ++const Signals = imports.signals; ++const St = imports.gi.St; ++ ++const Tweener = imports.ui.tweener; ++ ++const _SCROLL_ANIMATION_TIME = 0.5; ++ ++const AuthListItem = new Lang.Class({ ++ Name: 'AuthListItem', ++ ++ _init: function(key, text) { ++ this.key = key; ++ let label = new St.Label({ style_class: 'auth-list-item-label', ++ y_align: Clutter.ActorAlign.CENTER }); ++ label.text = text; ++ ++ this.actor = new St.Button({ style_class: 'login-dialog-user-list-item', ++ button_mask: St.ButtonMask.ONE | St.ButtonMask.THREE, ++ can_focus: true, ++ child: label, ++ reactive: true, ++ x_align: St.Align.START, ++ x_fill: true }); ++ ++ this.actor.connect('key-focus-in', () => { ++ this._setSelected(true); ++ }); ++ this.actor.connect('key-focus-out', () => { ++ this._setSelected(false); ++ }); ++ this.actor.connect('notify::hover', () => { ++ this._setSelected(this.actor.hover); ++ }); ++ ++ this.actor.connect('clicked', Lang.bind(this, this._onClicked)); ++ }, ++ ++ _onClicked: function() { ++ this.emit('activate'); ++ }, ++ ++ _setSelected: function(selected) { ++ if (selected) { ++ this.actor.add_style_pseudo_class('selected'); ++ this.actor.grab_key_focus(); ++ } else { ++ this.actor.remove_style_pseudo_class('selected'); ++ } ++ } ++}); ++Signals.addSignalMethods(AuthListItem.prototype); ++ ++const AuthList = new Lang.Class({ ++ Name: 'AuthList', ++ ++ _init: function() { ++ this.actor = new St.BoxLayout({ vertical: true, ++ style_class: 'login-dialog-auth-list-layout' }); ++ ++ this.label = new St.Label({ style_class: 'prompt-dialog-headline' }); ++ this.actor.add_actor(this.label); ++ ++ this._scrollView = new St.ScrollView({ style_class: 'login-dialog-user-list-view'}); ++ this._scrollView.set_policy(Gtk.PolicyType.NEVER, ++ Gtk.PolicyType.AUTOMATIC); ++ this.actor.add_actor(this._scrollView); ++ ++ this._box = new St.BoxLayout({ vertical: true, ++ style_class: 'login-dialog-user-list', ++ pseudo_class: 'expanded' }); ++ ++ this._scrollView.add_actor(this._box); ++ this._items = {}; ++ ++ this.actor.connect('key-focus-in', Lang.bind(this, this._moveFocusToItems)); ++ }, ++ ++ _moveFocusToItems: function() { ++ let hasItems = Object.keys(this._items).length > 0; ++ ++ if (!hasItems) ++ return; ++ ++ if (global.stage.get_key_focus() != this.actor) ++ return; ++ ++ let focusSet = this.actor.navigate_focus(null, Gtk.DirectionType.TAB_FORWARD, false); ++ if (!focusSet) { ++ Meta.later_add(Meta.LaterType.BEFORE_REDRAW, Lang.bind(this, function() { ++ this._moveFocusToItems(); ++ return false; ++ })); ++ } ++ }, ++ ++ _onItemActivated: function(activatedItem) { ++ this.emit('activate', activatedItem.key); ++ }, ++ ++ scrollToItem: function(item) { ++ let box = item.actor.get_allocation_box(); ++ ++ let adjustment = this._scrollView.get_vscroll_bar().get_adjustment(); ++ ++ let value = (box.y1 + adjustment.step_increment / 2.0) - (adjustment.page_size / 2.0); ++ Tweener.removeTweens(adjustment); ++ Tweener.addTween (adjustment, ++ { value: value, ++ time: _SCROLL_ANIMATION_TIME, ++ transition: 'easeOutQuad' }); ++ }, ++ ++ jumpToItem: function(item) { ++ let box = item.actor.get_allocation_box(); ++ ++ let adjustment = this._scrollView.get_vscroll_bar().get_adjustment(); ++ ++ let value = (box.y1 + adjustment.step_increment / 2.0) - (adjustment.page_size / 2.0); ++ ++ adjustment.set_value(value); ++ }, ++ ++ getItem: function(key) { ++ let item = this._items[key]; ++ ++ if (!item) ++ return null; ++ ++ return item; ++ }, ++ ++ addItem: function(key, text) { ++ this.removeItem(key); ++ ++ let item = new AuthListItem(key, text); ++ this._box.add(item.actor, { x_fill: true }); ++ ++ this._items[key] = item; ++ ++ item.connect('activate', ++ Lang.bind(this, this._onItemActivated)); ++ ++ // Try to keep the focused item front-and-center ++ item.actor.connect('key-focus-in', ++ Lang.bind(this, ++ function() { ++ this.scrollToItem(item); ++ })); ++ ++ this._moveFocusToItems(); ++ ++ this.emit('item-added', item); ++ }, ++ ++ removeItem: function(key) { ++ let item = this._items[key]; ++ ++ if (!item) ++ return; ++ ++ item.actor.destroy(); ++ delete this._items[key]; ++ }, ++ ++ numItems: function() { ++ return Object.keys(this._items).length; ++ }, ++ ++ clear: function() { ++ this.label.text = ""; ++ this._box.destroy_all_children(); ++ this._items = {}; ++ } ++}); ++Signals.addSignalMethods(AuthList.prototype); +diff --git a/js/js-resources.gresource.xml b/js/js-resources.gresource.xml +index 7a5c8ca6f..c0a80f564 100644 +--- a/js/js-resources.gresource.xml ++++ b/js/js-resources.gresource.xml +@@ -1,6 +1,7 @@ + + + ++ gdm/authList.js + gdm/authPrompt.js + gdm/batch.js + gdm/fingerprint.js +-- +2.14.2 + diff --git a/SOURCES/0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch b/SOURCES/0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch new file mode 100644 index 0000000..96c9a7f --- /dev/null +++ b/SOURCES/0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch @@ -0,0 +1,71 @@ +From 7f2d3668cf8c7a6b8aaab2c52f7e67ab01e5ba4d Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Tue, 18 Aug 2015 12:02:17 -0400 +Subject: [PATCH] gdm: honor timed login delay even if animations disabled + +gnome-shell currently initiates an automatic login attempt if +timed login is enabled and the timed login animation completes. + +Unfortunately, if animations are disabled (as is the case for +virtual machines) then the timed login animation will complete +instantly, and timed login will proceed immediately after gnome-shell +has noticed the user is idle for 5 seconds. + +This commit addresses that problem by initiating timed login and the +animation from a main loop timeout, instead of using the tweener api. +--- + js/gdm/loginDialog.js | 37 +++++++++++++++++++++++++++---------- + 1 file changed, 27 insertions(+), 10 deletions(-) + +diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js +index 1cae3db85..c1262b1e8 100644 +--- a/js/gdm/loginDialog.js ++++ b/js/gdm/loginDialog.js +@@ -126,20 +126,34 @@ var UserListItem = new Lang.Class({ + let hold = new Batch.Hold(); + + this.hideTimedLoginIndicator(); +- Tweener.addTween(this._timedLoginIndicator, +- { scale_x: 1., +- time: time, +- transition: 'linear', +- onComplete: function() { +- hold.release(); +- }, +- onCompleteScope: this +- }); ++ ++ let startTime = GLib.get_monotonic_time(); ++ ++ this._timedLoginTimeoutId = GLib.timeout_add (GLib.PRIORITY_DEFAULT, ++ 33, ++ Lang.bind(this, function() { ++ let currentTime = GLib.get_monotonic_time(); ++ let elapsedTime = (currentTime - startTime) / GLib.USEC_PER_SEC; ++ this._timedLoginIndicator.scale_x = elapsedTime / time; ++ if (elapsedTime >= time) { ++ this._timedLoginTimeoutId = 0; ++ hold.release(); ++ return GLib.SOURCE_REMOVE; ++ } ++ ++ return GLib.SOURCE_CONTINUE; ++ })); ++ ++ GLib.Source.set_name_by_id(this._timedLoginTimeoutId, '[gnome-shell] this._timedLoginTimeoutId'); ++ + return hold; + }, + + hideTimedLoginIndicator: function() { +- Tweener.removeTweens(this._timedLoginIndicator); ++ if (this._timedLoginTimeoutId) { ++ GLib.source_remove(this._timedLoginTimeoutId); ++ this._timedLoginTimeoutId = 0; ++ } + this._timedLoginIndicator.scale_x = 0.; + } + }); +-- +2.14.2 + diff --git a/SOURCES/0001-gdm-use-password-authentication-if-all-schemes-are-d.patch b/SOURCES/0001-gdm-use-password-authentication-if-all-schemes-are-d.patch new file mode 100644 index 0000000..1d0d2f4 --- /dev/null +++ b/SOURCES/0001-gdm-use-password-authentication-if-all-schemes-are-d.patch @@ -0,0 +1,29 @@ +From 345ddfb8456eb3fe8e32ab55d4d3a746d15ae4e0 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 1 Jul 2015 11:18:44 -0400 +Subject: [PATCH] gdm: use password authentication if all schemes are disabled + +This prevents a traceback, at least. +--- + js/gdm/util.js | 5 +++++ + 1 file changed, 5 insertions(+) + +diff --git a/js/gdm/util.js b/js/gdm/util.js +index b594da4fd..bae46bfe0 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -419,6 +419,11 @@ var ShellUserVerifier = new Lang.Class({ + this._defaultService = SMARTCARD_SERVICE_NAME; + else if (this._haveFingerprintReader) + this._defaultService = FINGERPRINT_SERVICE_NAME; ++ ++ if (!this._defaultService) { ++ log("no authentication service is enabled, using password authentication"); ++ this._defaultService = PASSWORD_SERVICE_NAME; ++ } + }, + + _startService: function(serviceName) { +-- +2.14.2 + diff --git a/SOURCES/0001-global-Allow-overriding-the-override-schema.patch b/SOURCES/0001-global-Allow-overriding-the-override-schema.patch new file mode 100644 index 0000000..0889d0e --- /dev/null +++ b/SOURCES/0001-global-Allow-overriding-the-override-schema.patch @@ -0,0 +1,115 @@ +From c2a8239044f350a6548e0e8314b4f40b49a726b2 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Wed, 11 Oct 2017 00:36:18 +0200 +Subject: [PATCH] global: Allow overriding the override schema + +--- + src/main.c | 11 ++++++++++- + src/shell-global.c | 20 +++++++++++++++++++- + 2 files changed, 29 insertions(+), 2 deletions(-) + +diff --git a/src/main.c b/src/main.c +index 9a89aa4d6..085399b68 100644 +--- a/src/main.c ++++ b/src/main.c +@@ -39,6 +39,7 @@ extern GType gnome_shell_plugin_get_type (void); + static gboolean is_gdm_mode = FALSE; + static char *session_mode = NULL; + static int caught_signal = 0; ++static char *override_schema = NULL; + + #define DBUS_REQUEST_NAME_REPLY_PRIMARY_OWNER 1 + #define DBUS_REQUEST_NAME_REPLY_ALREADY_OWNER 4 +@@ -455,6 +456,12 @@ GOptionEntry gnome_shell_options[] = { + N_("List possible modes"), + NULL + }, ++ { ++ "override-schema", 0, 0, G_OPTION_ARG_STRING, ++ &override_schema, ++ N_("Override the override schema"), ++ "SCHEMA" ++ }, + { NULL } + }; + +@@ -512,7 +519,9 @@ main (int argc, char **argv) + if (session_mode == NULL) + session_mode = is_gdm_mode ? (char *)"gdm" : (char *)"user"; + +- _shell_global_init ("session-mode", session_mode, NULL); ++ _shell_global_init ("session-mode", session_mode, ++ "override-schema", override_schema, ++ NULL); + + shell_prefs_init (); + +diff --git a/src/shell-global.c b/src/shell-global.c +index 855f6257c..181dbb825 100644 +--- a/src/shell-global.c ++++ b/src/shell-global.c +@@ -67,6 +67,7 @@ struct _ShellGlobal { + GdkScreen *gdk_screen; + + char *session_mode; ++ char *override_schema; + + XserverRegion input_region; + +@@ -98,6 +99,7 @@ enum { + PROP_0, + + PROP_SESSION_MODE, ++ PROP_OVERRIDE_SCHEMA, + PROP_SCREEN, + PROP_GDK_SCREEN, + PROP_DISPLAY, +@@ -141,6 +143,10 @@ shell_global_set_property(GObject *object, + g_clear_pointer (&global->session_mode, g_free); + global->session_mode = g_ascii_strdown (g_value_get_string (value), -1); + break; ++ case PROP_OVERRIDE_SCHEMA: ++ g_clear_pointer (&global->override_schema, g_free); ++ global->override_schema = g_value_dup_string (value); ++ break; + case PROP_FRAME_TIMESTAMPS: + global->frame_timestamps = g_value_get_boolean (value); + break; +@@ -166,6 +172,9 @@ shell_global_get_property(GObject *object, + case PROP_SESSION_MODE: + g_value_set_string (value, shell_global_get_session_mode (global)); + break; ++ case PROP_OVERRIDE_SCHEMA: ++ g_value_set_string (value, global->override_schema); ++ break; + case PROP_SCREEN: + g_value_set_object (value, global->meta_screen); + break; +@@ -370,6 +379,13 @@ shell_global_class_init (ShellGlobalClass *klass) + g_param_spec_string ("session-mode", + "Session Mode", + "The session mode to use", ++ NULL, ++ G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); ++ g_object_class_install_property (gobject_class, ++ PROP_OVERRIDE_SCHEMA, ++ g_param_spec_string ("override-schema", ++ "Override Schema", ++ "The override schema to use", + "user", + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + g_object_class_install_property (gobject_class, +@@ -1495,7 +1511,9 @@ shell_global_get_overrides_settings (ShellGlobal *global) + + if (!settings) + { +- if (strcmp (global->session_mode, "classic") == 0) ++ if (global->override_schema != NULL) ++ schema = global->override_schema; ++ else if (strcmp (global->session_mode, "classic") == 0) + schema = "org.gnome.shell.extensions.classic-overrides"; + else if (strcmp (global->session_mode, "user") == 0) + schema = "org.gnome.shell.overrides"; +-- +2.14.2 + diff --git a/SOURCES/0001-loginDialog-make-info-messages-themed.patch b/SOURCES/0001-loginDialog-make-info-messages-themed.patch index 25108d7..4f5dd71 100644 --- a/SOURCES/0001-loginDialog-make-info-messages-themed.patch +++ b/SOURCES/0001-loginDialog-make-info-messages-themed.patch @@ -1,4 +1,4 @@ -From 6bb945c95efae345ca388df4a2251a14a55630a5 Mon Sep 17 00:00:00 2001 +From b82109bd0c04a8b050a7ad18cd4b2c1d4186fa61 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 26 Jun 2017 14:35:05 -0400 Subject: [PATCH] loginDialog: make info messages themed @@ -6,14 +6,33 @@ Subject: [PATCH] loginDialog: make info messages themed They were lacking a definition before leading them to show up invisible. --- - data/gnome-classic.css | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) + data/theme/gnome-shell-high-contrast.css | 6 ++++-- + data/theme/gnome-shell.css | 6 ++++-- + 2 files changed, 8 insertions(+), 4 deletions(-) -diff --git a/data/gnome-classic.css b/data/gnome-classic.css -index d9291a1..4d0d737 100644 ---- a/data/gnome-classic.css -+++ b/data/gnome-classic.css -@@ -1651,9 +1651,11 @@ StScrollBar { +diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css +index 52dc81863..b807db8ae 100644 +--- a/data/theme/gnome-shell-high-contrast.css ++++ b/data/theme/gnome-shell-high-contrast.css +@@ -1647,9 +1647,11 @@ StScrollBar { + .login-dialog-message-warning { + color: #f57900; } + +-.login-dialog-message-hint { ++.login-dialog-message-hint, .login-dialog-message { ++ color: #bebeb6; + padding-top: 0; +- padding-bottom: 20px; } ++ padding-bottom: 20px; ++ min-height: 2.75em; } + + .login-dialog-user-selection-box { + padding: 100px 0px; } +diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css +index a320f41a0..dd37cdf7b 100644 +--- a/data/theme/gnome-shell.css ++++ b/data/theme/gnome-shell.css +@@ -1647,9 +1647,11 @@ StScrollBar { .login-dialog-message-warning { color: #f57900; } diff --git a/SOURCES/0001-loginDialog-only-emit-session-activated-on-user-acti.patch b/SOURCES/0001-loginDialog-only-emit-session-activated-on-user-acti.patch new file mode 100644 index 0000000..7c52aea --- /dev/null +++ b/SOURCES/0001-loginDialog-only-emit-session-activated-on-user-acti.patch @@ -0,0 +1,122 @@ +From 79975970398650a114ce3735272f18ca88b7208e Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Thu, 13 Nov 2014 09:26:52 -0500 +Subject: [PATCH] loginDialog: only emit session-activated on user action + +Right now we emit session-activated any time the bullet +moves in the session menu. That includes at start up when +picking an item arbitrarily, and any time GDM reports the +session was read from the user's account settings. + +session-activated informs GDM about the newly selected session, +so emitting it in response to GDM reporting a session is a +bad idea (it's not only pointless, but it can least to +oscillations) + +This commit changes the code to only emit session-activated when +the user explicitly activates a session item from the gear menu. + +https://bugzilla.gnome.org/show_bug.cgi?id=740142 +--- + js/gdm/loginDialog.js | 6 +----- + 1 file changed, 1 insertion(+), 5 deletions(-) + +diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js +index 485e36506..6ea794998 100644 +--- a/js/gdm/loginDialog.js ++++ b/js/gdm/loginDialog.js +@@ -353,90 +353,86 @@ var SessionMenuButton = new Lang.Class({ + this._menu.toggle(); + })); + + this._items = {}; + this._activeSessionId = null; + this._populate(); + }, + + updateSensitivity: function(sensitive) { + this._button.reactive = sensitive; + this._button.can_focus = sensitive; + this._menu.close(BoxPointer.PopupAnimation.NONE); + }, + + _updateOrnament: function() { + let itemIds = Object.keys(this._items); + for (let i = 0; i < itemIds.length; i++) { + if (itemIds[i] == this._activeSessionId) + this._items[itemIds[i]].setOrnament(PopupMenu.Ornament.DOT); + else + this._items[itemIds[i]].setOrnament(PopupMenu.Ornament.NONE); + } + }, + + setActiveSession: function(sessionId) { + if (sessionId == this._activeSessionId) + return; + + this._activeSessionId = sessionId; + this._updateOrnament(); +- +- this.emit('session-activated', this._activeSessionId); + }, + + close: function() { + this._menu.close(); + }, + + _populate: function() { + let ids = Gdm.get_session_ids(); + ids.sort(); + + if (ids.length <= 1) { + this._button.hide(); + return; + } + + for (let i = 0; i < ids.length; i++) { + let [sessionName, sessionDescription] = Gdm.get_session_name_and_description(ids[i]); + + let id = ids[i]; + let item = new PopupMenu.PopupMenuItem(sessionName); + this._menu.addMenuItem(item); + this._items[id] = item; + +- if (!this._activeSessionId) +- this.setActiveSession(id); +- + item.connect('activate', Lang.bind(this, function() { + this.setActiveSession(id); ++ this.emit('session-activated', this._activeSessionId); + })); + } + } + }); + Signals.addSignalMethods(SessionMenuButton.prototype); + + var LoginDialog = new Lang.Class({ + Name: 'LoginDialog', + + _init: function(parentActor) { + this.actor = new Shell.GenericContainer({ style_class: 'login-dialog', + visible: false }); + this.actor.get_accessible().set_role(Atk.Role.WINDOW); + + this.actor.add_constraint(new Layout.MonitorConstraint({ primary: true })); + this.actor.connect('allocate', Lang.bind(this, this._onAllocate)); + this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); + parentActor.add_child(this.actor); + + this._userManager = AccountsService.UserManager.get_default() + this._gdmClient = new Gdm.Client(); + + try { + this._gdmClient.set_enabled_extensions([Gdm.UserVerifierChoiceList.interface_info().name]); + } catch(e) { + } + + this._settings = new Gio.Settings({ schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA }); + + this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY, +-- +2.14.3 + diff --git a/SOURCES/0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch b/SOURCES/0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch new file mode 100644 index 0000000..0acadd4 --- /dev/null +++ b/SOURCES/0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch @@ -0,0 +1,51 @@ +From 3ec91d51350bce7a139baf009f659008eb046fc8 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Tue, 15 Sep 2015 14:04:07 -0400 +Subject: [PATCH] magnifier: don't spew to console when focus moves around + +We currently ship at-spi2 2.8 in 7.2 but gnome-shell 3.14 which +depends on function names shipped in later versions of at-spi2. + +This commit works around the problem by using the names of the functions, +as they existed in 2.8. +--- + js/ui/magnifier.js | 16 ++++++++++++++-- + 1 file changed, 14 insertions(+), 2 deletions(-) + +diff --git a/js/ui/magnifier.js b/js/ui/magnifier.js +index 4e91155a5..68b24e1c2 100644 +--- a/js/ui/magnifier.js ++++ b/js/ui/magnifier.js +@@ -724,7 +724,13 @@ var ZoomRegion = new Lang.Class({ + }, + + _updateFocus: function(caller, event) { +- let component = event.source.get_component_iface(); ++ let component; ++ ++ if (typeof event.source.get_component_iface === 'function') ++ component = event.source.get_component_iface(); ++ else if (typeof event.source.get_component === 'function') ++ component = event.source.get_component(); ++ + if (!component || event.detail1 != 1) + return; + let extents; +@@ -741,7 +747,13 @@ var ZoomRegion = new Lang.Class({ + }, + + _updateCaret: function(caller, event) { +- let text = event.source.get_text_iface(); ++ let text; ++ ++ if (typeof event.source.get_text_iface === 'function') ++ text = event.source.get_text_iface(); ++ else if (typeof event.source.get_text === 'function') ++ text = event.source.get_text(); ++ + if (!text) + return; + let extents; +-- +2.14.2 + diff --git a/SOURCES/0001-padOsd-Ensure-to-pick-pad-devices-only.patch b/SOURCES/0001-padOsd-Ensure-to-pick-pad-devices-only.patch new file mode 100644 index 0000000..9c6087a --- /dev/null +++ b/SOURCES/0001-padOsd-Ensure-to-pick-pad-devices-only.patch @@ -0,0 +1,41 @@ +From 0d9c742127f4a79416478b46a9fa5273701d92e3 Mon Sep 17 00:00:00 2001 +From: Carlos Garnacho +Date: Fri, 19 Jan 2018 10:45:50 +0100 +Subject: [PATCH] padOsd: Ensure to pick pad devices only + +If the underlying X11 input driver creates multiple devices from a single +device node, we may end up picking up the wrong device. So, instead of +picking the first device based on node and bailing out if it's not a pad, +pick the first pad that has that device node, and bail out if there is +none. + +https://gitlab.gnome.org/GNOME/gnome-shell/issues/10 + +Closes: #10 +--- + js/ui/padOsd.js | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/js/ui/padOsd.js b/js/ui/padOsd.js +index 34ef96bb9..6e11ddfba 100644 +--- a/js/ui/padOsd.js ++++ b/js/ui/padOsd.js +@@ -977,12 +977,12 @@ var PadOsdService = new Lang.Class({ + let padDevice = null; + + devices.forEach(Lang.bind(this, function(device) { +- if (deviceNode == device.get_device_node()) ++ if (deviceNode == device.get_device_node() && ++ device.get_device_type() == Clutter.InputDeviceType.PAD_DEVICE) + padDevice = device; + })); + +- if (padDevice == null || +- padDevice.get_device_type() != Clutter.InputDeviceType.PAD_DEVICE) { ++ if (padDevice == null) { + invocation.return_error_literal(Gio.IOErrorEnum, + Gio.IOErrorEnum.CANCELLED, + "Invalid params"); +-- +2.16.1 + diff --git a/SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch b/SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch new file mode 100644 index 0000000..07929ab --- /dev/null +++ b/SOURCES/0001-panel-add-an-icon-to-the-ActivitiesButton.patch @@ -0,0 +1,67 @@ +From 7196f5d0a60243e218d6a906b9db4f3b6608b47c Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 15 Jan 2014 16:45:34 -0500 +Subject: [PATCH] panel: add an icon to the ActivitiesButton + +Requested by brand +--- + data/theme/gnome-shell-high-contrast.css | 3 +++ + data/theme/gnome-shell.css | 3 +++ + js/ui/panel.js | 9 ++++++++- + 3 files changed, 14 insertions(+), 1 deletion(-) + +diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css +index 51477e713..e7b94624a 100644 +--- a/data/theme/gnome-shell-high-contrast.css ++++ b/data/theme/gnome-shell-high-contrast.css +@@ -688,6 +688,9 @@ StScrollBar { + -st-icon-style: symbolic; + margin-left: 4px; + margin-right: 4px; } ++ #panel .panel-button .panel-logo-icon { ++ padding-right: .4em; ++ icon-size: 1em; } + #panel .panel-button .system-status-icon, + #panel .panel-button .app-menu-icon > StIcon, + #panel .panel-button .popup-menu-arrow { +diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css +index 6aab70867..c1207dcd5 100644 +--- a/data/theme/gnome-shell.css ++++ b/data/theme/gnome-shell.css +@@ -688,6 +688,9 @@ StScrollBar { + -st-icon-style: symbolic; + margin-left: 4px; + margin-right: 4px; } ++ #panel .panel-button .panel-logo-icon { ++ padding-right: .4em; ++ icon-size: 1em; } + #panel .panel-button .system-status-icon, + #panel .panel-button .app-menu-icon > StIcon, + #panel .panel-button .popup-menu-arrow { +diff --git a/js/ui/panel.js b/js/ui/panel.js +index d7c8397b5..3ec43210e 100644 +--- a/js/ui/panel.js ++++ b/js/ui/panel.js +@@ -409,11 +409,18 @@ var ActivitiesButton = new Lang.Class({ + + this.actor.name = 'panelActivities'; + ++ let box = new St.BoxLayout(); ++ this.actor.add_actor(box); ++ let iconFile = Gio.File.new_for_path('/usr/share/icons/hicolor/scalable/apps/start-here.svg'); ++ this._icon = new St.Icon({ gicon: new Gio.FileIcon({ file: iconFile }), ++ style_class: 'panel-logo-icon' }); ++ box.add_actor(this._icon); ++ + /* Translators: If there is no suitable word for "Activities" + in your language, you can use the word for "Overview". */ + this._label = new St.Label({ text: _("Activities"), + y_align: Clutter.ActorAlign.CENTER }); +- this.actor.add_actor(this._label); ++ box.add_actor(this._label); + + this.actor.label_actor = this._label; + +-- +2.14.2 + diff --git a/SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch b/SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch new file mode 100644 index 0000000..4e78dcb --- /dev/null +++ b/SOURCES/0001-screenShield-unblank-when-inserting-smartcard.patch @@ -0,0 +1,33 @@ +From 7d9fa52a96cd5698ccb4773ffb71ab23b2a22a3d Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Fri, 3 Jul 2015 13:54:36 -0400 +Subject: [PATCH] screenShield: unblank when inserting smartcard + +If a user inserts the smartcard when the screen is locked/blanked +we should ask them their pin right away. + +At the moment they have to wiggle the mouse or do some other +action to get the screen to unblank. +--- + js/ui/screenShield.js | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/js/ui/screenShield.js b/js/ui/screenShield.js +index 9f3ff84ad..8d3eb43d4 100644 +--- a/js/ui/screenShield.js ++++ b/js/ui/screenShield.js +@@ -516,8 +516,10 @@ var ScreenShield = new Lang.Class({ + this._smartcardManager = SmartcardManager.getSmartcardManager(); + this._smartcardManager.connect('smartcard-inserted', + Lang.bind(this, function(manager, token) { +- if (this._isLocked && token.UsedToLogin) ++ if (this._isLocked && token.UsedToLogin) { ++ this._wakeUpScreen(); + this._liftShield(true, 0); ++ } + })); + + this._oVirtCredentialsManager = OVirt.getOVirtCredentialsManager(); +-- +2.14.2 + diff --git a/SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch b/SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch new file mode 100644 index 0000000..5e3f861 --- /dev/null +++ b/SOURCES/0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch @@ -0,0 +1,52 @@ +From f163645029cb5af8471d01379aa9b251e6ac2ae0 Mon Sep 17 00:00:00 2001 +From: Rui Matos +Date: Fri, 8 Nov 2013 11:36:04 +0100 +Subject: [PATCH] shellDBus: Add a DBus method to load a single extension + +This allows e.g. gnome-tweak-tool to install an extension from a zip +file and load it into the running shell. +--- + js/ui/shellDBus.js | 20 ++++++++++++++++++++ + 1 file changed, 20 insertions(+) + +diff --git a/js/ui/shellDBus.js b/js/ui/shellDBus.js +index 3fd24d275..d9f36b281 100644 +--- a/js/ui/shellDBus.js ++++ b/js/ui/shellDBus.js +@@ -322,6 +322,10 @@ const GnomeShellExtensionsIface = ' \ + \ + \ + \ ++ \ ++ \ ++ \ ++ \ + \ + \ + '; +@@ -424,6 +428,22 @@ var GnomeShellExtensions = new Lang.Class({ + ExtensionDownloader.checkForUpdates(); + }, + ++ LoadUserExtension: function(uuid) { ++ let extension = ExtensionUtils.extensions[uuid]; ++ if (extension) ++ return true; ++ ++ let dir = Gio.File.new_for_path(GLib.build_filenamev([global.userdatadir, 'extensions', uuid])); ++ try { ++ extension = ExtensionUtils.createExtensionObject(uuid, dir, ExtensionUtils.ExtensionType.PER_USER); ++ ExtensionSystem.loadExtension(extension); ++ } catch (e) { ++ log('Could not load user extension from %s'.format(dir.get_path())); ++ return false; ++ } ++ return true; ++ }, ++ + ShellVersion: Config.PACKAGE_VERSION, + + _extensionStateChanged: function(_, newState) { +-- +2.14.2 + diff --git a/SOURCES/0001-system-don-t-throw-an-exception-if-power-off-disable.patch b/SOURCES/0001-system-don-t-throw-an-exception-if-power-off-disable.patch new file mode 100644 index 0000000..0c6d5fe --- /dev/null +++ b/SOURCES/0001-system-don-t-throw-an-exception-if-power-off-disable.patch @@ -0,0 +1,91 @@ +From 3ff1be9fe127a51092b1f5b97d65af7fff75041d Mon Sep 17 00:00:00 2001 +From: rpm-build +Date: Mon, 13 Nov 2017 14:17:18 -0500 +Subject: [PATCH] system: don't throw an exception if power off disabled + +--- + js/ui/status/system.js | 13 ++++++++----- + 1 file changed, 8 insertions(+), 5 deletions(-) + +diff --git a/js/ui/status/system.js b/js/ui/status/system.js +index 2a8ca47..37d140a 100644 +--- a/js/ui/status/system.js ++++ b/js/ui/status/system.js +@@ -40,66 +40,69 @@ var AltSwitcher = new Lang.Class({ + this._clickAction.connect('long-press', Lang.bind(this, this._onLongPress)); + + this.actor = new St.Bin(); + this.actor.connect('destroy', Lang.bind(this, this._onDestroy)); + this.actor.connect('notify::mapped', () => { this._flipped = false; }); + }, + + _sync: function() { + let childToShow = null; + + if (this._standard.visible && this._alternate.visible) { + let [x, y, mods] = global.get_pointer(); + let altPressed = (mods & Clutter.ModifierType.MOD1_MASK) != 0; + if (this._flipped) + childToShow = altPressed ? this._standard : this._alternate; + else + childToShow = altPressed ? this._alternate : this._standard; + } else if (this._standard.visible) { + childToShow = this._standard; + } else if (this._alternate.visible) { + childToShow = this._alternate; + } + + let childShown = this.actor.get_child(); + if (childShown != childToShow) { + if (childShown) { + if (childShown.fake_release) + childShown.fake_release(); + childShown.remove_action(this._clickAction); + } +- childToShow.add_action(this._clickAction); + +- let hasFocus = this.actor.contains(global.stage.get_key_focus()); +- this.actor.set_child(childToShow); +- if (hasFocus) +- childToShow.grab_key_focus(); ++ if (childToShow) { ++ childToShow.add_action(this._clickAction); ++ ++ let hasFocus = this.actor.contains(global.stage.get_key_focus()); ++ this.actor.set_child(childToShow); ++ if (hasFocus) ++ childToShow.grab_key_focus(); ++ } + + // The actors might respond to hover, so + // sync the pointer to make sure they update. + global.sync_pointer(); + } + + this.actor.visible = (childToShow != null); + }, + + _onDestroy: function() { + if (this._capturedEventId > 0) { + global.stage.disconnect(this._capturedEventId); + this._capturedEventId = 0; + } + }, + + _onCapturedEvent: function(actor, event) { + let type = event.type(); + if (type == Clutter.EventType.KEY_PRESS || type == Clutter.EventType.KEY_RELEASE) { + let key = event.get_key_symbol(); + if (key == Clutter.KEY_Alt_L || key == Clutter.KEY_Alt_R) + this._sync(); + } + + return Clutter.EVENT_PROPAGATE; + }, + + _onLongPress: function(action, actor, state) { + if (state == Clutter.LongPressState.QUERY || + state == Clutter.LongPressState.CANCEL) +-- +2.14.3 + diff --git a/SOURCES/0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch b/SOURCES/0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch new file mode 100644 index 0000000..f5ff41f --- /dev/null +++ b/SOURCES/0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch @@ -0,0 +1,44 @@ +From 8d085a574b5b5d1055451a1b430fcf5cb9af4859 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Tue, 14 Mar 2017 17:04:36 +0100 +Subject: [PATCH] windowMenu: Bring back workspaces submenu for static + workspaces + +When the titlebar context menu was moved to the shell, the submenu for +moving to a specific workspace was intentionally left out; some people +are quite attached to it though, so bring it back when static workspaces +are used. +--- + js/ui/windowMenu.js | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + +diff --git a/js/ui/windowMenu.js b/js/ui/windowMenu.js +index 7aa57beb3..8751c4c4d 100644 +--- a/js/ui/windowMenu.js ++++ b/js/ui/windowMenu.js +@@ -119,6 +119,22 @@ var WindowMenu = new Lang.Class({ + window.change_workspace(workspace.get_neighbor(Meta.MotionDirection.DOWN)); + })); + } ++ ++ let nWorkspaces = global.screen.n_workspaces; ++ if (nWorkspaces > 1 && !Meta.prefs_get_dynamic_workspaces()) { ++ item = new PopupMenu.PopupSubMenuMenuItem(_("Move to another workspace")); ++ this.addMenuItem(item); ++ ++ let currentIndex = global.screen.get_active_workspace_index(); ++ for (let i = 0; i < nWorkspaces; i++) { ++ let index = i; ++ let name = Meta.prefs_get_workspace_name(i); ++ let subitem = item.menu.addAction(name, Lang.bind(this, function() { ++ window.change_workspace_by_index(index, false); ++ })); ++ subitem.setSensitive(currentIndex != i); ++ } ++ } + } + } + +-- +2.14.2 + diff --git a/SOURCES/0002-Revert-build-Remove-included-Makefiles-as-well.patch b/SOURCES/0002-Revert-build-Remove-included-Makefiles-as-well.patch new file mode 100644 index 0000000..cb02016 --- /dev/null +++ b/SOURCES/0002-Revert-build-Remove-included-Makefiles-as-well.patch @@ -0,0 +1,299 @@ +From 878e3442d6da7f38a872336de08defeedfcb46c4 Mon Sep 17 00:00:00 2001 +From: Olivier Fourdan +Date: Fri, 15 Sep 2017 10:44:21 +0200 +Subject: [PATCH 2/2] Revert "build: Remove included Makefiles as well" + +This reverts commit 6d704cddea54f6398b12ac626006af9a538e2368. +--- + src/Makefile-calendar-server.am | 39 ++++++++++ + src/Makefile-hotplug-sniffer.am | 23 ++++++ + src/Makefile-st.am | 169 ++++++++++++++++++++++++++++++++++++++++ + src/Makefile-tray.am | 24 ++++++ + 4 files changed, 255 insertions(+) + create mode 100644 src/Makefile-calendar-server.am + create mode 100644 src/Makefile-hotplug-sniffer.am + create mode 100644 src/Makefile-st.am + create mode 100644 src/Makefile-tray.am + +diff --git a/src/Makefile-calendar-server.am b/src/Makefile-calendar-server.am +new file mode 100644 +index 000000000..9ec04eb07 +--- /dev/null ++++ b/src/Makefile-calendar-server.am +@@ -0,0 +1,39 @@ ++service_in_files += calendar-server/org.gnome.Shell.CalendarServer.service.in ++ ++libexec_PROGRAMS += gnome-shell-calendar-server ++ ++gnome_shell_calendar_server_SOURCES = \ ++ calendar-server/calendar-debug.h \ ++ calendar-server/calendar-sources.c calendar-server/calendar-sources.h \ ++ calendar-server/gnome-shell-calendar-server.c \ ++ $(NULL) ++ ++desktopdir=$(datadir)/applications ++desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) ++desktop_in_files = calendar-server/evolution-calendar.desktop.in ++ ++%.desktop:%.desktop.in ++ @$(MKDIR_P) $(builddir)/calendar-server ++ $(AM_V_GEN) $(MSGFMT) --desktop --template $< -d $(top_srcdir)/po -o $@ ++ ++gnome_shell_calendar_server_CFLAGS = \ ++ -I$(top_srcdir)/src \ ++ -DPREFIX=\""$(prefix)"\" \ ++ -DLIBDIR=\""$(libdir)"\" \ ++ -DDATADIR=\""$(datadir)"\" \ ++ -DG_LOG_DOMAIN=\"ShellCalendarServer\" \ ++ $(CALENDAR_SERVER_CFLAGS) \ ++ $(NULL) ++ ++gnome_shell_calendar_server_LDADD = \ ++ $(CALENDAR_SERVER_LIBS) \ ++ $(NULL) ++ ++EXTRA_DIST += \ ++ calendar-server/README \ ++ calendar-server/org.gnome.Shell.CalendarServer.service.in \ ++ $(desktop_in_files) \ ++ $(NULL) ++ ++CLEANFILES += \ ++ $(desktop_DATA) +diff --git a/src/Makefile-hotplug-sniffer.am b/src/Makefile-hotplug-sniffer.am +new file mode 100644 +index 000000000..4a475c119 +--- /dev/null ++++ b/src/Makefile-hotplug-sniffer.am +@@ -0,0 +1,23 @@ ++service_in_files += hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service.in ++ ++libexec_PROGRAMS += gnome-shell-hotplug-sniffer ++ ++gnome_shell_hotplug_sniffer_SOURCES = \ ++ hotplug-sniffer/hotplug-mimetypes.h \ ++ hotplug-sniffer/shell-mime-sniffer.h \ ++ hotplug-sniffer/shell-mime-sniffer.c \ ++ hotplug-sniffer/hotplug-sniffer.c \ ++ $(NULL) ++ ++gnome_shell_hotplug_sniffer_CFLAGS = \ ++ -I$(top_srcdir)/src \ ++ $(SHELL_HOTPLUG_SNIFFER_CFLAGS) \ ++ $(NULL) ++ ++gnome_shell_hotplug_sniffer_LDFLAGS = \ ++ $(SHELL_HOTPLUG_SNIFFER_LIBS) \ ++ $(NULL) ++ ++EXTRA_DIST += \ ++ hotplug-sniffer/org.gnome.Shell.HotplugSniffer.service.in \ ++ $(NULL) +diff --git a/src/Makefile-st.am b/src/Makefile-st.am +new file mode 100644 +index 000000000..f44598e12 +--- /dev/null ++++ b/src/Makefile-st.am +@@ -0,0 +1,169 @@ ++st_cflags = \ ++ -I$(top_srcdir)/src \ ++ -DPREFIX=\""$(prefix)"\" \ ++ -DLIBDIR=\""$(libdir)"\" \ ++ -DG_LOG_DOMAIN=\"St\" \ ++ -DST_COMPILATION \ ++ -DCLUTTER_ENABLE_EXPERIMENTAL_API \ ++ -DCOGL_ENABLE_EXPERIMENTAL_API \ ++ -DPACKAGE_DATA_DIR=\"$(pkgdatadir)\" \ ++ $(ST_CFLAGS) \ ++ $(NULL) ++ ++st_built_sources = \ ++ st-enum-types.h \ ++ st-enum-types.c ++ ++BUILT_SOURCES += $(st_built_sources) ++ ++EXTRA_DIST += \ ++ st/test-theme.css \ ++ st/st-enum-types.h.in \ ++ st/st-enum-types.c.in ++ ++CLEANFILES += stamp-st-enum-types.h ++ ++st-enum-types.h: stamp-st-enum-types.h Makefile ++ @true ++stamp-st-enum-types.h: $(source_h) $(srcdir)/st/st-enum-types.h.in $(st_source_h) ++ $(AM_V_GEN) ( \ ++ $(GLIB_MKENUMS) \ ++ --template $(srcdir)/st/st-enum-types.h.in \ ++ $(addprefix $(srcdir)/, $(st_source_h)) ) >> $@.tmp && \ ++ (cmp -s $@.tmp st-enum-types.h || cp $@.tmp st-enum-types.h) && \ ++ rm -f $@.tmp && \ ++ echo timestamp > $(@F) ++ ++st-enum-types.c: stamp-st-enum-types.h $(srcdir)/st/st-enum-types.c.in ++ $(AM_V_GEN) ( \ ++ $(GLIB_MKENUMS) \ ++ --template $(srcdir)/st/st-enum-types.c.in \ ++ $(addprefix $(srcdir)/,$(st_source_h)) ) >> $@.tmp && \ ++ cp $@.tmp $@ && \ ++ rm -f $@.tmp ++ ++# please, keep this sorted alphabetically ++st_source_h = \ ++ st/st-adjustment.h \ ++ st/st-bin.h \ ++ st/st-border-image.h \ ++ st/st-box-layout.h \ ++ st/st-box-layout-child.h \ ++ st/st-button.h \ ++ st/st-clipboard.h \ ++ st/st-drawing-area.h \ ++ st/st-entry.h \ ++ st/st-focus-manager.h \ ++ st/st-generic-accessible.h \ ++ st/st-icon.h \ ++ st/st-icon-colors.h \ ++ st/st-im-text.h \ ++ st/st-label.h \ ++ st/st-private.h \ ++ st/st-scrollable.h \ ++ st/st-scroll-bar.h \ ++ st/st-scroll-view.h \ ++ st/st-shadow.h \ ++ st/st-texture-cache.h \ ++ st/st-theme.h \ ++ st/st-theme-context.h \ ++ st/st-theme-node.h \ ++ st/st-types.h \ ++ st/st-widget.h \ ++ st/st-widget-accessible.h \ ++ $(NULL) ++ ++st.h: stamp-st.h ++ @true ++stamp-st.h: Makefile ++ $(AM_V_GEN) (echo "#define ST_H_INSIDE 1"; \ ++ for name in $(st_source_h); do \ ++ echo "#include <"$$name">"; \ ++ done; echo "#undef ST_H_INSIDE") > $@.tmp && \ ++ (cmp -s $@.tmp st.h || cp $@.tmp st.h) && \ ++ rm -f $@.tmp && \ ++ echo timestamp > $(@F) ++ ++BUILT_SOURCES += st.h ++CLEANFILES += stamp-st.h ++ ++st-scroll-view-fade-generated.c: stamp-st-scroll-view-fade-generated.c ++ @true ++stamp-st-scroll-view-fade-generated.c: $(srcdir)/st/st-scroll-view-fade.glsl $(srcdir)/data-to-c.pl ++ $(AM_V_GEN) $(srcdir)/data-to-c.pl $(srcdir)/st/st-scroll-view-fade.glsl st_scroll_view_fade_glsl > $@.tmp && \ ++ (cmp -s $@.tmp st-scroll-view-fade-generated.c || cp $@.tmp st-scroll-view-fade-generated.c) && \ ++ rm -f $@.tmp && \ ++ echo timestamp > $(@F) ++ ++BUILT_SOURCES += st-scroll-view-fade-generated.c ++CLEANFILES += stamp-st-scroll-view-fade-generated.c ++EXTRA_DIST += \ ++ st/st-scroll-view-fade.glsl \ ++ data-to-c.pl \ ++ $(NULL) ++ ++st_source_private_h = \ ++ st/st-private.h \ ++ st/st-theme-private.h \ ++ st/st-theme-node-private.h \ ++ st/st-theme-node-transition.h ++ ++# please, keep this sorted alphabetically ++st_source_c = \ ++ st/st-adjustment.c \ ++ st/st-bin.c \ ++ st/st-border-image.c \ ++ st/st-box-layout.c \ ++ st/st-box-layout-child.c \ ++ st/st-button.c \ ++ st/st-clipboard.c \ ++ st/st-drawing-area.c \ ++ st/st-entry.c \ ++ st/st-focus-manager.c \ ++ st/st-generic-accessible.c \ ++ st/st-icon.c \ ++ st/st-icon-colors.c \ ++ st/st-im-text.c \ ++ st/st-label.c \ ++ st/st-private.c \ ++ st/st-scrollable.c \ ++ st/st-scroll-bar.c \ ++ st/st-scroll-view.c \ ++ st/st-shadow.c \ ++ st/st-texture-cache.c \ ++ st/st-theme.c \ ++ st/st-theme-context.c \ ++ st/st-theme-node.c \ ++ st/st-theme-node-drawing.c \ ++ st/st-theme-node-transition.c \ ++ st/st-widget.c \ ++ $(NULL) ++ ++st_non_gir_sources = \ ++ st/st-scroll-view-fade.c \ ++ st/st-scroll-view-fade.h \ ++ $(NULL) ++ ++noinst_LTLIBRARIES += libst-1.0.la ++ ++libst_1_0_la_LIBADD = -lm $(ST_LIBS) ++libst_1_0_la_SOURCES = \ ++ $(st_source_c) \ ++ $(st_non_gir_sources) \ ++ $(st_source_private_h) \ ++ $(st_source_private_c) \ ++ $(st_source_h) \ ++ $(NULL) ++nodist_libst_1_0_la_SOURCES = \ ++ $(st_built_sources) \ ++ st.h \ ++ $(NULL) ++libst_1_0_la_CPPFLAGS = $(st_cflags) ++libst_1_0_la_LDFLAGS = $(LDADD) ++ ++noinst_PROGRAMS += test-theme ++ ++test_theme_CPPFLAGS = $(st_cflags) ++test_theme_LDADD = libst-1.0.la ++ ++test_theme_SOURCES = st/test-theme.c +diff --git a/src/Makefile-tray.am b/src/Makefile-tray.am +new file mode 100644 +index 000000000..b814c1f7b +--- /dev/null ++++ b/src/Makefile-tray.am +@@ -0,0 +1,24 @@ ++tray_cflags = \ ++ -I$(top_srcdir)/src \ ++ -DG_LOG_DOMAIN=\"notification_area\" \ ++ $(TRAY_CFLAGS) \ ++ $(NULL) ++ ++# please, keep this sorted alphabetically ++tray_source = \ ++ tray/na-tray-child.c \ ++ tray/na-tray-child.h \ ++ tray/na-tray-manager.c \ ++ tray/na-tray-manager.h \ ++ $(NULL) ++ ++noinst_LTLIBRARIES += libtray.la ++ ++libtray_la_LIBADD = $(TRAY_LIBS) ++libtray_la_SOURCES = \ ++ $(tray_source) \ ++ $(NULL) ++libtray_la_CPPFLAGS = $(tray_cflags) ++libtray_la_LDFLAGS = $(LDADD) ++ ++CLEANFILES += $(TRAY_STAMP_FILES) $(BUILT_SOURCES) +-- +2.13.5 + diff --git a/SOURCES/0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch b/SOURCES/0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch new file mode 100644 index 0000000..1c1bbd7 --- /dev/null +++ b/SOURCES/0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch @@ -0,0 +1,267 @@ +From 1383483a7c9707c2528c5a47fd71217cf253c6ff Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 17 Jul 2017 16:48:03 -0400 +Subject: [PATCH 2/2] gdmUtil: enable support for GDM's ChoiceList PAM + extension + +This commit hooks up support for GDM's ChoiceList PAM extension. +--- + js/gdm/authPrompt.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++- + js/gdm/loginDialog.js | 5 ++++ + js/gdm/util.js | 28 +++++++++++++++++++ + js/ui/unlockDialog.js | 9 ++++++- + 4 files changed, 114 insertions(+), 2 deletions(-) + +diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js +index 366f34687..7f23f0087 100644 +--- a/js/gdm/authPrompt.js ++++ b/js/gdm/authPrompt.js +@@ -9,6 +9,7 @@ const Signals = imports.signals; + const St = imports.gi.St; + + const Animation = imports.ui.animation; ++const AuthList = imports.gdm.authList; + const Batch = imports.gdm.batch; + const GdmUtil = imports.gdm.util; + const Meta = imports.gi.Meta; +@@ -61,6 +62,7 @@ var AuthPrompt = new Lang.Class({ + + this._userVerifier.connect('ask-question', Lang.bind(this, this._onAskQuestion)); + this._userVerifier.connect('show-message', Lang.bind(this, this._onShowMessage)); ++ this._userVerifier.connect('show-choice-list', Lang.bind(this, this._onShowChoiceList)); + this._userVerifier.connect('verification-failed', Lang.bind(this, this._onVerificationFailed)); + this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete)); + this._userVerifier.connect('reset', Lang.bind(this, this._onReset)); +@@ -125,6 +127,28 @@ var AuthPrompt = new Lang.Class({ + + this.actor.add(this._timedLoginIndicator); + ++ this._authList = new AuthList.AuthList(); ++ this._authList.connect('activate', (list, key) => { ++ this._authList.actor.reactive = false; ++ Tweener.addTween(this._authList.actor, ++ { opacity: 0, ++ time: MESSAGE_FADE_OUT_ANIMATION_TIME, ++ transition: 'easeOutQuad', ++ onComplete: () => { ++ this._authList.clear(); ++ this._authList.actor.hide(); ++ this._userVerifier.selectChoice(this._queryingService, key); ++ ++ } ++ }); ++ }); ++ this._authList.actor.hide(); ++ this.actor.add(this._authList.actor, ++ { expand: true, ++ x_fill: true, ++ y_fill: false, ++ x_align: St.Align.START }); ++ + this._message = new St.Label({ opacity: 0, + styleClass: 'login-dialog-message' }); + this._message.clutter_text.line_wrap = true; +@@ -276,6 +300,21 @@ var AuthPrompt = new Lang.Class({ + this.emit('prompted'); + }, + ++ _onShowChoiceList: function(userVerifier, serviceName, promptMessage, choiceList) { ++ if (this._queryingService) ++ this.clear(); ++ ++ this._queryingService = serviceName; ++ ++ if (this._preemptiveAnswer) ++ this._preemptiveAnswer = null; ++ ++ this.nextButton.label = _("Next"); ++ this.setChoiceList(promptMessage, choiceList); ++ this.updateSensitivity(true); ++ this.emit('prompted'); ++ }, ++ + _onOVirtUserAuthenticated: function() { + if (this.verificationStatus != AuthPromptStatus.VERIFICATION_SUCCEEDED) + this.reset(); +@@ -404,6 +443,8 @@ var AuthPrompt = new Lang.Class({ + clear: function() { + this._entry.text = ''; + this.stopSpinning(); ++ this._authList.clear(); ++ this._authList.actor.hide(); + }, + + setPasswordChar: function(passwordChar) { +@@ -419,12 +460,42 @@ var AuthPrompt = new Lang.Class({ + + this._label.set_text(question); + ++ this._authList.actor.hide(); + this._label.show(); + this._entry.show(); + + this._entry.grab_key_focus(); + }, + ++ _fadeInChoiceList: function() { ++ this._authList.actor.opacity = 0; ++ this._authList.actor.show(); ++ this._authList.actor.reactive = false; ++ Tweener.addTween(this._authList.actor, ++ { opacity: 255, ++ time: MESSAGE_FADE_OUT_ANIMATION_TIME, ++ transition: 'easeOutQuad', ++ onComplete: () => { ++ this._authList.actor.reactive = true; ++ } ++ }); ++ }, ++ ++ setChoiceList: function(promptMessage, choiceList) { ++ this._authList.clear(); ++ this._authList.label.text = promptMessage; ++ for (let key in choiceList) { ++ let text = choiceList[key]; ++ this._authList.addItem(key, text); ++ } ++ ++ this._label.hide(); ++ this._entry.hide(); ++ if (this._message.text == "") ++ this._message.hide(); ++ this._fadeInChoiceList(); ++ }, ++ + getAnswer: function() { + let text; + +@@ -460,6 +531,7 @@ var AuthPrompt = new Lang.Class({ + else + this._message.remove_style_class_name('login-dialog-message-hint'); + ++ this._message.show(); + if (message) { + Tweener.removeTweens(this._message); + this._message.text = message; +@@ -475,7 +547,7 @@ var AuthPrompt = new Lang.Class({ + }, + + updateSensitivity: function(sensitive) { +- this._updateNextButtonSensitivity(sensitive && (this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING)); ++ this._updateNextButtonSensitivity(sensitive && !this._authList.actor.visible && (this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING)); + this._entry.reactive = sensitive; + this._entry.clutter_text.editable = sensitive; + }, +diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js +index 6f6de00da..764a96e06 100644 +--- a/js/gdm/loginDialog.js ++++ b/js/gdm/loginDialog.js +@@ -435,6 +435,11 @@ var LoginDialog = new Lang.Class({ + this._userManager = AccountsService.UserManager.get_default() + this._gdmClient = new Gdm.Client(); + ++ try { ++ this._gdmClient.set_enabled_extensions([Gdm.UserVerifierChoiceList.interface_info().name]); ++ } catch(e) { ++ } ++ + this._settings = new Gio.Settings({ schema_id: GdmUtil.LOGIN_SCREEN_SCHEMA }); + + this._settings.connect('changed::' + GdmUtil.BANNER_MESSAGE_KEY, +diff --git a/js/gdm/util.js b/js/gdm/util.js +index 83a12fb6c..9fc61f55a 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -200,6 +200,10 @@ var ShellUserVerifier = new Lang.Class({ + if (this._userVerifier) { + this._userVerifier.run_dispose(); + this._userVerifier = null; ++ if (this._userVerifierChoiceList) { ++ this._userVerifierChoiceList.run_dispose(); ++ this._userVerifierChoiceList = null; ++ } + } + }, + +@@ -227,6 +231,10 @@ var ShellUserVerifier = new Lang.Class({ + this._oVirtCredentialsManager = null; + }, + ++ selectChoice: function(serviceName, key) { ++ this._userVerifierChoiceList.call_select_choice(serviceName, key, this._cancellable, null); ++ }, ++ + answerQuery: function(serviceName, answer) { + if (!this.hasPendingMessages) { + this._userVerifier.call_answer_query(serviceName, answer, this._cancellable, null); +@@ -368,6 +376,11 @@ var ShellUserVerifier = new Lang.Class({ + return; + } + ++ if (client.get_user_verifier_choice_list) ++ this._userVerifierChoiceList = client.get_user_verifier_choice_list(); ++ else ++ this._userVerifierChoiceList = null; ++ + this.reauthenticating = true; + this._connectSignals(); + this._beginVerification(); +@@ -385,6 +398,11 @@ var ShellUserVerifier = new Lang.Class({ + return; + } + ++ if (client.get_user_verifier_choice_list) ++ this._userVerifierChoiceList = client.get_user_verifier_choice_list(); ++ else ++ this._userVerifierChoiceList = null; ++ + this._connectSignals(); + this._beginVerification(); + this._hold.release(); +@@ -398,6 +416,9 @@ var ShellUserVerifier = new Lang.Class({ + this._userVerifier.connect('conversation-stopped', Lang.bind(this, this._onConversationStopped)); + this._userVerifier.connect('reset', Lang.bind(this, this._onReset)); + this._userVerifier.connect('verification-complete', Lang.bind(this, this._onVerificationComplete)); ++ ++ if (this._userVerifierChoiceList) ++ this._userVerifierChoiceList.connect('choice-query', Lang.bind(this, this._onChoiceListQuery)); + }, + + _getForegroundService: function() { +@@ -474,6 +495,13 @@ var ShellUserVerifier = new Lang.Class({ + this._startService(FINGERPRINT_SERVICE_NAME); + }, + ++ _onChoiceListQuery: function(client, serviceName, promptMessage, list) { ++ if (!this.serviceIsForeground(serviceName)) ++ return; ++ ++ this.emit('show-choice-list', serviceName, promptMessage, list.deep_unpack()); ++ }, ++ + _onInfo: function(client, serviceName, info) { + if (this.serviceIsForeground(serviceName)) { + this._queueMessage(info, MessageType.INFO); +diff --git a/js/ui/unlockDialog.js b/js/ui/unlockDialog.js +index baead5a6f..d525959c5 100644 +--- a/js/ui/unlockDialog.js ++++ b/js/ui/unlockDialog.js +@@ -51,7 +51,14 @@ var UnlockDialog = new Lang.Class({ + y_expand: true }); + this.actor.add_child(this._promptBox); + +- this._authPrompt = new AuthPrompt.AuthPrompt(new Gdm.Client(), AuthPrompt.AuthPromptMode.UNLOCK_ONLY); ++ this._gdmClient = new Gdm.Client(); ++ ++ try { ++ this._gdmClient.set_enabled_extensions([Gdm.UserVerifierChoiceList.interface_info().name]); ++ } catch(e) { ++ } ++ ++ this._authPrompt = new AuthPrompt.AuthPrompt(this._gdmClient, AuthPrompt.AuthPromptMode.UNLOCK_ONLY); + this._authPrompt.connect('failed', Lang.bind(this, this._fail)); + this._authPrompt.connect('cancelled', Lang.bind(this, this._fail)); + this._authPrompt.connect('reset', Lang.bind(this, this._onReset)); +-- +2.14.2 + diff --git a/SOURCES/0003-build-Remove-check-for-missing-disthook.patch b/SOURCES/0003-build-Remove-check-for-missing-disthook.patch new file mode 100644 index 0000000..b5302d3 --- /dev/null +++ b/SOURCES/0003-build-Remove-check-for-missing-disthook.patch @@ -0,0 +1,38 @@ +From 49102593eb5776e2edc535147e8277cdcad1e5d9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Fri, 6 Oct 2017 18:58:21 +0200 +Subject: [PATCH] build: Remove check-for-missing disthook + +The script has been removed upstream, but the re-added autotools +support still references it; we don't have any use for a disthook +downstream, so just update the Makefile accordingly. +--- + Makefile.am | 7 +------ + 1 file changed, 1 insertion(+), 6 deletions(-) + +diff --git a/Makefile.am b/Makefile.am +index eba7d2b28..107a00a05 100644 +--- a/Makefile.am ++++ b/Makefile.am +@@ -14,8 +14,7 @@ endif + EXTRA_DIST = \ + .project \ + .settings \ +- autogen.sh \ +- tools/check-for-missing.py ++ autogen.sh + + # These are files checked into Git that we don't want to distribute + DIST_EXCLUDE = \ +@@ -26,8 +25,4 @@ DIST_EXCLUDE = \ + MAINTAINERS \ + tools/build/* + +-distcheck-hook: +- @echo "Checking disted files against files in git" +- @$(srcdir)/tools/check-for-missing.py $(srcdir) $(distdir) $(DIST_EXCLUDE) +- + DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc --enable-man +-- +2.14.2 + diff --git a/SOURCES/0004-Revert-build-Use-new-mkenums_simple-function.patch b/SOURCES/0004-Revert-build-Use-new-mkenums_simple-function.patch new file mode 100644 index 0000000..a52a104 --- /dev/null +++ b/SOURCES/0004-Revert-build-Use-new-mkenums_simple-function.patch @@ -0,0 +1,200 @@ +From 20f85200472835180a6302928f05b86063dfb00d Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Tue, 24 Oct 2017 02:45:00 +0200 +Subject: [PATCH 4/4] Revert "build: Use new mkenums_simple() function" + +This reverts commit ab0e98dfdd49d73373eb4367a299593b96211f80. +--- + src/meson.build | 6 ++++-- + src/shell-enum-types.c.in | 30 ++++++++++++++++++++++++++++++ + src/shell-enum-types.h.in | 25 +++++++++++++++++++++++++ + src/st/meson.build | 8 +++----- + src/st/st-enum-types.c.in | 33 +++++++++++++++++++++++++++++++++ + src/st/st-enum-types.h.in | 29 +++++++++++++++++++++++++++++ + 6 files changed, 124 insertions(+), 7 deletions(-) + create mode 100644 src/shell-enum-types.c.in + create mode 100644 src/shell-enum-types.h.in + create mode 100644 src/st/st-enum-types.c.in + create mode 100644 src/st/st-enum-types.h.in + +diff --git a/src/meson.build b/src/meson.build +index 3e5557351..1e88bf5d5 100644 +--- a/src/meson.build ++++ b/src/meson.build +@@ -182,8 +182,10 @@ if enable_recorder + endif + + +-libshell_enums = gnome.mkenums_simple('shell-enum-types', +- sources: libshell_public_headers ++libshell_enums = gnome.mkenums('shell-enum-types', ++ sources: libshell_public_headers, ++ c_template: 'shell-enum-types.c.in', ++ h_template: 'shell-enum-types.h.in' + ) + + libshell_gir_sources = [ +diff --git a/src/shell-enum-types.c.in b/src/shell-enum-types.c.in +new file mode 100644 +index 000000000..b350d0016 +--- /dev/null ++++ b/src/shell-enum-types.c.in +@@ -0,0 +1,30 @@ ++/*** BEGIN file-header ***/ ++#include "shell-enum-types.h" ++/*** END file-header ***/ ++ ++/*** BEGIN file-production ***/ ++/* enumerations from "@filename@" */ ++#include "@filename@" ++/*** END file-production ***/ ++ ++/*** BEGIN value-header ***/ ++GType ++@enum_name@_get_type(void) { ++ static GType enum_type_id = 0; ++ if (G_UNLIKELY (!enum_type_id)) ++ { ++ static const G@Type@Value values[] = { ++/*** END value-header ***/ ++ ++/*** BEGIN value-production ***/ ++ { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, ++/*** END value-production ***/ ++ ++/*** BEGIN value-tail ***/ ++ { 0, NULL, NULL } ++ }; ++ enum_type_id = g_@type@_register_static("@EnumName@", values); ++ } ++ return enum_type_id; ++} ++/*** END value-tail ***/ +diff --git a/src/shell-enum-types.h.in b/src/shell-enum-types.h.in +new file mode 100644 +index 000000000..a6aea7d17 +--- /dev/null ++++ b/src/shell-enum-types.h.in +@@ -0,0 +1,25 @@ ++/*** BEGIN file-header ***/ ++#ifndef __SHELL_ENUM_TYPES_H__ ++#define __SHELL_ENUM_TYPES_H__ ++ ++#include ++ ++G_BEGIN_DECLS ++ ++/*** END file-header ***/ ++ ++/*** BEGIN file-production ***/ ++/* enumerations from "@filename@" */ ++/*** END file-production ***/ ++ ++/*** BEGIN file-tail ***/ ++G_END_DECLS ++ ++#endif /* !__SHELL_ENUM_TYPES_H__ */ ++/*** END file-tail ***/ ++ ++/*** BEGIN value-header ***/ ++GType @enum_name@_get_type (void) G_GNUC_CONST; ++#define SHELL_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) ++ ++/*** END value-header ***/ +diff --git a/src/st/meson.build b/src/st/meson.build +index fa9d6bbf4..46378a2f1 100644 +--- a/src/st/meson.build ++++ b/src/st/meson.build +@@ -82,12 +82,10 @@ st_sources = [ + 'st-widget.c' + ] + +-st_enums = gnome.mkenums_simple('st-enum-types', ++st_enums = gnome.mkenums('st-enum-types', + sources: st_headers, +- header_prefix: ''' +-#if !defined(ST_H_INSIDE) && !defined(ST_COMPILATION) +-#error "Only can be included directly.h" +-#endif''' ++ c_template: 'st-enum-types.c.in', ++ h_template: 'st-enum-types.h.in' + ) + + st_gir_sources = st_sources + st_private_headers + st_headers + st_enums +diff --git a/src/st/st-enum-types.c.in b/src/st/st-enum-types.c.in +new file mode 100644 +index 000000000..bf0c54470 +--- /dev/null ++++ b/src/st/st-enum-types.c.in +@@ -0,0 +1,33 @@ ++/*** BEGIN file-header ***/ ++#ifndef ST_COMPILATION ++#define ST_COMPILATION ++#endif ++#include "st-enum-types.h" ++/*** END file-header ***/ ++ ++/*** BEGIN file-production ***/ ++/* enumerations from "@filename@" */ ++#include "@filename@" ++/*** END file-production ***/ ++ ++/*** BEGIN value-header ***/ ++GType ++@enum_name@_get_type(void) { ++ static GType enum_type_id = 0; ++ if (G_UNLIKELY (!enum_type_id)) ++ { ++ static const G@Type@Value values[] = { ++/*** END value-header ***/ ++ ++/*** BEGIN value-production ***/ ++ { @VALUENAME@, "@VALUENAME@", "@valuenick@" }, ++/*** END value-production ***/ ++ ++/*** BEGIN value-tail ***/ ++ { 0, NULL, NULL } ++ }; ++ enum_type_id = g_@type@_register_static (g_intern_static_string ("@EnumName@"), values); ++ } ++ return enum_type_id; ++} ++/*** END value-tail ***/ +diff --git a/src/st/st-enum-types.h.in b/src/st/st-enum-types.h.in +new file mode 100644 +index 000000000..b3dd0e74e +--- /dev/null ++++ b/src/st/st-enum-types.h.in +@@ -0,0 +1,29 @@ ++/*** BEGIN file-header ***/ ++#if !defined(ST_H_INSIDE) && !defined(ST_COMPILATION) ++#error "Only can be included directly.h" ++#endif ++ ++#ifndef __ST_ENUM_TYPES_H__ ++#define __ST_ENUM_TYPES_H__ ++ ++#include ++ ++G_BEGIN_DECLS ++ ++/*** END file-header ***/ ++ ++/*** BEGIN file-production ***/ ++/* enumerations from "@filename@" */ ++/*** END file-production ***/ ++ ++/*** BEGIN file-tail ***/ ++G_END_DECLS ++ ++#endif /* !__ST_ENUM_TYPES_H__ */ ++/*** END file-tail ***/ ++ ++/*** BEGIN value-header ***/ ++GType @enum_name@_get_type (void) G_GNUC_CONST; ++#define ST_TYPE_@ENUMSHORT@ (@enum_name@_get_type()) ++ ++/*** END value-header ***/ +-- +2.14.2 + diff --git a/SOURCES/allow-timed-login-with-no-user-list.patch b/SOURCES/allow-timed-login-with-no-user-list.patch new file mode 100644 index 0000000..279a55b --- /dev/null +++ b/SOURCES/allow-timed-login-with-no-user-list.patch @@ -0,0 +1,188 @@ +From fb872747e5697098c87e97bab13c4095b653053b Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Tue, 19 Apr 2016 13:12:46 -0400 +Subject: [PATCH] loginDialog: allow timed login with disabled user list + +--- + data/theme/gnome-shell-high-contrast.css | 3 +++ + data/theme/gnome-shell.css | 3 +++ + js/gdm/authPrompt.js | 41 ++++++++++++++++++++++++++++++++ + js/gdm/loginDialog.js | 29 +++++++++++++++++++--- + 4 files changed, 73 insertions(+), 3 deletions(-) + +diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css +index e7b94624a..364725de3 100644 +--- a/data/theme/gnome-shell-high-contrast.css ++++ b/data/theme/gnome-shell-high-contrast.css +@@ -1716,6 +1716,9 @@ StScrollBar { + padding-bottom: 12px; + spacing: 8px; + width: 23em; } ++ .login-dialog-prompt-layout .login-dialog-timed-login-indicator { ++ height: 2px; ++ background-color: #8b8b8b; } + + .login-dialog-prompt-label { + color: #bebeb6; +diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css +index c1207dcd5..5d754a2bb 100644 +--- a/data/theme/gnome-shell.css ++++ b/data/theme/gnome-shell.css +@@ -1716,6 +1716,9 @@ StScrollBar { + padding-bottom: 12px; + spacing: 8px; + width: 23em; } ++ .login-dialog-prompt-layout .login-dialog-timed-login-indicator { ++ height: 2px; ++ background-color: #8b8b8b; } + + .login-dialog-prompt-label { + color: #bebeb6; +diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js +index 9affbdd5f..366f34687 100644 +--- a/js/gdm/authPrompt.js ++++ b/js/gdm/authPrompt.js +@@ -2,6 +2,7 @@ + + const Clutter = imports.gi.Clutter; + const Gio = imports.gi.Gio; ++const GLib = imports.gi.GLib; + const Lang = imports.lang; + const Pango = imports.gi.Pango; + const Signals = imports.signals; +@@ -119,6 +120,11 @@ var AuthPrompt = new Lang.Class({ + + this._entry.grab_key_focus(); + ++ this._timedLoginIndicator = new St.Bin({ style_class: 'login-dialog-timed-login-indicator', ++ scale_x: 0 }); ++ ++ this.actor.add(this._timedLoginIndicator); ++ + this._message = new St.Label({ opacity: 0, + styleClass: 'login-dialog-message' }); + this._message.clutter_text.line_wrap = true; +@@ -144,6 +150,41 @@ var AuthPrompt = new Lang.Class({ + this._defaultButtonWell.add_child(this._spinner.actor); + }, + ++ showTimedLoginIndicator: function(time) { ++ let hold = new Batch.Hold(); ++ ++ this.hideTimedLoginIndicator(); ++ ++ let startTime = GLib.get_monotonic_time(); ++ ++ this._timedLoginTimeoutId = GLib.timeout_add (GLib.PRIORITY_DEFAULT, ++ 33, ++ Lang.bind(this, function() { ++ let currentTime = GLib.get_monotonic_time(); ++ let elapsedTime = (currentTime - startTime) / GLib.USEC_PER_SEC; ++ this._timedLoginIndicator.scale_x = elapsedTime / time; ++ if (elapsedTime >= time) { ++ this._timedLoginTimeoutId = 0; ++ hold.release(); ++ return GLib.SOURCE_REMOVE; ++ } ++ ++ return GLib.SOURCE_CONTINUE; ++ })); ++ ++ GLib.Source.set_name_by_id(this._timedLoginTimeoutId, '[gnome-shell] this._timedLoginTimeoutId'); ++ ++ return hold; ++ }, ++ ++ hideTimedLoginIndicator: function() { ++ if (this._timedLoginTimeoutId) { ++ GLib.source_remove(this._timedLoginTimeoutId); ++ this._timedLoginTimeoutId = 0; ++ } ++ this._timedLoginIndicator.scale_x = 0.; ++ }, ++ + _onDestroy: function() { + if (this._preemptiveAnswerWatchId) { + this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); +diff --git a/js/gdm/loginDialog.js b/js/gdm/loginDialog.js +index c1262b1e8..6f6de00da 100644 +--- a/js/gdm/loginDialog.js ++++ b/js/gdm/loginDialog.js +@@ -756,6 +756,9 @@ var LoginDialog = new Lang.Class({ + + if (this._authPrompt.verificationStatus == AuthPrompt.AuthPromptStatus.NOT_VERIFYING) + this._authPrompt.reset(); ++ ++ if (this._disableUserList && this._timedLoginUserListHold) ++ this._timedLoginUserListHold.release(); + } + }, + +@@ -1014,6 +1017,9 @@ var LoginDialog = new Lang.Class({ + }, + + _showTimedLoginAnimation: function() { ++ if (this._disableUserList) { ++ return this._authPrompt.showTimedLoginIndicator(this._timedLoginAnimationTime); ++ } + this._timedLoginItem.actor.grab_key_focus(); + return this._timedLoginItem.showTimedLoginIndicator(this._timedLoginAnimationTime); + }, +@@ -1041,19 +1047,31 @@ var LoginDialog = new Lang.Class({ + }, + + _startTimedLogin: function(userName, delay) { ++ this._timedLoginUserName = userName; + this._timedLoginItem = null; + this._timedLoginDelay = delay; + this._timedLoginAnimationTime = delay; +- + let tasks = [function() { +- return this._waitForItemForUser(userName); ++ if (this._disableUserList) ++ return; ++ ++ this._timedLoginUserListHold = this._waitForItemForUser(userName); ++ ++ return this._timedLoginUserListHold; + }, + + function() { ++ this._timedLoginUserListHold = null; ++ ++ if (this._disableUserList) ++ return; + this._timedLoginItem = this._userList.getItemFromUserName(userName); + }, + + function() { ++ if (this._disableUserList) ++ return; ++ + // If we're just starting out, start on the right + // item. + if (!this._userManager.is_loaded) { +@@ -1064,6 +1082,9 @@ var LoginDialog = new Lang.Class({ + this._blockTimedLoginUntilIdle, + + function() { ++ if (this._disableUserList) ++ return; ++ + this._userList.scrollToItem(this._timedLoginItem); + }, + +@@ -1088,7 +1109,9 @@ var LoginDialog = new Lang.Class({ + if (this._timedLoginItem) + this._timedLoginItem.hideTimedLoginIndicator(); + +- let userName = this._timedLoginItem.user.get_user_name(); ++ this._authPrompt.hideTimedLoginIndicator(); ++ ++ let userName = this._timedLoginUserName; + + if (userName) + this._startTimedLogin(userName, this._timedLoginDelay); +-- +2.14.2 + diff --git a/SOURCES/disable-unlock-entry-until-question.patch b/SOURCES/disable-unlock-entry-until-question.patch new file mode 100644 index 0000000..50ffcc2 --- /dev/null +++ b/SOURCES/disable-unlock-entry-until-question.patch @@ -0,0 +1,167 @@ +From f941682d22a0e6f40e1109df8043291398783ff4 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 30 Sep 2015 12:51:24 -0400 +Subject: [PATCH 1/3] authPrompt: don't fade out auth messages if user types + password up front + +Right now we fade out any stale auth messages as soon as the user starts +typing. This behavior doesn't really make sense if the user is typing up +front, before a password is asked. +--- + js/gdm/authPrompt.js | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js +index a436431be..dedf39f99 100644 +--- a/js/gdm/authPrompt.js ++++ b/js/gdm/authPrompt.js +@@ -185,7 +185,7 @@ var AuthPrompt = new Lang.Class({ + + this._entry.clutter_text.connect('text-changed', + Lang.bind(this, function() { +- if (!this._userVerifier.hasPendingMessages) ++ if (!this._userVerifier.hasPendingMessages && this._queryingService && !this._preemptiveAnswer) + this._fadeOutMessage(); + + this._updateNextButtonSensitivity(this._entry.text.length > 0 || this.verificationStatus == AuthPromptStatus.VERIFYING); +-- +2.14.2 + + +From 7b83ebcdc1d667438de5a0f41cb7b194b2792d1f Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Wed, 30 Sep 2015 14:36:33 -0400 +Subject: [PATCH 2/3] authPrompt: don't spin unless answering question + +--- + js/gdm/authPrompt.js | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js +index dedf39f99..b3ff91789 100644 +--- a/js/gdm/authPrompt.js ++++ b/js/gdm/authPrompt.js +@@ -66,8 +66,8 @@ var AuthPrompt = new Lang.Class({ + + this.connect('next', Lang.bind(this, function() { + this.updateSensitivity(false); +- this.startSpinning(); + if (this._queryingService) { ++ this.startSpinning(); + this._userVerifier.answerQuery(this._queryingService, this._entry.text); + } else { + this._preemptiveAnswer = this._entry.text; +-- +2.14.2 + + +From 76e455916f6411c695f4528bffbb49c5832ec568 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 5 Oct 2015 15:26:18 -0400 +Subject: [PATCH 3/3] authPrompt: stop accepting preemptive answer if user + stops typing + +We only want to allow the user to type the preemptive password in +one smooth motion. If they start to type, and then stop typing, +we should discard their preemptive password as expired. + +Typing ahead the password is just a convenience for users who don't +want to manually lift the shift before typing their passwords, after +all. +--- + js/gdm/authPrompt.js | 38 ++++++++++++++++++++++++++++++++++++++ + 1 file changed, 38 insertions(+) + +diff --git a/js/gdm/authPrompt.js b/js/gdm/authPrompt.js +index b3ff91789..9affbdd5f 100644 +--- a/js/gdm/authPrompt.js ++++ b/js/gdm/authPrompt.js +@@ -10,6 +10,7 @@ const St = imports.gi.St; + const Animation = imports.ui.animation; + const Batch = imports.gdm.batch; + const GdmUtil = imports.gdm.util; ++const Meta = imports.gi.Meta; + const Params = imports.misc.params; + const ShellEntry = imports.ui.shellEntry; + const Tweener = imports.ui.tweener; +@@ -47,6 +48,8 @@ var AuthPrompt = new Lang.Class({ + this._gdmClient = gdmClient; + this._mode = mode; + ++ this._idleMonitor = Meta.IdleMonitor.get_core(); ++ + let reauthenticationOnly; + if (this._mode == AuthPromptMode.UNLOCK_ONLY) + reauthenticationOnly = true; +@@ -71,6 +74,11 @@ var AuthPrompt = new Lang.Class({ + this._userVerifier.answerQuery(this._queryingService, this._entry.text); + } else { + this._preemptiveAnswer = this._entry.text; ++ ++ if (this._preemptiveAnswerWatchId) { ++ this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); ++ this._preemptiveAnswerWatchId = 0; ++ } + } + })); + +@@ -137,6 +145,11 @@ var AuthPrompt = new Lang.Class({ + }, + + _onDestroy: function() { ++ if (this._preemptiveAnswerWatchId) { ++ this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); ++ this._preemptiveAnswerWatchId = 0; ++ } ++ + this._userVerifier.destroy(); + this._userVerifier = null; + }, +@@ -358,6 +371,11 @@ var AuthPrompt = new Lang.Class({ + }, + + setQuestion: function(question) { ++ if (this._preemptiveAnswerWatchId) { ++ this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); ++ this._preemptiveAnswerWatchId = 0; ++ } ++ + this._label.set_text(question); + + this._label.show(); +@@ -443,12 +461,32 @@ var AuthPrompt = new Lang.Class({ + } + }, + ++ _onUserStoppedTypePreemptiveAnswer: function() { ++ if (!this._preemptiveAnswerWatchId || ++ this._preemptiveAnswer || ++ this._queryingService) ++ return; ++ ++ this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); ++ this._preemptiveAnswerWatchId = 0; ++ ++ this._entry.text = ''; ++ this.updateSensitivity(false); ++ }, ++ + reset: function() { + let oldStatus = this.verificationStatus; + this.verificationStatus = AuthPromptStatus.NOT_VERIFYING; + this.cancelButton.reactive = true; + this.nextButton.label = _("Next"); + ++ if (this._preemptiveAnswerWatchId) { ++ this._idleMonitor.remove_watch(this._preemptiveAnswerWatchId); ++ } ++ this._preemptiveAnswerWatchId = this._idleMonitor.add_idle_watch (500, ++ Lang.bind(this, ++ this._onUserStoppedTypePreemptiveAnswer)); ++ + if (this._userVerifier) + this._userVerifier.cancel(); + +-- +2.14.2 + diff --git a/SOURCES/enforce-smartcard-at-unlock.patch b/SOURCES/enforce-smartcard-at-unlock.patch new file mode 100644 index 0000000..07782e2 --- /dev/null +++ b/SOURCES/enforce-smartcard-at-unlock.patch @@ -0,0 +1,115 @@ +From 59b6d50061f3c8e5858230a881267014e8395594 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 28 Sep 2015 10:57:02 -0400 +Subject: [PATCH 1/3] smartcardManager: add way to detect if user logged using + (any) token + +If a user uses a token at login time, we need to make sure they continue +to use the token at unlock time. + +As a prerequisite for addressing that problem we need to know up front +if a user logged in with a token at all. + +This commit adds the necessary api to detect that case. +--- + js/misc/smartcardManager.js | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/js/misc/smartcardManager.js b/js/misc/smartcardManager.js +index 4388f286d..75e9836e9 100644 +--- a/js/misc/smartcardManager.js ++++ b/js/misc/smartcardManager.js +@@ -113,6 +113,13 @@ var SmartcardManager = new Lang.Class({ + return false; + + return true; ++ }, ++ ++ loggedInWithToken: function() { ++ if (this._loginToken) ++ return true; ++ ++ return false; + } + + }); +-- +2.14.2 + + +From b25d32c8fef60dec567f05e6681214a6995656fc Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 28 Sep 2015 19:56:53 -0400 +Subject: [PATCH 2/3] gdm: only unlock with smartcard, if smartcard used for + login + +If a smartcard is used for login, we need to make sure the smartcard +gets used for unlock, too. +--- + js/gdm/util.js | 7 +++++-- + 1 file changed, 5 insertions(+), 2 deletions(-) + +diff --git a/js/gdm/util.js b/js/gdm/util.js +index bae46bfe0..a44184c17 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -134,7 +134,6 @@ var ShellUserVerifier = new Lang.Class({ + this._settings = new Gio.Settings({ schema_id: LOGIN_SCREEN_SCHEMA }); + this._settings.connect('changed', + Lang.bind(this, this._updateDefaultService)); +- this._updateDefaultService(); + + this._fprintManager = Fprint.FprintManager(); + this._smartcardManager = SmartcardManager.getSmartcardManager(); +@@ -146,6 +145,8 @@ var ShellUserVerifier = new Lang.Class({ + this.smartcardDetected = false; + this._checkForSmartcard(); + ++ this._updateDefaultService(); ++ + this._smartcardInsertedId = this._smartcardManager.connect('smartcard-inserted', + Lang.bind(this, this._checkForSmartcard)); + this._smartcardRemovedId = this._smartcardManager.connect('smartcard-removed', +@@ -413,7 +414,9 @@ var ShellUserVerifier = new Lang.Class({ + }, + + _updateDefaultService: function() { +- if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY)) ++ if (this._smartcardManager.loggedInWithToken()) ++ this._defaultService = SMARTCARD_SERVICE_NAME; ++ else if (this._settings.get_boolean(PASSWORD_AUTHENTICATION_KEY)) + this._defaultService = PASSWORD_SERVICE_NAME; + else if (this._settings.get_boolean(SMARTCARD_AUTHENTICATION_KEY)) + this._defaultService = SMARTCARD_SERVICE_NAME; +-- +2.14.2 + + +From 3309c476c6815e03f17359155f565118a2ad57b2 Mon Sep 17 00:00:00 2001 +From: Ray Strode +Date: Mon, 28 Sep 2015 19:57:36 -0400 +Subject: [PATCH 3/3] gdm: update default service when smartcard inserted + +Early on at start up we may not know if a smartcard is +available. Make sure we reupdate the default service +after we get a smartcard insertion event. +--- + js/gdm/util.js | 2 ++ + 1 file changed, 2 insertions(+) + +diff --git a/js/gdm/util.js b/js/gdm/util.js +index a44184c17..83a12fb6c 100644 +--- a/js/gdm/util.js ++++ b/js/gdm/util.js +@@ -336,6 +336,8 @@ var ShellUserVerifier = new Lang.Class({ + else if (this._preemptingService == SMARTCARD_SERVICE_NAME) + this._preemptingService = null; + ++ this._updateDefaultService(); ++ + this.emit('smartcard-status-changed'); + } + }, +-- +2.14.2 + diff --git a/SOURCES/gnome-shell-favourite-apps-firefox.patch b/SOURCES/gnome-shell-favourite-apps-firefox.patch new file mode 100644 index 0000000..56c498b --- /dev/null +++ b/SOURCES/gnome-shell-favourite-apps-firefox.patch @@ -0,0 +1,21 @@ +--- gnome-shell-3.13.90/data/org.gnome.shell.gschema.xml.in.firefox 2014-08-20 20:28:07.601133033 +0200 ++++ gnome-shell-3.13.90/data/org.gnome.shell.gschema.xml.in 2014-08-20 20:28:41.741503518 +0200 +@@ -31,7 +31,7 @@ + + + +- [ 'epiphany.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ] ++ [ 'firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ] + List of desktop file IDs for favorite applications + + The applications corresponding to these identifiers +--- a/js/ui/appFavorites.js ++++ b/js/ui/appFavorites.js +@@ -31,6 +31,7 @@ const RENAMED_DESKTOP_IDS = { + 'gnotravex.desktop': 'gnome-tetravex.desktop', + 'gnotski.desktop': 'gnome-klotski.desktop', + 'gtali.desktop': 'tali.desktop', ++ 'mozilla-firefox.desktop': 'firefox.desktop', + 'nautilus.desktop': 'org.gnome.Nautilus.desktop', + 'polari.desktop': 'org.gnome.Polari.desktop', + 'totem.desktop': 'org.gnome.Totem.desktop', diff --git a/SOURCES/gnome-shell-favourite-apps-terminal.patch b/SOURCES/gnome-shell-favourite-apps-terminal.patch new file mode 100644 index 0000000..61fb5d7 --- /dev/null +++ b/SOURCES/gnome-shell-favourite-apps-terminal.patch @@ -0,0 +1,25 @@ +From 92845e02be66c676261d204e06c2b0ea55722738 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Thu, 9 Mar 2017 14:44:32 +0100 +Subject: [PATCH] appFavorites: Add terminal + +--- + data/org.gnome.shell.gschema.xml.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in +index 8fb7f7291..6f1459c86 100644 +--- a/data/org.gnome.shell.gschema.xml.in ++++ b/data/org.gnome.shell.gschema.xml.in +@@ -39,7 +39,7 @@ + + + +- [ 'firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop' ] ++ [ 'firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop', 'gnome-terminal.desktop' ] + List of desktop file IDs for favorite applications + + The applications corresponding to these identifiers +-- +2.14.2 + diff --git a/SOURCES/gnome-shell-favourite-apps-yelp.patch b/SOURCES/gnome-shell-favourite-apps-yelp.patch new file mode 100644 index 0000000..0f82456 --- /dev/null +++ b/SOURCES/gnome-shell-favourite-apps-yelp.patch @@ -0,0 +1,26 @@ +From e95369c7fc044867b074775d7e0bab148180f4fb Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Florian=20M=C3=BCllner?= +Date: Thu, 9 Mar 2017 14:44:03 +0100 +Subject: [PATCH] Add 'yelp' to default favorites + +Help should be easily available, so add it to the default favorites. +--- + data/org.gnome.shell.gschema.xml.in | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/data/org.gnome.shell.gschema.xml.in b/data/org.gnome.shell.gschema.xml.in +index 868d8edc9..8fb7f7291 100644 +--- a/data/org.gnome.shell.gschema.xml.in ++++ b/data/org.gnome.shell.gschema.xml.in +@@ -39,7 +39,7 @@ + + + +- [ 'firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop' ] ++ [ 'firefox.desktop', 'evolution.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'org.gnome.Nautilus.desktop', 'org.gnome.Software.desktop', 'yelp.desktop' ] + List of desktop file IDs for favorite applications + + The applications corresponding to these identifiers +-- +2.14.2 + diff --git a/SOURCES/org.gnome.shell.gschema.override b/SOURCES/org.gnome.shell.gschema.override new file mode 100644 index 0000000..a8646b4 --- /dev/null +++ b/SOURCES/org.gnome.shell.gschema.override @@ -0,0 +1,2 @@ +[org.gnome.shell] +always-show-log-out=true diff --git a/SPECS/gnome-shell.spec b/SPECS/gnome-shell.spec new file mode 100644 index 0000000..8b04859 --- /dev/null +++ b/SPECS/gnome-shell.spec @@ -0,0 +1,1339 @@ +Name: gnome-shell +Version: 3.26.2 +Release: 5%{?dist} +Summary: Window management and application launching for GNOME + +Group: User Interface/Desktops +License: GPLv2+ +Provides: desktop-notification-daemon +URL: https://wiki.gnome.org/Projects/GnomeShell +#VCS: git:git://git.gnome.org/gnome-shell +Source0: http://download.gnome.org/sources/gnome-shell/3.26/%{name}-%{version}.tar.xz +Source1: org.gnome.shell.gschema.override + +# Replace Epiphany with Firefox in the default favourite apps list +Patch1: gnome-shell-favourite-apps-firefox.patch +Patch2: gnome-shell-favourite-apps-yelp.patch +Patch3: gnome-shell-favourite-apps-terminal.patch + +# el7 build fixes +Patch5: 0001-Revert-build-Drop-autotools-support.patch +Patch6: 0002-Revert-build-Remove-included-Makefiles-as-well.patch +Patch7: 0003-build-Remove-check-for-missing-disthook.patch +Patch8: 0004-Revert-build-Use-new-mkenums_simple-function.patch + +# GDM/Lock stuff +Patch10: 0001-gdm-honor-timed-login-delay-even-if-animations-disab.patch +Patch11: 0001-gdm-use-password-authentication-if-all-schemes-are-d.patch +Patch12: 0001-screenShield-unblank-when-inserting-smartcard.patch +Patch13: enforce-smartcard-at-unlock.patch +Patch14: disable-unlock-entry-until-question.patch +Patch15: allow-timed-login-with-no-user-list.patch +Patch16: 0001-data-install-process-working.svg-to-filesystem.patch +Patch17: 0001-loginDialog-make-info-messages-themed.patch +Patch18: 0001-gdm-add-AuthList-control.patch +Patch19: 0002-gdmUtil-enable-support-for-GDM-s-ChoiceList-PAM-exte.patch +Patch20: 0001-loginDialog-only-emit-session-activated-on-user-acti.patch + +# Misc. +Patch30: 0001-shellDBus-Add-a-DBus-method-to-load-a-single-extensi.patch +Patch31: 0001-extensions-Add-a-SESSION_MODE-extension-type.patch +Patch32: 0001-magnifier-don-t-spew-to-console-when-focus-moves-aro.patch +Patch33: 0001-extensionSystem-Notify-about-extension-issues-on-upd.patch +Patch34: 0001-panel-add-an-icon-to-the-ActivitiesButton.patch +Patch35: 0001-app-Fall-back-to-window-title-instead-of-WM_CLASS.patch +Patch36: 0001-windowMenu-Bring-back-workspaces-submenu-for-static-.patch +Patch37: 0001-global-Allow-overriding-the-override-schema.patch +Patch38: 0001-system-don-t-throw-an-exception-if-power-off-disable.patch +Patch39: 0001-padOsd-Ensure-to-pick-pad-devices-only.patch + +%define gnome_bluetooth_version 1:3.9.0 +%define gobject_introspection_version 1.45.4 +%define gjs_version 1.47.0 +%define mutter_version 3.25.90 +%define gtk3_version 3.15.0 +%define eds_version 3.13.90 +%define gnome_desktop_version 3.7.90 +%define json_glib_version 0.13.2 +%define gsettings_desktop_schemas_version 3.21.3 +%define caribou_version 0.4.8 +%define libcroco_version 0.6.8 +%define telepathy_logger_version 0.2.6 +%define gstreamer_version 1.4.5 + +## Needed when we re-autogen +BuildRequires: autoconf >= 2.53 +BuildRequires: automake >= 1.10 +BuildRequires: gettext-devel +BuildRequires: git +BuildRequires: gnome-common >= 2.2.0 +BuildRequires: libtool >= 1.4.3 +BuildRequires: caribou-devel >= %{caribou_version} +BuildRequires: chrpath +BuildRequires: dbus-glib-devel +BuildRequires: desktop-file-utils +BuildRequires: evolution-data-server-devel >= %{eds_version} +BuildRequires: gcr-devel +BuildRequires: gjs-devel >= %{gjs_version} +BuildRequires: glib2-devel +BuildRequires: gobject-introspection >= %{gobject_introspection_version} +BuildRequires: json-glib-devel >= %{json_glib_version} +BuildRequires: upower-devel +BuildRequires: libgnome-keyring-devel +BuildRequires: libnm-gtk-devel +BuildRequires: mesa-libGL-devel +BuildRequires: NetworkManager-glib-devel +BuildRequires: polkit-devel +BuildRequires: startup-notification-devel +BuildRequires: telepathy-glib-devel +BuildRequires: telepathy-logger-devel >= %{telepathy_logger_version} +# for screencast recorder functionality +BuildRequires: gstreamer1-devel >= %{gstreamer_version} +BuildRequires: gtk3-devel >= %{gtk3_version} +BuildRequires: gettext >= 0.19.6 +BuildRequires: libcanberra-devel +BuildRequires: libcroco-devel >= %{libcroco_version} +%if 0%{?rhel} +BuildRequires: python +%else +BuildRequires: python3 +%endif + +# for barriers +BuildRequires: libXfixes-devel >= 5.0 +# used in unused BigThemeImage +BuildRequires: librsvg2-devel +BuildRequires: mutter-devel >= %{mutter_version} +BuildRequires: pulseaudio-libs-devel +%ifnarch s390 s390x ppc ppc64 ppc64p7 +BuildRequires: gnome-bluetooth-libs-devel >= %{gnome_bluetooth_version} +%endif +BuildRequires: control-center +# Bootstrap requirements +BuildRequires: gtk-doc gnome-common +%ifnarch s390 s390x +Requires: gnome-bluetooth%{?_isa} >= %{gnome_bluetooth_version} +%endif +Requires: gnome-desktop3%{?_isa} >= %{gnome_desktop_version} +# wrapper script uses to restart old GNOME session if run --replace +# from the command line +Requires: gobject-introspection%{?_isa} >= %{gobject_introspection_version} +Requires: gjs%{?_isa} >= %{gjs_version} +Requires: gtk3%{?_isa} >= %{gtk3_version} +# needed for loading SVG's via gdk-pixbuf +Requires: librsvg2%{?_isa} +# needed as it is now split from Clutter +Requires: json-glib%{?_isa} >= %{json_glib_version} +# For $libdir/mozilla/plugins +Requires: mozilla-filesystem%{?_isa} +Requires: mutter%{?_isa} >= %{mutter_version} +Requires: upower%{?_isa} +Requires: polkit%{?_isa} >= 0.100 +Requires: gnome-desktop3%{?_isa} >= %{gnome_desktop_version} +Requires: gsettings-desktop-schemas%{?_isa} >= %{gsettings_desktop_schemas_version} +Requires: libcroco%{?_isa} >= %{libcroco_version} +Requires: telepathy-logger%{?_isa} >= %{telepathy_logger_version} +Requires: gstreamer1%{?_isa} >= %{gstreamer_version} +# needed for schemas +Requires: at-spi2-atk%{?_isa} +# needed for on-screen keyboard +Requires: caribou%{?_isa} >= %{caribou_version} +# needed for the user menu +Requires: accountsservice-libs%{?_isa} +Requires: gdm-libs%{?_isa} +# needed for settings items in menus +Requires: control-center +# needed by some utilities +%if 0%{?rhel} +Requires: python%{_isa} +%else +Requires: python3%{_isa} +%endif +# needed for the dual-GPU launch menu +#Requires: switcheroo-control +# needed for clocks/weather integration +Requires: geoclue2-libs%{?_isa} +Requires: libgweather%{?_isa} + +%description +GNOME Shell provides core user interface functions for the GNOME 3 desktop, +like switching to windows and launching applications. GNOME Shell takes +advantage of the capabilities of modern graphics hardware and introduces +innovative user interface concepts to provide a visually attractive and +easy to use experience. + +%package browser-plugin +Summary: Browser plugin to install extensions from extensions.gnome.org +Requires: %{name} = %{version}-%{release} +Requires: mozilla-filesystem%{?_isa} + +%description browser-plugin +The "GNOME Shell Integration" plugin provides integration with +Gnome Shell for live extension enabling and disabling. It can +be used only by extensions.gnome.org. + +%prep +%autosetup -S git + +%build +%if 0%{?rhel} +# Use Python 2 +sed -i -e 's/AM_PATH_PYTHON(\[3\])/AM_PATH_PYTHON([2.5])/' configure.ac +autoreconf -fi +%endif + +(if ! test -x configure; then NOCONFIGURE=1 ./autogen.sh; fi; + %configure --disable-static --disable-compile-warnings) +make V=1 %{?_smp_mflags} + +%install +%make_install + +rm -rf %{buildroot}/%{_libdir}/mozilla/plugins/*.la + +# Create empty directories where other packages can drop extensions +mkdir -p %{buildroot}%{_datadir}/gnome-shell/extensions +mkdir -p %{buildroot}%{_datadir}/gnome-shell/search-providers + +cp %{SOURCE1} %{buildroot}/%{_datadir}/glib-2.0/schemas + +%find_lang %{name} + +%check +desktop-file-validate %{buildroot}%{_datadir}/applications/org.gnome.Shell.desktop +desktop-file-validate %{buildroot}%{_datadir}/applications/gnome-shell-extension-prefs.desktop +desktop-file-validate %{buildroot}%{_datadir}/applications/evolution-calendar.desktop + +%preun +glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null ||: + +%posttrans +glib-compile-schemas --allow-any-name %{_datadir}/glib-2.0/schemas &> /dev/null ||: + +%files -f %{name}.lang +%license COPYING +%doc README +%{_bindir}/gnome-shell +%{_bindir}/gnome-shell-extension-tool +%{_bindir}/gnome-shell-perf-tool +%{_bindir}/gnome-shell-extension-prefs +%{_datadir}/glib-2.0/schemas/*.xml +%{_datadir}/glib-2.0/schemas/*.override +%{_datadir}/applications/org.gnome.Shell.desktop +%{_datadir}/applications/gnome-shell-extension-prefs.desktop +%{_datadir}/applications/evolution-calendar.desktop +%{_datadir}/applications/org.gnome.Shell.PortalHelper.desktop +%{_datadir}/gnome-control-center/keybindings/50-gnome-shell-system.xml +%{_datadir}/gnome-shell +%{_datadir}/gnome-shell/theme +%{_datadir}/gnome-shell/theme/*.svg +%{_datadir}/dbus-1/services/org.gnome.Shell.CalendarServer.service +%{_datadir}/dbus-1/services/org.gnome.Shell.HotplugSniffer.service +%{_datadir}/dbus-1/services/org.gnome.Shell.PortalHelper.service +%{_datadir}/dbus-1/interfaces/org.gnome.Shell.PadOsd.xml +%{_datadir}/dbus-1/interfaces/org.gnome.Shell.Screencast.xml +%{_datadir}/dbus-1/interfaces/org.gnome.Shell.Screenshot.xml +%{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider.xml +%{_datadir}/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml +# Co own directory instead of pulling in xdg-desktop-portal - we +# are providing a backend to the portal, not depending on it +%dir %{_datadir}/xdg-desktop-portal/portals/ +%{_datadir}/xdg-desktop-portal/portals/gnome-shell.portal +%{_libdir}/gnome-shell/ +%{_libexecdir}/gnome-shell-calendar-server +%{_libexecdir}/gnome-shell-perf-helper +%{_libexecdir}/gnome-shell-hotplug-sniffer +%{_libexecdir}/gnome-shell-portal-helper +# Co own these directories instead of pulling in GConf +# after all, we are trying to get rid of GConf with these files +%dir %{_datadir}/GConf +%dir %{_datadir}/GConf/gsettings +%{_datadir}/GConf/gsettings/gnome-shell-overrides.convert +%{_mandir}/man1/%{name}.1.gz +# exclude as these should be in a devel package for st etc +%exclude %{_datadir}/gtk-doc + +%files browser-plugin +%{_libdir}/mozilla/plugins/*.so + +%changelog +* Wed Feb 14 2018 Ray Strode - 3.26.2-5 +- Make session selection bullet isn't shown on wrong item + Resolves: #1527145 + +* Tue Feb 13 2018 Ray Strode - 3.26.2-4 +- Fix timed login + Resolves: #1527143 + +* Wed Feb 07 2018 Carlos Garnacho - 3.26.2-3 +- Fix pad device lookup from event node path + Resolves: #1537879 + +* Mon Nov 13 2017 Ray Strode - 3.26.2-2 +- Don't throw an exception is poweroff is disabled + Resolves: #1512662 + +* Fri Nov 03 2017 Kalev Lember - 3.26.2-1 +- Update to 3.26.2 +- Related: #1481381 + +* Thu Oct 26 2017 Florian Müllner - 3.26.1-2 +- Add CLI option to specify a custom override schema + Resolves: #1432505 + +* Fri Oct 06 2017 Florian Müllner - 3.26.1-1 +- Update to 3.26.1 + Resolves: #1481381 + +* Wed Jul 26 2017 Ray Strode - 3.22.3-18 +- Support GDM ChoiceList pam extensions + Related: #1413900 + +* Mon Jun 26 2017 Ray Strode - 3.22.3-17 +- Fix PAM info messages in unlock screen + Related: #1449359 + +* Wed Jun 14 2017 Ray Strode - 3.22.3-16 +- Address race with g-s-d startup + Related: #1450176 + +* Wed Jun 14 2017 Ray Strode 3.22.3-15 +- Allow PAM modules to ask questions that require empty answers + Resolves: #1448503 + +* Thu Jun 08 2017 Ray Strode - 3.22.3-14 +- fix unlock after upgrade + Related: #1448786 +- switch from setup to autosetup -S git for easier patch maintenance + +* Thu Jun 08 2017 Florian Müllner - 3.22.3-13 +- Drop gnome-session-xsession dependency again +- Resolves: #1449246 + +* Wed Jun 07 2017 Ray Strode - 3.22.3-12 +- Fix escape after password failure + Resolves: #1446759 + +* Tue Jun 06 2017 Ray Strode - 3.22.3-11 +- Correct typo in timed login patch + Related: #1446762 + +* Wed May 31 2017 Florian Müllner - 3.22.3-10 +- Fix initial visibility of network summary items +- Resolves: #1435376 + +* Fri Apr 28 2017 Florian Müllner - 3.22.3-9 +- Re-add requirements dropped in the rebase +- Resolves: #1386959 + +* Wed Mar 22 2017 Florian Müllner - 3.22.3-8 +- Fix some coverity warnings +- Resolves: #1386959 + +* Tue Mar 21 2017 Florian Müllner - 3.22.3-7 +- Respect lockscreen lockdown +- Resolves: #1414898 + +* Tue Mar 21 2017 Florian Müllner - 3.22.3-7 +- Fix previous patch after re-testing +- Resolves: #1259538 + +* Tue Mar 14 2017 Florian Müllner - 3.22.3-6 +- Handle missing fprint service +- Resolves: #1259538 + +* Tue Mar 14 2017 Florian Müllner - 3.22.3-5 +- Close Wifi selection dialog on screen lock +- Resolves: #1379468 + +* Tue Mar 14 2017 Florian Müllner - 3.22.3-4 +- Keep VPN list sorted +- Resolves: #1404663 + +* Tue Mar 14 2017 Florian Müllner - 3.22.3-3 +- Bring back workspaces submenu for static workspaces +- Resolves: #1367319 + +* Thu Mar 09 2017 Florian Müllner - 3.22.3-2 +- Re-add downstream patches +- Resolves: #1386959 + +* Thu Feb 16 2017 Kalev Lember - 3.22.3-1 +- Update to 3.22.3 +- Resolves: #1386959 + +* Fri Sep 09 2016 Florian Müllner - 3.14.4-53 +- Improve cycle keybindings + Resolves: #1306670 + +* Mon Jul 18 2016 Rui Matos - 3.14.4-52 +- Require a mutter version that provides all the new APIs + Related: rhbz#1330488 + +* Tue Jul 12 2016 Ray Strode - 3.14.4-51 +- Backport patch to fix crash at start up + Resolves: #1354560 + Related: #1353249 + +* Fri Jul 08 2016 Florian Müllner - 3.14.4-50 +- Allow constructing ShellApp from AppInfo + Related: #1353249 + +* Thu Jun 30 2016 Owen Taylor - 3.14.4-49 +- Fix bug where maximized windows would flicker to the wrong size when + restarting the shell (on stereo enable or otherwise) + Resolves: #1306802 + +* Wed Jun 29 2016 Rui Matos - 3.14.4-48 +- Handle video memory purge errors + Resolves: #1330488 + +* Fri Jun 24 2016 Florian Müllner - 3.14.4-47 +- Update translations + Resolves: #1272377 + +* Tue May 31 2016 Florian Müllner - 3.14.4-46 +- Fix cycle keybindings + Resolves: #1306670 + +* Fri May 27 2016 Florian Müllner - 3.14.4-45 +- Set logind's LockedHint when locked + Resolves: #1329803 + +* Thu May 19 2016 Florian Müllner - 3.14.4-44 +- Always show network icon when connected + Resolves: #1100812 + +* Fri May 13 2016 Florian Müllner - 3.14.4-43 +- Fix visibility issue in last patch + Resolves: #1186954 + +* Fri May 13 2016 Florian Müllner - 3.14.4-42 +- Summarize network device sections with too many devices + Resolves: #1186954 + +* Fri May 13 2016 Florian Müllner - 3.14.4-41 +- Fix windowless apps in switcher + Resolves: #1329306 + +* Tue Apr 19 2016 Ray Strode - 3.14.4-40 +- Allow timed login with no user list + Resolves: #1301263 + +* Thu Mar 31 2016 Florian Müllner - 3.14.4-39 +- Include translation updates + Related: #1272377 + +* Fri Mar 04 2016 Florian Müllner - 3.14.4-38 +- Use font-relative menu widths + Related: #1257146 + +* Fri Mar 04 2016 Florian Müllner - 3.14.4-37 +- Fix clicks on window-list items after dismissing context menu + Related: #1268689 + +* Fri Mar 04 2016 Florian Müllner - 3.14.4-37 +- Request minimum gstreamer1 version + Related: #1290446 + +* Tue Oct 13 2015 Ray Strode 3.14.4-37 +- Fix Username: entry when disable-user-list is on + Related: #1262999 + Resolves: 1270378 + +* Thu Oct 08 2015 Florian Müllner - 3.14.4-36 +- Improve connecting to a headless shell via VNC + Related: #1243856 + +* Mon Oct 05 2015 Ray Strode 3.14.4-35 +- Ensure the unlock password entry is desensitized when there's + no password being asked for (Such as when the message is just + "Please insert smartcard") + Resolves: #1262999 + +* Mon Sep 28 2015 Ray Strode 3.14.4-33 +- Enforce smartcard at unlock time, if it's used to login + Resolves: #1263759 + +* Thu Sep 24 2015 Matthias Clasen - 3.14.4-32 +- Avoid abrt reports when the session bus is going away early + Resolves: #1254986 + +* Mon Sep 21 2015 Florian Müllner - 3.14.4-31 +- Notify about outdated extensions on updates + Related: #1261552 + +* Fri Sep 18 2015 Ray Strode 3.14.4-30 +- Another timed login update. Makes the indicator work + when animations are disabled. + Related: #1252424 + +* Tue Sep 15 2015 Ray Strode 3.14.4-29 +- Fix spew when turning on magnifier + Resolves: #1260057 + +* Tue Sep 15 2015 Ray Strode 3.14.4-28 +- Drop gnome-session-xsession dependency + Resolves: #1251495 + +* Fri Sep 11 2015 Ray Strode 3.14.4-27 +- Actually apply patch to unblank when inserting smartcard + Related: #1201756 + +* Tue Aug 18 2015 Ray Strode 3.14.4-26 +- Fix timed login in virtual machines + Resolves: #1252424 + +* Wed Aug 05 2015 Ray Strode 3.14.4-25 +- Fix user switching, which broke in 3.14.4-17 + Related: #1220023 + +* Thu Jul 30 2015 Florian Müllner - 3.14.4-24 +- Fix some menu ornament oddities + Related: #1174373 + +* Fri Jul 24 2015 Florian Müllner - 3.14.4-23 +- Fix a couple more warnings when running headless + Related: #1243856 + +* Thu Jul 23 2015 Ray Strode 3.14.4-22 +- One more update to Next button handling + Resolves: 1240623 + Related: #1240615 + Related: #1174373 + +* Wed Jul 22 2015 Ray Strode 3.14.4-21 +- Make sure Next button starts out desensitized + Resolves: 1240623 + Related: #1240615 + Related: #1174373 + +* Fri Jul 17 2015 Ray Strode 3.14.4-20 +- set next button to next when asking for username + Resolves: 1240615 + Related: #1174373 + +* Fri Jul 17 2015 Florian Müllner - 3.14.4-19 +- Fix bottom tray handling when running headless + Related: #1243856 + +* Thu Jul 16 2015 Florian Müllner - 3.14.4-18 +- Support headless start + Resolves: #1243856 + +* Wed Jul 15 2015 Ray Strode 3.14.4-17 +- Fix wonkiness if user hits escape from Not Listed screen + after typing wrong password + Resolves: #1220023 + +* Fri Jul 10 2015 Florian Müllner - 3.14.4-16 +- Fix user list scrolling on login screen + Resolves: #1184802 + +* Wed Jul 08 2015 Milan Crha 3.14.4-15 +- Rebuild against updated libical and evolution-data-server + Related: #1209787 + +* Wed Jul 08 2015 Milan Crha 3.14.4-14 +- Rebuild against updated libical + Related: #1209787 + +* Fri Jul 03 2015 Ray Strode 3.14.4-13 +- Unblank screen when a smartcard is inserted + Resolves: #1201756 + +* Wed Jul 01 2015 Ray Strode 3.14.4-12 +- Ensure password authentication is used if no authentication scheme is configured +- Ensure smartcard authentication is used if smartcard authentication is configured + + Related: #1174373 1034968 + +* Tue Jun 30 2015 Ray Strode 3.14.4-11 +- Fix cancel button from Not Listed? screen + Resolves: #1182035 + +* Thu Jun 25 2015 Ray Strode 3.14.4-10 +- Make login banner overflow to book view at the right time + Resolves: #1217157 + +* Fri Jun 12 2015 Florian Müllner - 3.14.4-9 +- Make login banner message more prominent + Resolves: rhbz#1182223 + +* Thu May 21 2015 Florian Müllner - 3.14.4-8 +- Pass mode parameter with accelerators + Resolves: rhbz#1028451 + +* Wed May 20 2015 Florian Müllner - 3.14.4-7 +- Change fallback app name + Resolves: rhbz#1125788 + +* Wed May 20 2015 Ray Strode 3.14.4-6 +- More login screen backports + Related: rhbz#1174373 + +* Thu May 14 2015 Florian Müllner - 3.14.4-5 +- Fix enabling/disabling per-app notifications + Resolves: rhbz#1051132 + +* Fri May 08 2015 Florian Müllner - 3.14.4-4 +- Fix removal of libgsystem dependency + Related: rhbz#1174373 + +* Thu May 7 2015 Matthias Clasen - 3.14.4-3 +- Drop use of libgsystem + Related: rhbz#1174373 + +* Thu May 07 2015 Ray Strode 3.14.4-2 +- Drop chrpath weirdness +- Readd browser plugin +- Drop wayland desktop file + Related: rhbz#1174373 + +* Thu May 04 2015 Florian Müllner - 3.14.4-1 +- Update to latest stable 3.14 release + +* Mon May 04 2015 Florian Müllner - 3.8.4-46 +- Rebuild for eds so name bump + +* Thu Nov 13 2014 Ray Strode 3.8.4-45 +- Don't inform GDM about session changes that came from GDM + Resolves: #1163474 + +* Wed Nov 12 2014 Ray Strode 3.8.4-44 +- If password authentication is disabled and smartcard authentication is + enabled and smartcard isn't plugged in at start up, prompt user for + smartcard + Resolves: #1159385 + +* Wed Nov 12 2014 Ray Strode - 3.8.4-43 +- Support long login banner messages more effectively + Resolves: #1110036 + +* Fri Oct 17 2014 Florian Müllner - 3.8.4-42 +- Respect disk-writes lockdown setting + Resolves: rhbz#1154122 + +* Sat Oct 11 2014 Florian Müllner - 3.8.4-41 +- Disallow consecutive screenshot requests to avoid an OOM situation + Resolves: rhbz#1154107 + +* Fri Oct 10 2014 Florian Müllner - 3.8.4-41 +- Add option to limit app switcher to current workspace + Resolves: rhbz#1101568 + +* Fri Oct 10 2014 Florian Müllner - 3.8.4-40 +- Try harder to use the default calendar application + Resolves: rhbz#1052201 + +* Fri Oct 10 2014 Florian Müllner - 3.8.4-40 +- Update workspace switcher fix + Resolves: rhbz#1092102 + +* Thu Oct 09 2014 Florian Müllner - 3.8.4-39 +- Validate screenshot parameters + Resolves: rhbz#1104694 + +* Thu Oct 09 2014 Florian Müllner - 3.8.4-38 +- Fix shrinking workspace switcher + Resolves: rhbz#1092102 + +* Thu Oct 09 2014 Florian Müllner - 3.8.4-38 +- Update fix for vertical monitor layouts to upstream fix + Resolves: rhbz#1075240 + +* Wed Oct 08 2014 Ray Strode 3.8.4-38 +- Fix traceback introduced in 3.8.4-36 when unlocking via + user switcher + Related: #1101333 + +* Tue Oct 07 2014 Ray Strode 3.8.4-37 +- Fix problems with LDAP and disable-user-list=TRUE + Resolves: rhbz#1137041 + +* Mon Oct 06 2014 Ray Strode 3.8.4-36 +- Fix login screen focus issue following idle + Resolves: rhbz#1101333 + +* Sun Oct 05 2014 Ray Strode 3.8.4-35 +- Disallow cancel from login screen before login attempt + has been initiated. + Resolves: rhbz#1109530 + +* Sun Oct 05 2014 Ray Strode 3.8.4-34 +- Disallow cancel from login screen after login is already + commencing. + Resolves: rhbz#1079294 + +* Thu Jul 17 2014 Owen Taylor 3.8.4-33 +- Add a patch for quadbuffer stereo suppport + Resolves: rhbz#1108893 + +* Wed Apr 16 2014 Florian Müllner - 3.8.4-32 +- Improve vertical monitor layouts + Resolves: rhbz#1075240 + +* Wed Mar 19 2014 Florian Müllner - 3.8.4-31 +- Fix some more background memory leaks + Resolves: rhbz#1027192 + +* Wed Mar 12 2014 Ray Strode 3.8.4-30 +- Fix automatic shield lifting when smartcard is inserted + Resolves: #1063488 + +* Mon Mar 10 2014 Ray Strode 3.8.4-29 +- Don't show user list if require smartcard is true + Resolves: #1063390 + +* Mon Mar 10 2014 Ray Strode 3.8.4-28 +- Only react to login token (not any token) when performing unlock + Resolves: #1064972 + +* Sat Mar 08 2014 Florian Müllner - 3.8.4-27 +- Backport background memory leak fixes + Resolves: rhbz#1027192 + +* Sat Mar 08 2014 Florian Müllner - 3.8.4-26 +- Do not load user list in login screen when disabled + Resolves: rhbz#1053102 + +* Thu Mar 06 2014 Florian Müllner - 3.8.4-25 +- Fix loading of remote search providers + Resolves: #1030948 + +* Mon Feb 17 2014 Ray Strode 3.8.4-24 +- Make login banner more prominent + Resolves: #1061996 + +* Wed Jan 29 2014 Ray Strode 3.8.4-23 +- Fix traceback in log + Resolves: #1034966 + +* Fri Jan 24 2014 Daniel Mach - 3.8.4-22 +- Mass rebuild 2014-01-24 + +* Tue Jan 21 2014 Ray Strode 3.8.4-21 +- Add branding next to activities button + Resolves: #1052984 + +* Mon Jan 13 2014 Ray Strode 3.8.4-20 +- Fix undefined variable + Resolves: #1049897 + +* Wed Jan 08 2014 Ray Strode 3.8.4-19 +- Allow session mode to be specified by environment variable + +* Fri Dec 27 2013 Daniel Mach - 3.8.4-18 +- Mass rebuild 2013-12-27 + +* Wed Dec 4 2013 Matthias Clasen - 3.8.4-17 +- Add gnome-terminal to favorites, remove empathy +- Resolves: #1038168 + +* Fri Nov 15 2013 Florian Müllner - 3.8.4-15 +- Close run dialog on mode changes when the new session mode doesn't allow it + Resolves: rhbz#1031142 +- Prevent fallback keyring dialog to appear on lock screen + +* Fri Nov 8 2013 Rui Matos - 3.8.4-14 +- Add a DBus method to load a single extension + Resolves: rhbz#1028466 +- Add a SESSION_MODE extension type + Resolves: rhbz#1028462 + +* Fri Nov 08 2013 Ray Strode 3.8.4-13 +- Fix input regression caused by -12 + Related: #817594 + +* Thu Nov 07 2013 Ray Strode 3.8.4-12 +- Show banner text when disable-user-list = TRUE + Resolves: #817594 + +* Mon Nov 04 2013 Florian Müllner - 3.8.4-11 +- Re-add yelp to default favorites - this downstream patch was + accidentally dropped when rebasing on F19 + Resolves: #958196 +- Fix network icon not updating + Resolves: #1009867 +- Do not hide on/off switch while connecting to wireless + Resolves: #908829 +- Fix apps menu not being disabled when open during screen lock + Resolves: #1027501 +- Be more defensive when enabling/disabling extensions + Resolves: #1027501 +- Re-enable browser plugin and move it to a subpackage + Resolves: #972783 + +* Fri Nov 01 2013 Florian Müllner - 3.8.4-10 +- Backport support for hasWorkspaces session mode property + Resolves: #1025444 +- Backport input validation of screenshot/screencast DBus methods + Resolves: #1022491 + +* Thu Oct 31 2013 Florian Müllner - 3.8.4-9 +- Backport switch to disable browser plugin +- Disable browser plugin +Resolves: #972783 + +* Thu Oct 31 2013 Matthias Clasen 3.8.4-8 +- Add an override for always-show-log-out +- Resolves: #913566 + +* Tue Oct 15 2013 Vinzenz Feenstra 3.8.4-7 +- Backport of support for pre-authenticated logins from oVirt + Related: #854712 + +* Thu Aug 29 2013 Ray Strode 3.8.4-6 +- Another backported ui fix + Related: #854724 + +* Tue Aug 27 2013 Ray Strode 3.8.4-5 +- Backport some login screen ui updates + Related: #854724 + +* Thu Aug 22 2013 Ray Strode 3.8.4-4 +- Backport some more smartcard related fixes + Related: #854724 + +* Tue Aug 06 2013 Ray Strode 3.8.4-3 +- Backport some lock screen fixes related to smartcard support + from upstream + Related: #854724 + +* Wed Jul 31 2013 Ray Strode 3.8.4-2 +- Include support for smartcard authentication + Related: #854724 + +* Tue Jul 30 2013 Ray Strode - 3.8.4-1 +- Update to 3.8.4 + +* Wed Jun 26 2013 Florian Müllner - 3.8.3-3 +- Backport upstream patch that makes a common error non-fatal + +* Wed Jun 12 2013 Kalev Lember - 3.8.3-2 +- Rebuilt against fixed cogl (#973542) + +* Fri Jun 07 2013 Florian Müllner - 3.8.3-1 +- Update to 3.8.3, drop upstreamed patches + +* Wed May 22 2013 Matthias Clasen - 3.8.2-3 +- Drop the gnome-session-xsession dependency again, it + has unwanted side-effects on eg soas + +* Tue May 14 2013 Florian Müllner - 3.8.2-2 +- Include upstream fix for bug #962876 + +* Mon May 13 2013 Florian Müllner - 3.8.2-1 +- Update to 3.8.2 and drop upstreamed patches + +* Tue May 07 2013 Florian Müllner - 3.8.1-4 +- Add login-screen branding changes from gnome-3-8 branch as downstream patches + +* Wed May 01 2013 Kalev Lember - 3.8.1-2 +- Add missing telepathy-logger runtime dep +- Depend on gnome-session-xsession so that it gets pulled in for + typical GNOME installs + +* Tue Apr 16 2013 Florian Müllner - 3.8.1-1 +- Update to 3.8.1 + +* Thu Mar 28 2013 Adel Gadllah - 3.8.0.1-2 +- Ship the perf tool + +* Wed Mar 27 2013 Ray Strode - 3.8.0.1-1 +- Update to 3.8.0.1 + +* Tue Mar 26 2013 Florian Müllner - 3.8.0-1 +- Update to 3.8.0 + +* Wed Mar 26 2013 Florian Müllner +- Drop upstreamed patch + +* Wed Mar 20 2013 Ray Strode 3.7.92-2 +- Fix initial setup + +* Tue Mar 19 2013 Florian Müllner - 3.7.92-1 +- Update to 3.7.92 + +* Tue Mar 05 2013 Florian Müllner - 3.7.91-1 +- Update to 3.7.91 + +* Wed Feb 20 2013 Florian Müllner - 3.7.90-1 +- Update to 3.7.90 + +* Wed Feb 06 2013 Kalev Lember - 3.7.5-2 +- Rebuilt for libgcr soname bump + +* Wed Feb 06 2013 Florian Müllner - 3.7.5-1 +- Update to 3.7.5 + +* Fri Jan 25 2013 Peter Robinson 3.7.4.1-2 +- Rebuild for new cogl + +* Thu Jan 17 2013 Florian Müllner - 3.7.4.1-1 +- Update to 3.7.4.1 + +* Tue Jan 15 2013 Florian Müllner - 3.7.4-1 +- Update to 3.7.4 + +* Wed Jan 09 2013 Richard Hughes - 3.7.3.1-1 +- Update to 3.7.3.1 + +* Tue Dec 18 2012 Florian Müllner 3.7.3-1 +- Update to 3.7.3 + +* Mon Dec 17 2012 Adam Jackson 3.7.2-3 +- Also don't mangle rpath on power + +* Mon Dec 10 2012 Adam Jackson 3.7.2-2 +- Disable bluetooth on power + +* Mon Nov 19 2012 Florian Müllner - 3.7.2-1 +- Update to 3.7.2 + +* Tue Nov 13 2012 Dan Horák - 3.7.1-2 +- don't Require: gnome-bluetooth on s390(x) + +* Fri Nov 09 2012 Kalev Lember - 3.7.1-1 +- Update to 3.7.1 + +* Wed Oct 31 2012 Brian Pepple - 3.6.1-5 +- Rebuild against latest telepathy-logger + +* Thu Oct 25 2012 Milan Crha - 3.6.1-4 +- Rebuild against newer evolution-data-server + +* Sat Oct 20 2012 Dan Horák - 3.6.1-3 +- explicit BR: control-center as it isn't brought in indirectly on s390(x) + +* Thu Oct 18 2012 Florian Müllner - 3.6.1-2 +- Remove avoid-redhat-menus patch + + The standard way of supporting a desktop-specific menu layout is + to set XDG_MENU_PREFIX (which we made gnome-session do now). + +* Mon Oct 15 2012 Florian Müllner - 3.6.1-1 +- Update to 3.6.1 + +* Tue Sep 25 2012 Florian Müllner - 3.6.0-1 +- Update to 3.6.0 + +* Wed Sep 19 2012 Florian Müllner - 3.5.92-1 +- Update to 3.5.92 + +* Tue Sep 11 2012 Florian Müllner - 3.5.91-1 +- Update dependencies + +* Tue Sep 04 2012 Richard Hughes - 3.5.91-1 +- Update to 3.5.91 + +* Tue Aug 28 2012 Matthias Clasen - 3.5.90-3 +- Rebuild against new cogl/clutter + +* Mon Aug 27 2012 Debarshi Ray - 3.5.90-2 +- Rebuild for new libcamel and synchronize gnome-bluetooth Requires with + BuildRequires. + +* Wed Aug 22 2012 Richard Hughes - 3.5.90-1 +- Update to 3.5.90 + +* Tue Aug 14 2012 Debarshi Ray - 3.5.5-2 +- Add Requires: gnome-bluetooth >= 3.5.5 + +* Mon Aug 13 2012 Debarshi Ray - 3.5.5-1 +- Update to 3.5.5 + +* Fri Jul 27 2012 Fedora Release Engineering - 3.5.4-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sat Jul 21 2012 Kalev Lember - 3.5.4-4 +- Tighten runtime requires + +* Thu Jul 19 2012 Matthias Clasen - 3.5.4-3 +- Add a gdm-libs dependency + +* Wed Jul 18 2012 Colin Walters - 3.5.4-2 +- Bump release + +* Wed Jul 18 2012 Ray Strode 3.5.4-1 +- Update to 3.5.4 + +* Tue Jun 26 2012 Matthias Clasen - 3.5.3-2 +- Rebuild against new e-d-s + +* Tue Jun 26 2012 Matthias Clasen - 3.5.3-1 +- Update to 3.5.3 + +* Thu Jun 07 2012 Richard Hughes - 3.5.2-2 +- Remove upstreamed patch + +* Thu Jun 07 2012 Richard Hughes - 3.5.2-1 +- Update to 3.5.2 + +* Mon May 28 2012 Peter Robinson - 3.4.1-6 +- Cherry pick F17 changes, bump build for new evo soname + +* Wed May 16 2012 Owen Taylor - 3.4.1-5 +- New version of unmount notification + +* Tue May 15 2012 Owen Taylor - 3.4.1-4 +- Add a patch to display a notification until it's safe to remove a drive (#819492) + +* Fri Apr 20 2012 Owen Taylor - 3.4.1-3 +- Add a patch from upstream to avoid a crash when Evolution is not installed (#814401) + +* Wed Apr 18 2012 Kalev Lember - 3.4.1-2 +- Silence glib-compile-schemas scriplets + +* Wed Apr 18 2012 Kalev Lember - 3.4.1-1 +- Update to 3.4.1 + +* Thu Apr 5 2012 Owen Taylor - 3.4.0-2 +- Change gnome-shell-favourite-apps-firefox.patch to also patch the JS code + to handle the transition from mozilla-firefox.desktop to firefox.desktop. + (#808894, reported by Jonathan Kamens) + +* Tue Mar 27 2012 Richard Hughes - 3.4.0-1 +- Update to 3.4.0 + +* Wed Mar 21 2012 Matthias Clasen - 3.3.92-1 +- Update to 3.3.92 + +* Sat Mar 10 2012 Matthias Clasen - 3.3.90-2 +- Rebuild for new cogl + +* Sat Feb 26 2012 Matthias Clasen - 3.3.90-1 +- Update to 3.3.90 + +* Thu Feb 9 2012 Matthias Clasen - 3.3.5-2 +- Depend on accountsservice-libs (#755112) + +* Tue Feb 7 2012 Matthias Clasen - 3.3.5-1 +- Update to 3.3.5 + +* Fri Jan 20 2012 Matthias Clasen - 3.3.4-1 +- Update to 3.3.4 + +* Thu Jan 19 2012 Matthias Clasen - 3.3.3-2 +- Rebuild for new cogl + +* Thu Jan 5 2012 Matthias Clasen - 3.3.3-1 +- Update to 3.3.3 + +* Sun Nov 27 2011 Peter Robinson - 3.3.2-2 +- Rebuild for new clutter and e-d-s + +* Wed Nov 23 2011 Matthias Clasen - 3.3.2-1 +- Update to 3.3.2 + +* Wed Nov 09 2011 Kalev Lember - 3.2.1-6 +- Adapt to firefox desktop file name change in F17 + +* Thu Nov 03 2011 Adam Jackson 3.2.1-5 +- Build with -Wno-error=disabled-declarations for the moment + +* Wed Nov 02 2011 Brian Pepple - 3.2.1-4 +- Rebuld against tp-logger. + +* Sun Oct 26 2011 Bruno Wolff III - 3.2.1-3 +- Rebuild for new evolution-data-server + +* Wed Oct 26 2011 Fedora Release Engineering - 3.2.1-2 +- Rebuilt for glibc bug#747377 + +* Wed Oct 19 2011 Matthias Clasen - 3.2.1-1 +- Update to 3.2.1 + +* Wed Sep 28 2011 Ray Strode 3.2.0-2 +- rebuild + +* Mon Sep 26 2011 Owen Taylor - 3.2.0-1 +- Update to 3.2.0 + +* Tue Sep 20 2011 Matthias Clasen - 3.1.92-1 +- Update to 3.1.92 + +* Fri Sep 16 2011 Kalev Lember - 3.1.91.1-2 +- Tighten dependencies by specifying the required arch (#739130) + +* Wed Sep 14 2011 Owen Taylor - 3.1.91.1-1 +- Update to 3.1.91.1 (adds browser plugin) + Update Requires + +* Thu Sep 08 2011 Dan Horák - 3.1.91-3 +- workaround a chrpath issue on s390(x) + +* Wed Sep 07 2011 Kalev Lember - 3.1.91-2 +- Replace Epiphany with Firefox in the default favourite apps + +* Wed Sep 7 2011 Matthias Clasen - 3.1.91-1 +- Update to 3.1.91 + +* Thu Sep 1 2011 Matthias Clasen - 3.1.90.1-2 +- Require caribou + +* Wed Aug 31 2011 Matthias Clasen - 3.1.90.1-1 +- Update to 3.1.90.1 + +* Wed Aug 31 2011 Adam Williamson - 3.1.4-3.gite7b9933 +- rebuild against e-d-s + +* Fri Aug 19 2011 Matthias Clasen - 3.1.4-2.gite7b9933 +- git snapshot that builds against gnome-menus 3.1.5 + +* Thu Aug 18 2011 Matthew Barnes - 3.1.5-1 +- Rebuild against newer eds libraries. + +* Wed Jul 27 2011 Matthias Clasen - 3.1.4-1 +- Update to 3.1.4 + +* Wed Jul 27 2011 Matthias Clasen - 3.1.3-4 +- Rebuild + +* Tue Jul 26 2011 Matthias Clasen - 3.1.3-3 +- Add necessary requires + +* Mon Jul 25 2011 Matthias Clasen - 3.1.3-2 +- Rebuild + +* Tue Jul 5 2011 Peter Robinson - 3.1.3-1 +- Upstream 3.1.3 dev release + +* Mon Jun 27 2011 Adam Williamson - 3.0.2-4 +- add fixes from f15 branch (gjs dep and rpath) + +* Wed Jun 22 2011 Owen Taylor - 3.0.2-3 +- Add a patch from upstream to avoid g_file_get_contents() + +* Fri Jun 17 2011 Tomas Bzatek - 3.0.2-2 +- Rebuilt for new gtk3 and gnome-desktop3 + +* Wed May 25 2011 Owen Taylor - 3.0.2-1 +- Update to 3.0.2 + +* Tue May 10 2011 Dan Williams - 3.0.1-4 +- Fix initial connections to WPA Enterprise access points (#699014) +- Fix initial connections to mobile broadband networks + +* Thu Apr 28 2011 Dan Horák - 3.0.1-3 +- no bluetooth on s390(x) + +* Wed Apr 27 2011 Owen Taylor - 3.0.1-2 +- Add a patch from upstream to fix duplicate applications in application display + +* Mon Apr 25 2011 Owen Taylor - 3.0.1-1 +- Update to 3.0.1 + +* Mon Apr 11 2011 Colin Walters - 3.0.0.2-2 +- We want to use the GNOME menus which has the designed categories, + not the legacy redhat-menus. + +* Fri Apr 08 2011 Nils Philippsen - 3.0.0.2-1 +- Update to 3.0.0.2 (fixes missing import that was preventing extensions from + loading.) +- Update source URL + +* Tue Apr 5 2011 Owen Taylor - 3.0.0.1-1 +- Update to 3.0.0.1 (fixes bug where network menu could leave + Clutter event handling stuck.) + +* Mon Apr 4 2011 Owen Taylor - 3.0.0-1 +- Update to 3.0.0 + +* Tue Mar 29 2011 Brian Pepple - 2.91.93-3 +- Bump + +* Tue Mar 29 2011 Brian Pepple - 2.91.93-2 +- Rebuild for new tp-logger + +* Mon Mar 28 2011 Owen Taylor - 2.91.93-1 +- Update to 2.91.93. + +* Fri Mar 25 2011 Ray Strode 2.91.92-3 +- Adjustments for More nm-client api changes. +- Fix VPN indicator + +* Thu Mar 24 2011 Christopher Aillon - 2.91.92-2 +- Make activating vpn connections work from the shell indicator + +* Wed Mar 23 2011 Matthias Clasen - 2.91.92-1 +- Update to 2.91.92 + +* Wed Mar 16 2011 Michel Salim - 2.91.91-2 +- Fix alt-tab behavior on when primary display is not leftmost (# 683932) + +* Tue Mar 8 2011 Owen Taylor - 2.91.91-1 +- Update to 2.91.91 + +* Tue Feb 22 2011 Matthias Clasen - 2.91.90-2 +- Require upower and polkit at runtime + +* Tue Feb 22 2011 Matthias Clasen - 2.91.90-1 +- Update to 2.91.90 + +* Thu Feb 10 2011 Matthias Clasen - 2.91.6-6 +- Rebuild against newer gtk + +* Tue Feb 08 2011 Fedora Release Engineering - 2.91.6-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Thu Feb 3 2011 Bill Nottingham - 2.91.6-4 +- buildrequire gnome-bluetooth to fix bluetooth status icon (#674874) + +* Wed Feb 2 2011 Matthias Clasen - 2.91.6-3 +- Rebuild against newer gtk + +* Tue Feb 1 2011 Owen Taylor - 2.91.6-2 +- Build-requires evolution-data-server-devel + +* Tue Feb 1 2011 Owen Taylor - 2.91.6-1 +- Update to 2.91.6 + +* Thu Jan 13 2011 Mattihas Clasen - 2.91.5-3 +- Drop desktop-effects dependency + +* Wed Jan 12 2011 Colin Walters - 2.91.5-2 +- BR latest g-i, handles flags as arguments better + +* Tue Jan 11 2011 Matthias Clasen - 2.91.5-1 +- Update to 2.91.5 + +* Sat Jan 8 2011 Matthias Clasen - 2.91.4-1 +- Update to 2.91.4 +- Rebuild against new gtk + +* Fri Dec 3 2010 Matthias Clasen - 2.91.3-2 +- Rebuild aginst new gtk + +* Mon Nov 29 2010 Owen Taylor - 2.91.2-1 +- Update to 2.91.3 + +* Thu Nov 18 2010 Owen Taylor - 2.91.2-3 +- Add another memory-management crasher fix from upstream + +* Mon Nov 15 2010 Owen Taylor - 2.91.2-2 +- Add a patch from upstream fixing a memory-management crasher + +* Tue Nov 9 2010 Owen Taylor - 2.91.2-1 +- Update to 2.91.2 + +* Mon Nov 1 2010 Owen Taylor - 2.91.1-1 +- Update to 2.91.1 +- Add libcroco-devel to BuildRequires, apparently it was getting + pulled in indirectly before +- Add libcanberra-devel and pulseaudio-libs-devel BuildRequires + +* Mon Oct 4 2010 Owen Taylor - 2.91.0-1 +- Update to 2.91.0 +- Remove patch to disable VBlank syncing + +* Thu Aug 12 2010 Colin Walters - 2.31.5-7 +- Add patch to disable vblank syncing + +* Tue Jul 13 2010 Colin Walters - 2.31.5-5 +- Run glib-compile-schemas + +* Tue Jul 13 2010 Colin Walters - 2.31.5-4 +- Bless stuff in files section + +* Tue Jul 13 2010 Colin Walters - 2.31.5-3 +- Axe gnome-desktop-devel + +* Tue Jul 13 2010 Adel Gadllah - 2.31.5-2 +- BuildRequire gnome-desktop3-devel, gtk3 + +* Mon Jul 12 2010 Colin Walters - 2.31.5-1 +- New upstream version +- Drop rpath goop, shouldn't be necessary any more + +* Fri Jun 25 2010 Colin Walters - 2.31.2-3 +- Drop gir-repository-devel build dependency + +* Fri May 28 2010 Adam Miller - 2.31.2-2 +- Added new version requirements for dependencies based on upstream releases +- Added new file listings for gnome-shell-clock-preferences binary and .desktop +- Added gnome-shell man page file listing + +* Wed May 26 2010 Adam Miller - 2.31.2-1 +- New upstream release + +* Fri Mar 26 2010 Colin Walters - 2.29.1-3 +- Specify V=1 for build, readd smp_mflags since parallel is fixed upstream + +* Thu Mar 25 2010 Adam Miller - 2.29.1-2 +- Bumped for new version of mutter and clutter +- Added version requirement to gjs-devel because of dependency of build + +* Wed Mar 24 2010 Adam Miller - 2.29.1-1 +- Update to latest version 2.29.1 + +* Sun Feb 21 2010 Bastien Nocera 2.28.1-0.2.20100128git +- Require json-glib +- Rebuild for new clutter with json split out +- Fix deprecation in COGL + +* Thu Jan 28 2010 Adam Miller - 2.28.1-0.1.20100128git +- New git snapshot +- Fixed Version for alphatag use + +* Fri Jan 15 2010 Adam Miller - 2.28.0.20101015git-1 +- Added dependency on a git build of gobject-introspect to solve some breakage +- Also went ahead and made a new git tarball + +* Tue Jan 12 2010 Adam Miller - 2.28.0.20100112git-1 +- New git snapshot + +* Tue Dec 07 2009 Adam Miller - 2.28.0.20091206git-5 +- Added libtool, glib-gettext for the libtoolize dep of git snapshot + +* Mon Dec 07 2009 Adam Miller - 2.28.0.20091206git-4 +- Added gnome-common needed by autogen.sh in git snapshot build + +* Sun Dec 06 2009 Adam Miller - 2.28.0.20091206git-3 +- Added the autotools needed to build the git snapshot to the build requires + +* Sun Dec 06 2009 Adam Miller - 2.28.0.20091206git-2 +- Fixed the setup naming issue with the git snapshot directory naming + +* Sun Dec 06 2009 Adam Miller - 2.28.0.20091206git-1 +- Update to git snapshot on 20091206 + +* Wed Oct 7 2009 Owen Taylor - 2.28.0-2 +- Update to 2.28.0 + +* Tue Sep 15 2009 Owen Taylor - 2.27.3-1 +- Update to 2.27.3 + +* Fri Sep 4 2009 Owen Taylor - 2.27.2-2 +- Test for gobject-introspection version should be >= not > + +* Fri Sep 4 2009 Owen Taylor - 2.27.2-1 +- Update to 2.27.2 +- Add an explicit dep on gobject-introspection 0.6.5 which is required + for the new version + +* Sat Aug 29 2009 Owen Taylor - 2.27.1-4 +- Fix GConf %%preun script to properly be for package removal + +* Fri Aug 28 2009 Owen Taylor - 2.27.1-3 +- Replace libgnomeui with gnome-desktop in BuildRequires + +* Fri Aug 28 2009 Owen Taylor - 2.27.1-2 +- BuildRequire intltool +- Add find_lang + +* Fri Aug 28 2009 Owen Taylor - 2.27.1-1 +- Update to 2.27.1 +- Update Requires, add desktop-effects + +* Wed Aug 12 2009 Owen Taylor - 2.27.0-4 +- Add an explicit dependency on GConf2 for pre/post + +* Tue Aug 11 2009 Owen Taylor - 2.27.0-3 +- Add missing BuildRequires on gir-repository-devel + +* Tue Aug 11 2009 Owen Taylor - 2.27.0-2 +- Temporarily use a non-parallel-build until gnome-shell is fixed + +* Mon Aug 10 2009 Owen Taylor - 2.27.0-1 +- Initial version