aboutsummaryrefslogtreecommitdiff
path: root/x11
diff options
context:
space:
mode:
Diffstat (limited to 'x11')
-rw-r--r--x11/Makefile1
-rw-r--r--x11/altyo/Makefile2
-rw-r--r--x11/cinnamon/Makefile4
-rw-r--r--x11/gdm/Makefile51
-rw-r--r--x11/gdm/distinfo5
-rw-r--r--x11/gdm/files/Makefile.am18
-rw-r--r--x11/gdm/files/configure.ac154
-rw-r--r--x11/gdm/files/daemon_Makefile.am33
-rw-r--r--x11/gdm/files/gdm.in8
-rw-r--r--x11/gdm/files/patch-CVE-2015-7496207
-rw-r--r--x11/gdm/files/patch-Makefile.in20
-rw-r--r--x11/gdm/files/patch-common_gdm-common.c413
-rw-r--r--x11/gdm/files/patch-common_gdm-common.h20
-rw-r--r--x11/gdm/files/patch-common_gdm-log.c56
-rw-r--r--x11/gdm/files/patch-config.h.in77
-rw-r--r--x11/gdm/files/patch-configure431
-rw-r--r--x11/gdm/files/patch-daemon_Makefile.in100
-rw-r--r--x11/gdm/files/patch-daemon_gdm-launch-environment.c37
-rw-r--r--x11/gdm/files/patch-daemon_gdm-local-display-factory.c132
-rw-r--r--x11/gdm/files/patch-daemon_gdm-manager.c946
-rw-r--r--x11/gdm/files/patch-daemon_gdm-server.c167
-rw-r--r--x11/gdm/files/patch-daemon_gdm-session-worker-job.c20
-rw-r--r--x11/gdm/files/patch-daemon_gdm-session-worker.c611
-rw-r--r--x11/gdm/files/patch-daemon_gdm-session-worker.xml12
-rw-r--r--x11/gdm/files/patch-daemon_gdm-session.c56
-rw-r--r--x11/gdm/files/patch-daemon_gdm-session.h19
-rw-r--r--x11/gdm/files/patch-data_Init.in13
-rw-r--r--x11/gdm/files/patch-data_applications_mime-dummy-handler.desktop4
-rw-r--r--x11/gdm/files/patch-data_dconf_defaults_00-upstream-settings4
-rw-r--r--x11/gdm/files/patch-data_pam-redhat_gdm-autologin.pam10
-rw-r--r--x11/gdm/files/patch-data_pam-redhat_gdm-fingerprint.pam10
-rw-r--r--x11/gdm/files/patch-data_pam-redhat_gdm-password.pam10
-rw-r--r--x11/gdm/files/patch-data_pam-redhat_gdm-pin.pam10
-rw-r--r--x11/gdm/files/patch-data_pam-redhat_gdm-smartcard.pam10
-rw-r--r--x11/gdm/files/patch-gui_simple-chooser_gdm-host-chooser-widget.c11
-rw-r--r--x11/gdm/files/patch-libgdm_gdm-user-switching.c412
-rw-r--r--x11/gdm/pkg-plist22
-rw-r--r--x11/gnome-desktop-reference/Makefile8
-rw-r--r--x11/gnome-desktop-reference/pkg-descr3
-rw-r--r--x11/gnome-desktop/Makefile23
-rw-r--r--x11/gnome-desktop/distinfo5
-rw-r--r--x11/gnome-desktop/files/patch-libgnome-desktop_gnome-languages.c11
-rw-r--r--x11/gnome-desktop/pkg-plist7
-rw-r--r--x11/gnome-session/Makefile28
-rw-r--r--x11/gnome-session/distinfo5
-rw-r--r--x11/gnome-session/pkg-plist20
-rw-r--r--x11/gnome-shell-extensions/Makefile17
-rw-r--r--x11/gnome-shell-extensions/distinfo5
-rw-r--r--x11/gnome-shell-extensions/pkg-descr2
-rw-r--r--x11/gnome-shell-extensions/pkg-plist3
-rw-r--r--x11/gnome-shell/Makefile57
-rw-r--r--x11/gnome-shell/distinfo6
-rw-r--r--x11/gnome-shell/files/patch-js_gdm_loginDialog.js23
-rw-r--r--x11/gnome-shell/files/patch-js_misc_loginManager.js54
-rw-r--r--x11/gnome-shell/files/patch-js_ui_screenShield.js21
-rw-r--r--x11/gnome-shell/files/patch-js_ui_sessionMode.js29
-rw-r--r--x11/gnome-shell/pkg-plist91
-rw-r--r--x11/gnome-terminal/Makefile9
-rw-r--r--x11/gnome-terminal/distinfo6
-rw-r--r--x11/gnome-terminal/files/patch-src_Makefile.in14
-rw-r--r--x11/gnome-terminal/pkg-plist127
-rw-r--r--x11/gnome3-lite/Makefile4
-rw-r--r--x11/gnome3/Makefile14
-rw-r--r--x11/libgnome/Makefile3
-rw-r--r--x11/libgnome/files/patch-libgnome_gnome-config.h11
-rw-r--r--x11/libgnomekbd/Makefile17
-rw-r--r--x11/libgnomekbd/distinfo5
-rw-r--r--x11/libgnomekbd/pkg-plist5
-rw-r--r--x11/pantheon-terminal/Makefile2
-rw-r--r--x11/wmdrawer/Makefile3
-rw-r--r--x11/yelp/Makefile3
-rw-r--r--x11/yelp/distinfo6
-rw-r--r--x11/yelp/pkg-plist1
-rw-r--r--x11/zenity/Makefile12
-rw-r--r--x11/zenity/distinfo5
-rw-r--r--x11/zenity/pkg-plist59
76 files changed, 4234 insertions, 606 deletions
diff --git a/x11/Makefile b/x11/Makefile
index c81d65016352..43f9833d067f 100644
--- a/x11/Makefile
+++ b/x11/Makefile
@@ -74,7 +74,6 @@
SUBDIR += gmrun
SUBDIR += gnome-clipboard-daemon
SUBDIR += gnome-desktop
- SUBDIR += gnome-desktop-reference
SUBDIR += gnome-menus
SUBDIR += gnome-pie
SUBDIR += gnome-session
diff --git a/x11/altyo/Makefile b/x11/altyo/Makefile
index 7ce0aff95f0f..eaffc00cf655 100644
--- a/x11/altyo/Makefile
+++ b/x11/altyo/Makefile
@@ -13,6 +13,8 @@ COMMENT= Drop-down terminal emulator, written in Vala
LICENSE= GPLv3
+BROKEN= Cannot convert from `unowned string' to `unowned char[]?'
+
BUILD_DEPENDS= git:devel/git \
valac:lang/vala
diff --git a/x11/cinnamon/Makefile b/x11/cinnamon/Makefile
index cd8c73976554..31fc5ea38204 100644
--- a/x11/cinnamon/Makefile
+++ b/x11/cinnamon/Makefile
@@ -3,7 +3,7 @@
PORTNAME= cinnamon
PORTVERSION= 2.4.6
-PORTREVISION= 8
+PORTREVISION= 9
CATEGORIES= x11 gnome
DIST_SUBDIR= gnome3
@@ -27,7 +27,7 @@ LIB_DEPENDS= libstartup-notification-1.so:x11/startup-notification \
libaccountsservice.so:sysutils/accountsservice
RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dbus>=0:devel/py-dbus@${PY_FLAVOR} \
ca_root_nss>=0:security/ca_root_nss \
- gnome-themes-standard>=3.0.0:x11-themes/gnome-themes-standard \
+ gnome-themes-extra>=3.0.0:x11-themes/gnome-themes-extra \
cinnamon-control-center:sysutils/cinnamon-control-center \
cinnamon-translations>=0:misc/cinnamon-translations \
cinnamon-screensaver:x11/cinnamon-screensaver \
diff --git a/x11/gdm/Makefile b/x11/gdm/Makefile
index 420e374a5ec7..9737756c1e34 100644
--- a/x11/gdm/Makefile
+++ b/x11/gdm/Makefile
@@ -2,24 +2,20 @@
# $FreeBSD$
PORTNAME= gdm
-PORTVERSION= 3.16.4
-PORTREVISION= 5
+PORTVERSION= 3.28.1
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
-DIST_SUBDIR= gnome3
+DIST_SUBDIR= gnome
MAINTAINER= gnome@FreeBSD.org
-COMMENT= GNOME 3 version of xdm display manager
+COMMENT= GNOME 3 display manager
BUILD_DEPENDS= zenity>=3.0.0:x11/zenity \
itstool:textproc/itstool \
iso-codes>=0:misc/iso-codes
LIB_DEPENDS= libck-connector.so:sysutils/consolekit2 \
- libdbus-glib-1.so:devel/dbus-glib \
- libupower-glib.so:sysutils/upower \
- libnss3.so:security/nss \
- libfontconfig.so:x11-fonts/fontconfig \
libaccountsservice.so:sysutils/accountsservice \
+ libcanberra.so:audio/libcanberra \
libcanberra-gtk3.so:audio/libcanberra-gtk3
RUN_DEPENDS= zenity>=3.0.0:x11/zenity \
gnome-shell>=3.15.92:x11/gnome-shell \
@@ -33,20 +29,22 @@ RUN_DEPENDS= zenity>=3.0.0:x11/zenity \
# used in scripts
RUN_DEPENDS+= xrdb:x11/xrdb \
setxkbmap:x11/setxkbmap \
+ xsetroot:x11/xsetroot \
+ xhost:x11/xhost \
xmodmap:x11/xmodmap \
xterm:x11/xterm
USERS= gdm
-GROUPS= gdm
+GROUPS= gdm video
PORTSCOUT= limitw:1,even
-USES= cpe gettext gmake libtool pathfix pkgconfig tar:xz
+USES= cpe gettext gmake gnome libtool pathfix pkgconfig tar:xz
CPE_VENDOR= gnome
CPE_VENDOR= gnome_display_manager
-USE_GNOME= dconf intlhack introspection librsvg2
+USE_GNOME= cairo dconf gtk30 intltool introspection
USE_LDCONFIG= yes
-USE_XORG= dmx xorgproto
+USE_XORG= x11 xau xcb xdmcp xorgproto
INSTALLS_ICONS= yes
USE_RC_SUBR= gdm
USE_GNOME_SUBR= yes
@@ -60,6 +58,8 @@ CONFIGURE_ARGS= --disable-static \
--with-dbus-sys=${PREFIX}/etc/dbus-1/system.d \
--with-log-dir=/var/log/gdm \
--localstatedir=/var \
+ --without-selinux \
+ --without-libaudit \
--with-console-kit \
--with-working-directory=${PREFIX}/etc/gdm/home \
--with-sysconfsubdir=gdm \
@@ -68,9 +68,11 @@ CONFIGURE_ARGS= --disable-static \
--with-screenshot-dir=/var/run/gdm/greeter \
--enable-authentication-scheme=pam \
--without-plymouth \
+ --without-systemd \
--with-user=gdm \
--with-group=gdm \
--with-initial-vt=09 \
+ --enable-gdm-xsession \
--disable-wayland-support \
--with-systemd=no
@@ -92,7 +94,6 @@ PKGMESSAGE= ${WRKDIR}/pkg-message
GNOME_LOCALSTATEDIR= /var
OPTIONS_DEFINE= IPV6
-KEYRING_RUN_DEPENDS= ${LOCALBASE}/lib/pam_gnome_keyring.so:security/gnome-keyring
IPV6_CONFIGURE_ENABLE= ipv6
@@ -107,14 +108,15 @@ post-patch:
${WRKSRC}/data/Makefile.in
@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
-e 's|%%LOCALBASE%%|${LOCALBASE}|g' \
+ -e 's|/bin/bash|/bin/sh|g' \
${WRKSRC}/daemon/gdm-session-worker.c
@${REINPLACE_CMD} -e 's|/usr/X11R6|${LOCALBASE}|g' \
-e 's|/usr/bin/X|${LOCALBASE}/bin/X|g' \
-e 's|/usr/bin/Xorg|${LOCALBASE}/bin/Xorg|g' \
${WRKSRC}/configure ${WRKSRC}/daemon/*.c ${WRKSRC}/po/*.po
@${REINPLACE_CMD} -e 's|/at-spi-registryd|/at-spi2-registryd|g' \
- ${WRKSRC}/gui/simple-chooser/gdm-host-chooser.c \
- ${WRKSRC}/gui/simple-chooser/chooser-main.c
+ ${WRKSRC}/chooser/gdm-host-chooser.c \
+ ${WRKSRC}/chooser/chooser-main.c
@${REINPLACE_CMD} -e 's|/etc/X11|${LOCALBASE}/etc/X11|g' \
${WRKSRC}/data/Init.in \
${WRKSRC}/data/PostLogin \
@@ -141,13 +143,22 @@ post-install:
${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home
${MKDIR} ${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/
- ${INSTALL_DATA} ${WRKDIR}/gdm-autologin ${STAGEDIR}${PREFIX}/etc/pam.d/gdm-autologin
- ${INSTALL_DATA} ${WRKDIR}/gdm-launch-environment ${STAGEDIR}${PREFIX}/etc/pam.d/gdm-launch-environment
- ${INSTALL_DATA} ${WRKDIR}/gdm-password ${STAGEDIR}${PREFIX}/etc/pam.d/gdm-password
+ ${INSTALL_DATA} ${WRKDIR}/gdm-autologin \
+ ${STAGEDIR}${PREFIX}/etc/pam.d/gdm-autologin
+ ${INSTALL_DATA} ${WRKDIR}/gdm-launch-environment \
+ ${STAGEDIR}${PREFIX}/etc/pam.d/gdm-launch-environment
+ ${INSTALL_DATA} ${WRKDIR}/gdm-password \
+ ${STAGEDIR}${PREFIX}/etc/pam.d/gdm-password
- ${INSTALL_DATA} ${WRKDIR}/client.conf ${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/
+ ${INSTALL_DATA} ${WRKDIR}/client.conf \
+ ${STAGEDIR}${PREFIX}/etc/gdm/home/.pulse/client.conf.sample
- ${INSTALL_DATA} ${WRKDIR}/locale.conf ${STAGEDIR}${PREFIX}/etc/gdm/
+ ${INSTALL_DATA} ${WRKDIR}/locale.conf \
+ ${STAGEDIR}${PREFIX}/etc/gdm/locale.conf.sample
+
+ @${RM} ${STAGEDIR}${PREFIX}/lib/udev/rules.d/61-gdm.rules
+ @${RMDIR} ${STAGEDIR}${PREFIX}/lib/udev/rules.d
+ @${RMDIR} ${STAGEDIR}${PREFIX}/lib/udev
@${SED} -e 's|%%PREFIX%%|${PREFIX}|g' < ${PKGDIR}/pkg-message \
| /usr/bin/fmt 75 79 > ${PKGMESSAGE}
diff --git a/x11/gdm/distinfo b/x11/gdm/distinfo
index 9177a8f63bbd..ea959be91316 100644
--- a/x11/gdm/distinfo
+++ b/x11/gdm/distinfo
@@ -1,2 +1,3 @@
-SHA256 (gnome3/gdm-3.16.4.tar.xz) = 281dd28d729eaab2f67e450b5b162299dec537b6f7e81fa1124e35c89d3942fd
-SIZE (gnome3/gdm-3.16.4.tar.xz) = 1535580
+TIMESTAMP = 1525503166
+SHA256 (gnome/gdm-3.28.1.tar.xz) = 77068fa775bc2c002e85883c250103f6a77361d32ba0cb8a60997b70b397b2fb
+SIZE (gnome/gdm-3.28.1.tar.xz) = 1122164
diff --git a/x11/gdm/files/Makefile.am b/x11/gdm/files/Makefile.am
new file mode 100644
index 000000000000..6bb317816bc5
--- /dev/null
+++ b/x11/gdm/files/Makefile.am
@@ -0,0 +1,18 @@
+$OpenBSD: patch-Makefile_am,v 1.1 2016/10/31 16:15:46 ajacoutot Exp $
+
+REVERT - Linux-PAM
+From 714b6af29b916ac7da0cdab6f83460574ed49cf2 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Mon, 15 Aug 2016 13:48:00 -0400
+Subject: pam_gdm: add stub pam module
+
+--- Makefile.am.orig 2017-10-30 16:21:02.000000000 +0100
++++ Makefile.am 2018-01-14 12:30:07.298406000 +0100
+@@ -7,7 +7,6 @@ SUBDIRS = \
+ daemon \
+ libgdm \
+ utils \
+- pam_gdm \
+ po \
+ tests \
+ $(NULL)
diff --git a/x11/gdm/files/configure.ac b/x11/gdm/files/configure.ac
new file mode 100644
index 000000000000..80b14caaa4d2
--- /dev/null
+++ b/x11/gdm/files/configure.ac
@@ -0,0 +1,154 @@
+$OpenBSD: patch-configure_ac,v 1.12 2017/04/17 13:17:07 ajacoutot Exp $
+
+REVERT - Linux-PAM
+From 714b6af29b916ac7da0cdab6f83460574ed49cf2 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Mon, 15 Aug 2016 13:48:00 -0400
+Subject: pam_gdm: add stub pam module
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:28:01 -0400
+Subject: drop consolekit support
+
+https://bugzilla.gnome.org/show_bug.cgi?id=722482
+
+--- configure.ac.orig 2017-10-30 16:21:11.000000000 +0100
++++ configure.ac 2018-01-14 13:01:16.646216000 +0100
+@@ -232,12 +232,6 @@ AM_CONDITIONAL(ENABLE_EXHERBO_PAM_CONFIG, test x$with_
+ AM_CONDITIONAL(ENABLE_LFS_PAM_CONFIG, test x$with_default_pam_config = xlfs)
+ AM_CONDITIONAL(ENABLE_ARCH_PAM_CONFIG, test x$with_default_pam_config = xarch)
+
+-AC_CHECK_HEADERS([security/pam_modules.h security/pam_modutil.h security/pam_ext.h],
+- [have_pam=yes],
+- [if test "x$have_pam" = xyes ; then
+- AC_MSG_ERROR([PAM development files not found.])
+- fi])
+-
+ AC_ARG_ENABLE(console-helper,
+ AS_HELP_STRING([--enable-console-helper],
+ [Enable PAM console helper @<:@default=auto@:>@]),,
+@@ -263,7 +257,15 @@ AC_ARG_WITH(tcp-wrappers,
+ [Use TCP Wrappers @<:@default=auto@:>@]),,
+ with_tcp_wrappers=auto)
+
++AC_ARG_WITH(console-kit,
++ AS_HELP_STRING([--with-console-kit],
++ [Add ConsoleKit support @<:@default=auto@:>@]),,
++ with_console_kit=no)
+
++AC_ARG_WITH(systemd,
++ AS_HELP_STRING([--with-systemd],
++ [Add systemd support @<:@default=auto@:>@]),
++ [with_systemd=$withval], [with_systemd=auto])
+ AC_ARG_WITH([systemdsystemunitdir],
+ AS_HELP_STRING([--with-systemdsystemunitdir=DIR],
+ [Directory for systemd service files]),
+@@ -548,6 +550,8 @@ fi
+ if test "x$supports_pam_extensions" = "xyes" ; then
+ AM_CONDITIONAL(SUPPORTS_PAM_EXTENSIONS, true)
+ AC_DEFINE(SUPPORTS_PAM_EXTENSIONS, 1, [Define if PAM supports GDMs custom extensions])
++else
++ AM_CONDITIONAL(SUPPORTS_PAM_EXTENSIONS, false)
+ fi
+
+ AC_CHECK_LIB(keyutils, keyctl_read, [
+@@ -655,14 +659,8 @@ dnl --------------------------------------------------
+ dnl - Check for utmp stuff
+ dnl ---------------------------------------------------------------------------
+
+-AC_CHECK_HEADERS(utmp.h utmpx.h libutil.h sys/param.h)
+-AC_CHECK_FUNCS([getutxent updwtmpx updwtmp])
+-AC_CHECK_LIB(util, login, [
+- AC_DEFINE(HAVE_LOGIN, 1, [Define if have login])
+- EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil" ])
+-AC_CHECK_LIB(util, logout, [
+- AC_DEFINE(HAVE_LOGOUT, 1, [Define if have logout])
+- EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil" ])
++AC_CHECK_HEADERS(utmp.h utmpx.h util.h sys/param.h)
++AC_CHECK_FUNCS([getutxent getttyent updwtmpx updwtmp])
+ AC_CHECK_LIB(util, logwtmp, [
+ AC_DEFINE(HAVE_LOGWTMP, 1, [Define if have logwtmp])
+ EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil" ])
+@@ -911,12 +909,42 @@ AC_SUBST(XINERAMA_LIBS)
+ CPPFLAGS="$xinerama_save_cppflags"
+
+ dnl ---------------------------------------------------------------------------
++dnl - Check for ConsoleKit support
++dnl ---------------------------------------------------------------------------
++
++use_console_kit=no
++if test "x$with_console_kit" != "xno" ; then
++ use_console_kit=yes
++ AC_DEFINE(WITH_CONSOLE_KIT, 1, [Define to enable ConsoleKit support])
++fi
++AM_CONDITIONAL(WITH_CONSOLE_KIT, test x$use_console_kit = xyes)
++AC_SUBST(WITH_CONSOLE_KIT)
++
++dnl ---------------------------------------------------------------------------
+ dnl - Check for systemd support
+ dnl ---------------------------------------------------------------------------
+
+ PKG_CHECK_MODULES(SYSTEMD,
+- [libsystemd])
++ [libsystemd-login >= 186 libsystemd-daemon],
++ [have_systemd=yes], [have_systemd=no])
+
++if test "x$with_systemd" = "xauto" ; then
++ if test x$have_systemd = xno ; then
++ use_systemd=no
++ else
++ use_systemd=yes
++ fi
++else
++ use_systemd="$with_systemd"
++fi
++
++if test "x$use_systemd" != "xno" ; then
++ if test "x$have_systemd" = "xno"; then
++ AC_MSG_ERROR([Systemd support explicitly required, but systemd not found])
++ fi
++
++ AC_DEFINE(WITH_SYSTEMD, 1, [Define to enable systemd support])
++fi
+ AC_SUBST(SYSTEMD_CFLAGS)
+ AC_SUBST(SYSTEMD_LIBS)
+
+@@ -1111,6 +1139,14 @@ fi
+ AC_SUBST(GDM_CUSTOM_CONF)
+ AC_SUBST(GDM_OLD_CONF, '${gdmconfdir}/gdm.conf')
+
++AC_ARG_WITH(consolekit-directory,
++ [AC_HELP_STRING([--with-consolekit-directory],
++ [Specify the directory of ck-get-x11-display-device @<:@default=libexecdir@:>@])],,
++ [with_consolekit_directory="\${libexecdir}"])
++
++CONSOLEKIT_DIR=$with_consolekit_directory
++AC_SUBST(CONSOLEKIT_DIR)
++
+ AC_ARG_WITH(gnome-settings-daemon-directory,
+ [AC_HELP_STRING([--with-gnome-settings-daemon-directory],
+ [Specify the directory of gnome-settings-daemon used by the chooser @<:@default=libexecdir@:>@])],,
+@@ -1601,6 +1637,7 @@ echo "
+ dmconfdir: ${dmconfdir}
+ localstatedir: ${localstatedir}
+ datadir: ${datadir}
++ consolekit location: ${with_consolekit_directory}
+ gnome-settings-daemon location: ${with_gnome_settings_daemon_directory}
+ gnome-session-check-accel location: ${with_check_accelerated_directory}
+ source code location: ${srcdir}
+@@ -1631,6 +1668,8 @@ echo \
+ " Xinerama support: ${XINERAMA_SUPPORT}
+ XDMCP support: ${XDMCP_SUPPORT}
+ SELinux support: ${use_selinux}
++ ConsoleKit support: ${use_console_kit}
++ systemd support: ${use_systemd}
+ systemd unit dir: ${with_systemdsystemunitdir}
+ plymouth support: ${use_plymouth}
+ wayland support: ${enable_wayland_support}
+@@ -1639,3 +1678,4 @@ echo \
+ Enable documentation: ${enable_documentation}
+ Install GDM's Xsession: ${enable_gdm_xsession}
+ "
++
diff --git a/x11/gdm/files/daemon_Makefile.am b/x11/gdm/files/daemon_Makefile.am
new file mode 100644
index 000000000000..72d55fb06926
--- /dev/null
+++ b/x11/gdm/files/daemon_Makefile.am
@@ -0,0 +1,33 @@
+--- daemon/Makefile.am.orig 2017-10-30 16:21:02.000000000 +0100
++++ daemon/Makefile.am 2018-01-14 12:30:11.501517000 +0100
+@@ -21,6 +21,7 @@ AM_CPPFLAGS = \
+ -DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \
+ -DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \
+ -DGDM_SESSION_DEFAULT_PATH=\"$(GDM_SESSION_DEFAULT_PATH)\" \
++ -DCONSOLEKIT_DIR=\"$(CONSOLEKIT_DIR)\" \
+ $(DISABLE_DEPRECATED_CFLAGS) \
+ $(DAEMON_CFLAGS) \
+ $(XLIB_CFLAGS) \
+@@ -267,6 +268,11 @@ EXTRA_gdm_SOURCES = \
+ $(XDMCP_SOURCES) \
+ $(NULL)
+
++CONSOLE_KIT_SOURCES = \
++ $(NULL)
++
++EXTRA_gdm_SOURCES += $(CONSOLE_KIT_SOURCES)
++
+ gdm_LDADD = \
+ $(top_builddir)/common/libgdmcommon.la \
+ $(XLIB_LIBS) \
+@@ -277,6 +283,10 @@ gdm_LDADD = \
+ $(JOURNALD_LIBS) \
+ $(EXTRA_DAEMON_LIBS) \
+ $(NULL)
++
++if WITH_CONSOLE_KIT
++gdm_SOURCES += $(CONSOLE_KIT_SOURCES)
++endif
+
+ CLEANFILES = \
+ gdm-display-glue.c \
diff --git a/x11/gdm/files/gdm.in b/x11/gdm/files/gdm.in
index 05fd987a8e3b..2469b55ea9a9 100644
--- a/x11/gdm/files/gdm.in
+++ b/x11/gdm/files/gdm.in
@@ -52,14 +52,6 @@ gdm_start()
sleep 1
iter=$(expr ${iter} + 1)
done
- iter=0
- while ! %%LOCALBASE%%/bin/lshal >/dev/null 2>&1 ; do
- if [ ${iter} -eq 60 ]; then
- break
- fi
- sleep 1
- iter=$(expr ${iter} + 1)
- done
LANG=${gdm_lang} ${command} ${gdm_flags} ) &
}
diff --git a/x11/gdm/files/patch-CVE-2015-7496 b/x11/gdm/files/patch-CVE-2015-7496
deleted file mode 100644
index 69aefec50100..000000000000
--- a/x11/gdm/files/patch-CVE-2015-7496
+++ /dev/null
@@ -1,207 +0,0 @@
-From 05e5fc24b0f803098c1d05dae86f5eb05bd0c2a4 Mon Sep 17 00:00:00 2001
-From: Rui Matos <tiagomatos@gmail.com>
-Date: Sun, 15 Nov 2015 14:07:53 -0500
-Subject: session: Cancel worker proxy async ops when freeing conversations
-
-We need to cancel ongoing async ops for worker proxies when freeing
-conversations or we'll crash when the completion handler runs and we
-access free'd memory.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=758032
-
----
-
-From 5ac224602f1d603aac5eaa72e1760d3e33a26f0a Mon Sep 17 00:00:00 2001
-From: Ray Strode <rstrode@redhat.com>
-Date: Fri, 13 Nov 2015 11:14:59 -0500
-Subject: session: disconnect signals from worker proxy when conversation is
- freed
-
-We don't want an outstanding reference on the worker proxy to lead to
-signal handlers getting dispatched after the conversation is freed.
-
-https://bugzilla.gnome.org/show_bug.cgi?id=758032
-
----
-
-
---- daemon/gdm-session.c.orig 2015-11-18 10:47:55.522178000 +0100
-+++ daemon/gdm-session.c 2015-11-18 10:48:00.450095000 +0100
-@@ -73,6 +73,7 @@ typedef struct
- GDBusMethodInvocation *pending_invocation;
- GdmDBusWorkerManager *worker_manager_interface;
- GdmDBusWorker *worker_proxy;
-+ GCancellable *worker_cancellable;
- char *session_id;
- guint32 is_stopping : 1;
-
-@@ -1031,6 +1032,8 @@ register_worker (GdmDBusWorkerManager *
-
- g_dbus_proxy_set_default_timeout (G_DBUS_PROXY (conversation->worker_proxy), G_MAXINT);
-
-+ conversation->worker_cancellable = g_cancellable_new ();
-+
- g_signal_connect (conversation->worker_proxy,
- "username-changed",
- G_CALLBACK (worker_on_username_changed), conversation);
-@@ -1666,7 +1669,28 @@ free_conversation (GdmSessionConversatio
- g_free (conversation->starting_username);
- g_free (conversation->session_id);
- g_clear_object (&conversation->worker_manager_interface);
-- g_clear_object (&conversation->worker_proxy);
-+
-+ if (conversation->worker_proxy != NULL) {
-+ g_signal_handlers_disconnect_by_func (conversation->worker_proxy,
-+ G_CALLBACK (worker_on_username_changed),
-+ conversation);
-+ g_signal_handlers_disconnect_by_func (conversation->worker_proxy,
-+ G_CALLBACK (worker_on_session_exited),
-+ conversation);
-+ g_signal_handlers_disconnect_by_func (conversation->worker_proxy,
-+ G_CALLBACK (worker_on_reauthenticated),
-+ conversation);
-+ g_signal_handlers_disconnect_by_func (conversation->worker_proxy,
-+ G_CALLBACK (worker_on_saved_language_name_read),
-+ conversation);
-+ g_signal_handlers_disconnect_by_func (conversation->worker_proxy,
-+ G_CALLBACK (worker_on_saved_session_name_read),
-+ conversation);
-+ g_signal_handlers_disconnect_by_func (conversation->worker_proxy,
-+ G_CALLBACK (worker_on_cancel_pending_query),
-+ conversation);
-+ g_clear_object (&conversation->worker_proxy);
-+ }
- g_clear_object (&conversation->session);
- g_free (conversation);
- }
-@@ -1828,6 +1852,9 @@ close_conversation (GdmSessionConversati
- g_clear_object (&conversation->worker_manager_interface);
- }
-
-+ g_cancellable_cancel (conversation->worker_cancellable);
-+ g_clear_object (&conversation->worker_cancellable);
-+
- if (conversation->worker_proxy != NULL) {
- GDBusConnection *connection = g_dbus_proxy_get_connection (G_DBUS_PROXY (conversation->worker_proxy));
- g_dbus_connection_close_sync (connection, NULL, NULL);
-@@ -1996,7 +2023,7 @@ send_setup (GdmSession *self,
- display_hostname,
- self->priv->display_is_local,
- self->priv->display_is_initial,
-- NULL,
-+ conversation->worker_cancellable,
- (GAsyncReadyCallback) on_setup_complete_cb,
- conversation);
- }
-@@ -2062,7 +2089,7 @@ send_setup_for_user (GdmSession *self,
- display_hostname,
- self->priv->display_is_local,
- self->priv->display_is_initial,
-- NULL,
-+ conversation->worker_cancellable,
- (GAsyncReadyCallback) on_setup_complete_cb,
- conversation);
- }
-@@ -2124,7 +2151,7 @@ send_setup_for_program (GdmSession *self
- self->priv->display_is_local,
- self->priv->display_is_initial,
- log_file,
-- NULL,
-+ conversation->worker_cancellable,
- (GAsyncReadyCallback) on_setup_complete_cb,
- conversation);
- }
-@@ -2182,7 +2209,7 @@ gdm_session_authenticate (GdmSession *se
- conversation = find_conversation_by_name (self, service_name);
- if (conversation != NULL) {
- gdm_dbus_worker_call_authenticate (conversation->worker_proxy,
-- NULL,
-+ conversation->worker_cancellable,
- (GAsyncReadyCallback) on_authenticate_cb,
- conversation);
- }
-@@ -2199,7 +2226,7 @@ gdm_session_authorize (GdmSession *self,
- conversation = find_conversation_by_name (self, service_name);
- if (conversation != NULL) {
- gdm_dbus_worker_call_authorize (conversation->worker_proxy,
-- NULL,
-+ conversation->worker_cancellable,
- (GAsyncReadyCallback) on_authorize_cb,
- conversation);
- }
-@@ -2216,7 +2243,7 @@ gdm_session_accredit (GdmSession *self,
- conversation = find_conversation_by_name (self, service_name);
- if (conversation != NULL) {
- gdm_dbus_worker_call_establish_credentials (conversation->worker_proxy,
-- NULL,
-+ conversation->worker_cancellable,
- (GAsyncReadyCallback) on_establish_credentials_cb,
- conversation);
- }
-@@ -2230,7 +2257,8 @@ send_environment_variable (const char
- {
- gdm_dbus_worker_call_set_environment_variable (conversation->worker_proxy,
- key, value,
-- NULL, NULL, NULL);
-+ conversation->worker_cancellable,
-+ NULL, NULL);
- }
-
- static void
-@@ -2418,7 +2446,8 @@ send_display_mode (GdmSession *self,
- mode = gdm_session_get_display_mode (self);
- gdm_dbus_worker_call_set_session_display_mode (conversation->worker_proxy,
- gdm_session_display_mode_to_string (mode),
-- NULL, NULL, NULL);
-+ conversation->worker_cancellable,
-+ NULL, NULL);
- }
-
- static void
-@@ -2434,7 +2463,8 @@ send_session_type (GdmSession *self,
- gdm_dbus_worker_call_set_environment_variable (conversation->worker_proxy,
- "XDG_SESSION_TYPE",
- session_type,
-- NULL, NULL, NULL);
-+ conversation->worker_cancellable,
-+ NULL, NULL);
- }
-
- void
-@@ -2452,7 +2482,7 @@ gdm_session_open_session (GdmSession *se
- send_session_type (self, conversation);
-
- gdm_dbus_worker_call_open (conversation->worker_proxy,
-- NULL,
-+ conversation->worker_cancellable,
- (GAsyncReadyCallback) on_opened, conversation);
- }
- }
-@@ -2638,7 +2668,7 @@ gdm_session_start_session (GdmSession *s
-
- gdm_dbus_worker_call_start_program (conversation->worker_proxy,
- program,
-- NULL,
-+ conversation->worker_cancellable,
- (GAsyncReadyCallback) on_start_program_cb,
- conversation);
- g_free (program);
-@@ -2770,7 +2800,7 @@ gdm_session_start_reauthentication (GdmS
- gdm_dbus_worker_call_start_reauthentication (conversation->worker_proxy,
- (int) pid_of_caller,
- (int) uid_of_caller,
-- NULL,
-+ conversation->worker_cancellable,
- (GAsyncReadyCallback) on_reauthentication_started_cb,
- conversation);
- }
-@@ -3032,7 +3062,8 @@ gdm_session_select_session (GdmSession *
-
- gdm_dbus_worker_call_set_session_name (conversation->worker_proxy,
- get_session_name (self),
-- NULL, NULL, NULL);
-+ conversation->worker_cancellable,
-+ NULL, NULL);
- }
- }
-
diff --git a/x11/gdm/files/patch-Makefile.in b/x11/gdm/files/patch-Makefile.in
new file mode 100644
index 000000000000..1589e0c8ed27
--- /dev/null
+++ b/x11/gdm/files/patch-Makefile.in
@@ -0,0 +1,20 @@
+--- Makefile.in.orig 2018-01-14 11:27:57.277621000 +0100
++++ Makefile.in 2018-01-14 11:28:53.422079000 +0100
+@@ -162,7 +162,7 @@
+ ETAGS = etags
+ CTAGS = ctags
+ CSCOPE = cscope
+-DIST_SUBDIRS = data common pam-extensions daemon libgdm utils pam_gdm \
++DIST_SUBDIRS = data common pam-extensions daemon libgdm utils \
+ po tests chooser docs
+ am__DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(top_srcdir)/data/dconf/gdm.in AUTHORS COPYING ChangeLog \
+@@ -472,7 +472,7 @@
+ top_builddir = @top_builddir@
+ top_srcdir = @top_srcdir@
+ NULL =
+-SUBDIRS = data common pam-extensions daemon libgdm utils pam_gdm po \
++SUBDIRS = data common pam-extensions daemon libgdm utils po \
+ tests $(NULL) $(am__append_1) $(am__append_2)
+ ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS}
+ EXTRA_DIST = \
diff --git a/x11/gdm/files/patch-common_gdm-common.c b/x11/gdm/files/patch-common_gdm-common.c
new file mode 100644
index 000000000000..567c0853796e
--- /dev/null
+++ b/x11/gdm/files/patch-common_gdm-common.c
@@ -0,0 +1,413 @@
+$OpenBSD: patch-common_gdm-common_c,v 1.4 2015/10/18 13:25:54 ajacoutot Exp $
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:48:52 -0400
+Subject: require logind support
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:28:01 -0400
+Subject: drop consolekit support
+
+--- common/gdm-common.c.orig Sun Oct 18 14:26:27 2015
++++ common/gdm-common.c Sun Oct 18 14:24:34 2015
+@@ -39,12 +39,25 @@
+ #include "mkdtemp.h"
+ #endif
+
++#ifdef WITH_SYSTEMD
+ #include <systemd/sd-login.h>
++#endif
+
+ #define GDM_DBUS_NAME "org.gnome.DisplayManager"
+ #define GDM_DBUS_LOCAL_DISPLAY_FACTORY_PATH "/org/gnome/DisplayManager/LocalDisplayFactory"
+ #define GDM_DBUS_LOCAL_DISPLAY_FACTORY_INTERFACE "org.gnome.DisplayManager.LocalDisplayFactory"
+
++#ifdef WITH_CONSOLE_KIT
++#define CK_NAME "org.freedesktop.ConsoleKit"
++#define CK_PATH "/org/freedesktop/ConsoleKit"
++#define CK_INTERFACE "org.freedesktop.ConsoleKit"
++
++#define CK_MANAGER_PATH "/org/freedesktop/ConsoleKit/Manager"
++#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
++#define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat"
++#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
++#endif
++
+ G_DEFINE_QUARK (gdm-common-error, gdm_common_error);
+
+ const char *
+@@ -343,15 +356,306 @@ create_transient_display (GDBusConnection *connection,
+ return TRUE;
+ }
+
++#ifdef WITH_CONSOLE_KIT
++
+ static gboolean
+-activate_session_id (GDBusConnection *connection,
+- const char *seat_id,
+- const char *session_id)
++get_current_session_id (GDBusConnection *connection,
++ char **session_id)
+ {
+ GError *local_error = NULL;
+ GVariant *reply;
+
+ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ CK_MANAGER_PATH,
++ CK_MANAGER_INTERFACE,
++ "GetCurrentSession",
++ NULL, /* parameters */
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, &local_error);
++ if (reply == NULL) {
++ g_warning ("Unable to determine session: %s", local_error->message);
++ g_error_free (local_error);
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(o)", session_id);
++ g_variant_unref (reply);
++
++ return TRUE;
++}
++
++static gboolean
++get_seat_id_for_session (GDBusConnection *connection,
++ const char *session_id,
++ char **seat_id)
++{
++ GError *local_error = NULL;
++ GVariant *reply;
++
++ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ session_id,
++ CK_SESSION_INTERFACE,
++ "GetSeatId",
++ NULL, /* parameters */
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, &local_error);
++ if (reply == NULL) {
++ g_warning ("Unable to determine seat: %s", local_error->message);
++ g_error_free (local_error);
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(o)", seat_id);
++ g_variant_unref (reply);
++
++ return TRUE;
++}
++
++static char *
++get_current_seat_id (GDBusConnection *connection)
++{
++ gboolean res;
++ char *session_id;
++ char *seat_id;
++
++ session_id = NULL;
++ seat_id = NULL;
++
++ res = get_current_session_id (connection, &session_id);
++ if (res) {
++ res = get_seat_id_for_session (connection, session_id, &seat_id);
++ }
++ g_free (session_id);
++
++ return seat_id;
++}
++
++static gboolean
++activate_session_id_for_ck (GDBusConnection *connection,
++ const char *seat_id,
++ const char *session_id)
++{
++ GError *local_error = NULL;
++ GVariant *reply;
++
++ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ seat_id,
++ CK_SEAT_INTERFACE,
++ "ActivateSession",
++ g_variant_new ("(o)", session_id),
++ NULL,
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, &local_error);
++ if (reply == NULL) {
++ g_warning ("Unable to activate session: %s", local_error->message);
++ g_error_free (local_error);
++ return FALSE;
++ }
++
++ g_variant_unref (reply);
++
++ return TRUE;
++}
++
++static gboolean
++session_is_login_window (GDBusConnection *connection,
++ const char *session_id)
++{
++ GError *local_error = NULL;
++ GVariant *reply;
++ const char *value;
++ gboolean ret;
++
++ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ session_id,
++ CK_SESSION_INTERFACE,
++ "GetSessionType",
++ NULL,
++ G_VARIANT_TYPE ("(s)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, &local_error);
++ if (reply == NULL) {
++ g_warning ("Unable to determine session type: %s", local_error->message);
++ g_error_free (local_error);
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(&s)", &value);
++
++ if (value == NULL || value[0] == '\0' || strcmp (value, "LoginWindow") != 0) {
++ ret = FALSE;
++ } else {
++ ret = TRUE;
++ }
++
++ g_variant_unref (reply);
++
++ return ret;
++}
++
++static gboolean
++seat_can_activate_sessions (GDBusConnection *connection,
++ const char *seat_id)
++{
++ GError *local_error = NULL;
++ GVariant *reply;
++ gboolean ret;
++
++ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ seat_id,
++ CK_SEAT_INTERFACE,
++ "CanActivateSessions",
++ NULL,
++ G_VARIANT_TYPE ("(b)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, &local_error);
++ if (reply == NULL) {
++ g_warning ("Unable to determine if can activate sessions: %s", local_error->message);
++ g_error_free (local_error);
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(b)", &ret);
++ g_variant_unref (reply);
++
++ return ret;
++}
++
++static const char **
++seat_get_sessions (GDBusConnection *connection,
++ const char *seat_id)
++{
++ GError *local_error = NULL;
++ GVariant *reply;
++ const char **value;
++
++ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ seat_id,
++ CK_SEAT_INTERFACE,
++ "GetSessions",
++ NULL,
++ G_VARIANT_TYPE ("(ao)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, &local_error);
++ if (reply == NULL) {
++ g_warning ("Unable to list sessions: %s", local_error->message);
++ g_error_free (local_error);
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(^ao)", &value);
++ g_variant_unref (reply);
++
++ return value;
++}
++
++static gboolean
++get_login_window_session_id_for_ck (GDBusConnection *connection,
++ const char *seat_id,
++ char **session_id)
++{
++ gboolean can_activate_sessions;
++ const char **sessions;
++ int i;
++
++ *session_id = NULL;
++ sessions = NULL;
++
++ g_debug ("checking if seat can activate sessions");
++
++ can_activate_sessions = seat_can_activate_sessions (connection, seat_id);
++ if (! can_activate_sessions) {
++ g_debug ("seat is unable to activate sessions");
++ return FALSE;
++ }
++
++ sessions = seat_get_sessions (connection, seat_id);
++ for (i = 0; sessions [i] != NULL; i++) {
++ const char *ssid;
++
++ ssid = sessions [i];
++
++ if (session_is_login_window (connection, ssid)) {
++ *session_id = g_strdup (ssid);
++ break;
++ }
++ }
++ g_free (sessions);
++
++ return TRUE;
++}
++
++static gboolean
++goto_login_session_for_ck (GDBusConnection *connection,
++ GError **error)
++{
++ gboolean ret;
++ gboolean res;
++ char *session_id;
++ char *seat_id;
++
++ ret = FALSE;
++
++ /* First look for any existing LoginWindow sessions on the seat.
++ If none are found, create a new one. */
++
++ seat_id = get_current_seat_id (connection);
++ if (seat_id == NULL || seat_id[0] == '\0') {
++ g_debug ("seat id is not set; can't switch sessions");
++ g_set_error (error, GDM_COMMON_ERROR, 0, _("Could not identify the current session."));
++
++ return FALSE;
++ }
++
++ res = get_login_window_session_id_for_ck (connection, seat_id, &session_id);
++ if (! res) {
++ g_set_error (error, GDM_COMMON_ERROR, 1, _("User unable to switch sessions."));
++ return FALSE;
++ }
++
++ if (session_id != NULL) {
++ res = activate_session_id_for_ck (connection, seat_id, session_id);
++ if (res) {
++ ret = TRUE;
++ }
++ }
++
++ if (! ret && g_strcmp0 (seat_id, "/org/freedesktop/ConsoleKit/Seat1") == 0) {
++ res = create_transient_display (connection, error);
++ if (res) {
++ ret = TRUE;
++ }
++ }
++
++ return ret;
++}
++#endif
++
++#ifdef WITH_SYSTEMD
++
++static gboolean
++activate_session_id_for_systemd (GDBusConnection *connection,
++ const char *seat_id,
++ const char *session_id)
++{
++ GError *local_error = NULL;
++ GVariant *reply;
++
++ reply = g_dbus_connection_call_sync (connection,
+ "org.freedesktop.login1",
+ "/org/freedesktop/login1",
+ "org.freedesktop.login1.Manager",
+@@ -373,8 +677,8 @@ activate_session_id (GDBusConnection *connection,
+ }
+
+ static gboolean
+-get_login_window_session_id (const char *seat_id,
+- char **session_id)
++get_login_window_session_id_for_systemd (const char *seat_id,
++ char **session_id)
+ {
+ gboolean ret;
+ int res, i;
+@@ -442,8 +746,8 @@ out:
+ }
+
+ static gboolean
+-goto_login_session (GDBusConnection *connection,
+- GError **error)
++goto_login_session_for_systemd (GDBusConnection *connection,
++ GError **error)
+ {
+ gboolean ret;
+ int res;
+@@ -497,9 +801,9 @@ goto_login_session (GDBusConnection *connection,
+ return FALSE;
+ }
+
+- res = get_login_window_session_id (seat_id, &session_id);
++ res = get_login_window_session_id_for_systemd (seat_id, &session_id);
+ if (res && session_id != NULL) {
+- res = activate_session_id (connection, seat_id, session_id);
++ res = activate_session_id_for_systemd (connection, seat_id, session_id);
+
+ if (res) {
+ ret = TRUE;
+@@ -518,6 +822,7 @@ goto_login_session (GDBusConnection *connection,
+
+ return ret;
+ }
++#endif
+
+ gboolean
+ gdm_goto_login_session (GError **error)
+@@ -533,7 +838,17 @@ gdm_goto_login_session (GError **error)
+ return FALSE;
+ }
+
+- return goto_login_session (connection, error);
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ return goto_login_session_for_systemd (connection, error);
++ }
++#endif
++
++#ifdef WITH_CONSOLE_KIT
++ return goto_login_session_for_ck (connection, error);
++#else
++ return FALSE;
++#endif
+ }
+
+ static void
diff --git a/x11/gdm/files/patch-common_gdm-common.h b/x11/gdm/files/patch-common_gdm-common.h
new file mode 100644
index 000000000000..bcc6ec09f739
--- /dev/null
+++ b/x11/gdm/files/patch-common_gdm-common.h
@@ -0,0 +1,20 @@
+$OpenBSD: patch-common_gdm-common_h,v 1.2 2016/04/15 14:11:09 ajacoutot Exp $
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:48:52 -0400
+Subject: require logind support
+
+--- common/gdm-common.h.orig Thu Apr 14 07:27:26 2016
++++ common/gdm-common.h Fri Apr 15 15:05:26 2016
+@@ -31,6 +31,9 @@
+ expr; \
+ } while G_UNLIKELY (errno == EINTR);
+
++/* check if logind is running */
++#define LOGIND_RUNNING() (access("/run/systemd/seats/", F_OK) >= 0)
++
+ GQuark gdm_common_error_quark (void);
+ #define GDM_COMMON_ERROR gdm_common_error_quark()
+
diff --git a/x11/gdm/files/patch-common_gdm-log.c b/x11/gdm/files/patch-common_gdm-log.c
new file mode 100644
index 000000000000..be0bb062fe82
--- /dev/null
+++ b/x11/gdm/files/patch-common_gdm-log.c
@@ -0,0 +1,56 @@
+$OpenBSD: patch-common_gdm-log_c,v 1.1 2015/10/18 13:25:54 ajacoutot Exp $
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:48:52 -0400
+Subject: require logind support
+
+--- common/gdm-log.c.orig 2018-02-19 19:16:32.000000000 +0100
++++ common/gdm-log.c 2018-04-05 21:59:25.290775000 +0200
+@@ -30,7 +30,9 @@
+ #include <unistd.h>
+
+ #include <syslog.h>
++#ifdef WITH_SYSTEMD
+ #include <systemd/sd-daemon.h>
++#endif
+
+ #include <glib.h>
+ #include <glib/gstdio.h>
+@@ -125,12 +127,35 @@ gdm_log_set_debug (gboolean debug)
+ void
+ gdm_log_init (void)
+ {
++ const char *prg_name;
++ int options;
++
+ if (initialized)
+ return;
+
+ initialized = TRUE;
+
++#ifdef WITH_SYSTEMD
++ is_sd_booted = sd_booted () > 0;
++#endif
++
+ g_log_set_default_handler (gdm_log_default_handler, NULL);
++
++ /* Only set up syslog if !systemd, otherwise with systemd
++ * enabled, we keep the default GLib log handler which goes to
++ * stderr, which is routed to the appropriate place in the
++ * systemd service file.
++ */
++ if (!is_sd_booted) {
++ prg_name = g_get_prgname ();
++
++ options = LOG_PID;
++#ifdef LOG_PERROR
++ options |= LOG_PERROR;
++#endif
++
++ openlog (prg_name, options, LOG_DAEMON);
++ }
+ }
+
+ void
diff --git a/x11/gdm/files/patch-config.h.in b/x11/gdm/files/patch-config.h.in
index d17901da1124..ff945d66ca43 100644
--- a/x11/gdm/files/patch-config.h.in
+++ b/x11/gdm/files/patch-config.h.in
@@ -1,12 +1,69 @@
---- config.h.in.orig 2007-11-02 20:48:28.000000000 -0400
-+++ config.h.in 2007-11-02 20:49:39.000000000 -0400
-@@ -23,6 +23,9 @@
- #undef HAVE_LC_MESSAGES
- #undef HAVE_LIBSM
+--- config.h.in.orig 2018-01-14 13:03:01.638908000 +0100
++++ config.h.in 2018-01-14 13:03:20.000000000 +0100
+@@ -113,6 +113,9 @@
+ /* Define to 1 if you have the <execinfo.h> header file. */
+ #undef HAVE_EXECINFO_H
+
++/* Define to 1 if you have the `getttyent' function. */
++#undef HAVE_GETTTYENT
++
+ /* Define to 1 if you have the `getutxent' function. */
+ #undef HAVE_GETUTXENT
+
+@@ -128,21 +131,12 @@
+ /* Define if we have libgen.h */
+ #undef HAVE_LIBGEN_H
+
+-/* Define to 1 if you have the <libutil.h> header file. */
+-#undef HAVE_LIBUTIL_H
+-
+ /* Define if have libxdmcp */
#undef HAVE_LIBXDMCP
-+#undef HAVE_LOGIN
-+#undef HAVE_LOGOUT
-+#undef HAVE_LOGWTMP
+
+-/* Define if have login */
+-#undef HAVE_LOGIN
+-
+ /* Define if we have logincap */
#undef HAVE_LOGINCAP
- #undef HAVE_LOGINDEVPERM
- #undef HAVE_LOGINRESTRICTIONS
+
+-/* Define if have logout */
+-#undef HAVE_LOGOUT
+-
+ /* Define if have logwtmp */
+ #undef HAVE_LOGWTMP
+
+@@ -167,9 +161,6 @@
+ /* Define to 1 if you have the <security/pam_ext.h> header file. */
+ #undef HAVE_SECURITY_PAM_EXT_H
+
+-/* Define to 1 if you have the <security/pam_modules.h> header file. */
+-#undef HAVE_SECURITY_PAM_MODULES_H
+-
+ /* Define to 1 if you have the <security/pam_modutil.h> header file. */
+ #undef HAVE_SECURITY_PAM_MODUTIL_H
+
+@@ -239,6 +230,9 @@
+ /* Define to 1 if you have the `updwtmpx' function. */
+ #undef HAVE_UPDWTMPX
+
++/* Define to 1 if you have the <util.h> header file. */
++#undef HAVE_UTIL_H
++
+ /* Define to 1 if you have the <utmpx.h> header file. */
+ #undef HAVE_UTMPX_H
+
+@@ -372,8 +366,14 @@
+ /* Version number of package */
+ #undef VERSION
+
++/* Define to enable ConsoleKit support */
++#undef WITH_CONSOLE_KIT
++
+ /* Define to enable plymouth support */
+ #undef WITH_PLYMOUTH
++
++/* Define to enable systemd support */
++#undef WITH_SYSTEMD
+
+ /* Define xevie option */
+ #undef XEVIE_OPTION
diff --git a/x11/gdm/files/patch-configure b/x11/gdm/files/patch-configure
new file mode 100644
index 000000000000..c683d50161f5
--- /dev/null
+++ b/x11/gdm/files/patch-configure
@@ -0,0 +1,431 @@
+--- configure.orig 2018-01-14 13:01:10.629609000 +0100
++++ configure 2018-01-14 13:02:06.272152000 +0100
+@@ -677,6 +677,7 @@ HAVE_ADT_TRUE
+ XEVIE_OPTION
+ CHECK_ACCELERATED_DIR
+ GNOME_SETTINGS_DAEMON_DIR
++CONSOLEKIT_DIR
+ GDM_OLD_CONF
+ GDM_CUSTOM_CONF
+ GDM_DEFAULTS_CONF
+@@ -697,6 +698,9 @@ JOURNALD_LIBS
+ JOURNALD_CFLAGS
+ SYSTEMD_LIBS
+ SYSTEMD_CFLAGS
++WITH_CONSOLE_KIT
++WITH_CONSOLE_KIT_FALSE
++WITH_CONSOLE_KIT_TRUE
+ XINERAMA_LIBS
+ LIBWRAP_LIBS
+ OS_SOLARIS_FALSE
+@@ -983,6 +987,8 @@ enable_authentication_scheme
+ with_xinerama
+ with_xdmcp
+ with_tcp_wrappers
++with_console_kit
++with_systemd
+ with_systemdsystemunitdir
+ enable_systemd_journal
+ enable_wayland_support
+@@ -1002,6 +1008,7 @@ with_log_dir
+ with_at_bindir
+ with_defaults_conf
+ with_custom_conf
++with_consolekit_directory
+ with_gnome_settings_daemon_directory
+ with_check_accelerated_directory
+ with_xevie
+@@ -1748,6 +1755,8 @@ Optional Packages:
+ --with-xinerama Add Xinerama support [default=auto]
+ --with-xdmcp Add XDMCP (remote login) support [default=auto]
+ --with-tcp-wrappers Use TCP Wrappers [default=auto]
++ --with-console-kit Add ConsoleKit support [default=auto]
++ --with-systemd Add systemd support [default=auto]
+ --with-systemdsystemunitdir=DIR
+ Directory for systemd service files
+ --with-plymouth Add plymouth support [default=yes]
+@@ -1776,6 +1785,9 @@ Optional Packages:
+ --with-custom-conf=<FILENAME>
+ FILENAME to give to custom configuration file
+ [default=GDMCONFDIR/custom.conf]
++ --with-consolekit-directory
++ Specify the directory of ck-get-x11-display-device
++ [default=libexecdir]
+ --with-gnome-settings-daemon-directory
+ Specify the directory of gnome-settings-daemon used
+ by the chooser [default=libexecdir]
+@@ -20860,24 +20872,6 @@ else
+ fi
+
+
+-for ac_header in security/pam_modules.h security/pam_modutil.h security/pam_ext.h
+-do :
+- as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+-ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+- cat >>confdefs.h <<_ACEOF
+-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+-_ACEOF
+- have_pam=yes
+-else
+- if test "x$have_pam" = xyes ; then
+- as_fn_error $? "PAM development files not found." "$LINENO" 5
+- fi
+-fi
+-
+-done
+-
+-
+ # Check whether --enable-console-helper was given.
+ if test "${enable_console_helper+set}" = set; then :
+ enableval=$enable_console_helper;
+@@ -20922,7 +20916,23 @@ fi
+
+
+
++# Check whether --with-console-kit was given.
++if test "${with_console_kit+set}" = set; then :
++ withval=$with_console_kit;
++else
++ with_console_kit=no
++fi
+
++
++
++# Check whether --with-systemd was given.
++if test "${with_systemd+set}" = set; then :
++ withval=$with_systemd; with_systemd=$withval
++else
++ with_systemd=auto
++fi
++
++
+ # Check whether --with-systemdsystemunitdir was given.
+ if test "${with_systemdsystemunitdir+set}" = set; then :
+ withval=$with_systemdsystemunitdir; with_systemdsystemunitdir=$withval
+@@ -21764,8 +21774,17 @@ fi
+
+ $as_echo "#define SUPPORTS_PAM_EXTENSIONS 1" >>confdefs.h
+
++else
++ if false; then
++ SUPPORTS_PAM_EXTENSIONS_TRUE=
++ SUPPORTS_PAM_EXTENSIONS_FALSE='#'
++else
++ SUPPORTS_PAM_EXTENSIONS_TRUE='#'
++ SUPPORTS_PAM_EXTENSIONS_FALSE=
+ fi
+
++fi
++
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for keyctl_read in -lkeyutils" >&5
+ $as_echo_n "checking for keyctl_read in -lkeyutils... " >&6; }
+ if ${ac_cv_lib_keyutils_keyctl_read+:} false; then :
+@@ -22008,7 +22027,7 @@ fi
+
+
+
+-for ac_header in utmp.h utmpx.h libutil.h sys/param.h
++for ac_header in utmp.h utmpx.h util.h sys/param.h
+ do :
+ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default"
+@@ -22021,7 +22040,7 @@ fi
+
+ done
+
+-for ac_func in getutxent updwtmpx updwtmp
++for ac_func in getutxent getttyent updwtmpx updwtmp
+ do :
+ as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+@@ -22033,94 +22052,6 @@ _ACEOF
+ fi
+ done
+
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for login in -lutil" >&5
+-$as_echo_n "checking for login in -lutil... " >&6; }
+-if ${ac_cv_lib_util_login+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lutil $LIBS"
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char login ();
+-int
+-main ()
+-{
+-return login ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_link "$LINENO"; then :
+- ac_cv_lib_util_login=yes
+-else
+- ac_cv_lib_util_login=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_login" >&5
+-$as_echo "$ac_cv_lib_util_login" >&6; }
+-if test "x$ac_cv_lib_util_login" = xyes; then :
+-
+-
+-$as_echo "#define HAVE_LOGIN 1" >>confdefs.h
+-
+- EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil"
+-fi
+-
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for logout in -lutil" >&5
+-$as_echo_n "checking for logout in -lutil... " >&6; }
+-if ${ac_cv_lib_util_logout+:} false; then :
+- $as_echo_n "(cached) " >&6
+-else
+- ac_check_lib_save_LIBS=$LIBS
+-LIBS="-lutil $LIBS"
+-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+-/* end confdefs.h. */
+-
+-/* Override any GCC internal prototype to avoid an error.
+- Use char because int might match the return type of a GCC
+- builtin and then its argument prototype would still apply. */
+-#ifdef __cplusplus
+-extern "C"
+-#endif
+-char logout ();
+-int
+-main ()
+-{
+-return logout ();
+- ;
+- return 0;
+-}
+-_ACEOF
+-if ac_fn_c_try_link "$LINENO"; then :
+- ac_cv_lib_util_logout=yes
+-else
+- ac_cv_lib_util_logout=no
+-fi
+-rm -f core conftest.err conftest.$ac_objext \
+- conftest$ac_exeext conftest.$ac_ext
+-LIBS=$ac_check_lib_save_LIBS
+-fi
+-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_util_logout" >&5
+-$as_echo "$ac_cv_lib_util_logout" >&6; }
+-if test "x$ac_cv_lib_util_logout" = xyes; then :
+-
+-
+-$as_echo "#define HAVE_LOGOUT 1" >>confdefs.h
+-
+- EXTRA_DAEMON_LIBS="$EXTRA_DAEMON_LIBS -lutil"
+-fi
+-
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for logwtmp in -lutil" >&5
+ $as_echo_n "checking for logwtmp in -lutil... " >&6; }
+ if ${ac_cv_lib_util_logwtmp+:} false; then :
+@@ -23207,7 +23138,25 @@ fi
+ CPPFLAGS="$xinerama_save_cppflags"
+
+
++use_console_kit=no
++if test "x$with_console_kit" != "xno" ; then
++ use_console_kit=yes
+
++$as_echo "#define WITH_CONSOLE_KIT 1" >>confdefs.h
++
++fi
++ if test x$use_console_kit = xyes; then
++ WITH_CONSOLE_KIT_TRUE=
++ WITH_CONSOLE_KIT_FALSE='#'
++else
++ WITH_CONSOLE_KIT_TRUE='#'
++ WITH_CONSOLE_KIT_FALSE=
++fi
++
++
++
++
++
+ pkg_failed=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for SYSTEMD" >&5
+ $as_echo_n "checking for SYSTEMD... " >&6; }
+@@ -23216,12 +23165,12 @@ if test -n "$SYSTEMD_CFLAGS"; then
+ pkg_cv_SYSTEMD_CFLAGS="$SYSTEMD_CFLAGS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "libsystemd") 2>&5
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-login >= 186 libsystemd-daemon\""; } >&5
++ ($PKG_CONFIG --exists --print-errors "libsystemd-login >= 186 libsystemd-daemon") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+- pkg_cv_SYSTEMD_CFLAGS=`$PKG_CONFIG --cflags "libsystemd" 2>/dev/null`
++ pkg_cv_SYSTEMD_CFLAGS=`$PKG_CONFIG --cflags "libsystemd-login >= 186 libsystemd-daemon" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+ else
+ pkg_failed=yes
+@@ -23233,12 +23182,12 @@ if test -n "$SYSTEMD_LIBS"; then
+ pkg_cv_SYSTEMD_LIBS="$SYSTEMD_LIBS"
+ elif test -n "$PKG_CONFIG"; then
+ if test -n "$PKG_CONFIG" && \
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd\""; } >&5
+- ($PKG_CONFIG --exists --print-errors "libsystemd") 2>&5
++ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libsystemd-login >= 186 libsystemd-daemon\""; } >&5
++ ($PKG_CONFIG --exists --print-errors "libsystemd-login >= 186 libsystemd-daemon") 2>&5
+ ac_status=$?
+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+ test $ac_status = 0; }; then
+- pkg_cv_SYSTEMD_LIBS=`$PKG_CONFIG --libs "libsystemd" 2>/dev/null`
++ pkg_cv_SYSTEMD_LIBS=`$PKG_CONFIG --libs "libsystemd-login >= 186 libsystemd-daemon" 2>/dev/null`
+ test "x$?" != "x0" && pkg_failed=yes
+ else
+ pkg_failed=yes
+@@ -23259,50 +23208,49 @@ else
+ _pkg_short_errors_supported=no
+ fi
+ if test $_pkg_short_errors_supported = yes; then
+- SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd" 2>&1`
++ SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libsystemd-login >= 186 libsystemd-daemon" 2>&1`
+ else
+- SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd" 2>&1`
++ SYSTEMD_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libsystemd-login >= 186 libsystemd-daemon" 2>&1`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$SYSTEMD_PKG_ERRORS" >&5
+
+- as_fn_error $? "Package requirements (libsystemd) were not met:
+-
+-$SYSTEMD_PKG_ERRORS
+-
+-Consider adjusting the PKG_CONFIG_PATH environment variable if you
+-installed software in a non-standard prefix.
+-
+-Alternatively, you may set the environment variables SYSTEMD_CFLAGS
+-and SYSTEMD_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details." "$LINENO" 5
++ have_systemd=no
+ elif test $pkg_failed = untried; then
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+- { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5
+-$as_echo "$as_me: error: in \`$ac_pwd':" >&2;}
+-as_fn_error $? "The pkg-config script could not be found or is too old. Make sure it
+-is in your PATH or set the PKG_CONFIG environment variable to the full
+-path to pkg-config.
+-
+-Alternatively, you may set the environment variables SYSTEMD_CFLAGS
+-and SYSTEMD_LIBS to avoid the need to call pkg-config.
+-See the pkg-config man page for more details.
+-
+-To get pkg-config, see <http://pkg-config.freedesktop.org/>.
+-See \`config.log' for more details" "$LINENO" 5; }
++ have_systemd=no
+ else
+ SYSTEMD_CFLAGS=$pkg_cv_SYSTEMD_CFLAGS
+ SYSTEMD_LIBS=$pkg_cv_SYSTEMD_LIBS
+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
++ have_systemd=yes
++fi
+
++if test "x$with_systemd" = "xauto" ; then
++ if test x$have_systemd = xno ; then
++ use_systemd=no
++ else
++ use_systemd=yes
++ fi
++else
++ use_systemd="$with_systemd"
+ fi
+
++if test "x$use_systemd" != "xno" ; then
++ if test "x$have_systemd" = "xno"; then
++ as_fn_error $? "Systemd support explicitly required, but systemd not found" "$LINENO" 5
++ fi
+
+
++$as_echo "#define WITH_SYSTEMD 1" >>confdefs.h
+
++fi
+
++
++
++
+ pkg_failed=no
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for JOURNALD" >&5
+ $as_echo_n "checking for JOURNALD... " >&6; }
+@@ -23727,6 +23675,18 @@ GDM_OLD_CONF='${gdmconfdir}/gdm.conf'
+
+
+
++# Check whether --with-consolekit-directory was given.
++if test "${with_consolekit_directory+set}" = set; then :
++ withval=$with_consolekit_directory;
++else
++ with_consolekit_directory="\${libexecdir}"
++fi
++
++
++CONSOLEKIT_DIR=$with_consolekit_directory
++
++
++
+ # Check whether --with-gnome-settings-daemon-directory was given.
+ if test "${with_gnome_settings_daemon_directory+set}" = set; then :
+ withval=$with_gnome_settings_daemon_directory;
+@@ -24829,6 +24789,10 @@ if test -z "${SUPPORTS_PAM_EXTENSIONS_TRUE}" && test -
+ as_fn_error $? "conditional \"SUPPORTS_PAM_EXTENSIONS\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ fi
++if test -z "${SUPPORTS_PAM_EXTENSIONS_TRUE}" && test -z "${SUPPORTS_PAM_EXTENSIONS_FALSE}"; then
++ as_fn_error $? "conditional \"SUPPORTS_PAM_EXTENSIONS\" was never defined.
++Usually this means the macro was only invoked conditionally." "$LINENO" 5
++fi
+ if test -z "${XDMCP_SUPPORT_TRUE}" && test -z "${XDMCP_SUPPORT_FALSE}"; then
+ as_fn_error $? "conditional \"XDMCP_SUPPORT\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+@@ -24841,6 +24805,10 @@ if test -z "${OS_SOLARIS_TRUE}" && test -z "${OS_SOLAR
+ as_fn_error $? "conditional \"OS_SOLARIS\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+ fi
++if test -z "${WITH_CONSOLE_KIT_TRUE}" && test -z "${WITH_CONSOLE_KIT_FALSE}"; then
++ as_fn_error $? "conditional \"WITH_CONSOLE_KIT\" was never defined.
++Usually this means the macro was only invoked conditionally." "$LINENO" 5
++fi
+ if test -z "${INSTALL_SYSTEMD_UNITS_TRUE}" && test -z "${INSTALL_SYSTEMD_UNITS_FALSE}"; then
+ as_fn_error $? "conditional \"INSTALL_SYSTEMD_UNITS\" was never defined.
+ Usually this means the macro was only invoked conditionally." "$LINENO" 5
+@@ -27325,6 +27293,7 @@ echo "
+ dmconfdir: ${dmconfdir}
+ localstatedir: ${localstatedir}
+ datadir: ${datadir}
++ consolekit location: ${with_consolekit_directory}
+ gnome-settings-daemon location: ${with_gnome_settings_daemon_directory}
+ gnome-session-check-accel location: ${with_check_accelerated_directory}
+ source code location: ${srcdir}
+@@ -27354,6 +27323,8 @@ echo \
+ " Xinerama support: ${XINERAMA_SUPPORT}
+ XDMCP support: ${XDMCP_SUPPORT}
+ SELinux support: ${use_selinux}
++ ConsoleKit support: ${use_console_kit}
++ systemd support: ${use_systemd}
+ systemd unit dir: ${with_systemdsystemunitdir}
+ plymouth support: ${use_plymouth}
+ wayland support: ${enable_wayland_support}
+@@ -27362,3 +27333,4 @@ echo \
+ Enable documentation: ${enable_documentation}
+ Install GDM's Xsession: ${enable_gdm_xsession}
+ "
++
diff --git a/x11/gdm/files/patch-daemon_Makefile.in b/x11/gdm/files/patch-daemon_Makefile.in
index 4b6e01c7fe7d..91ba64a88646 100644
--- a/x11/gdm/files/patch-daemon_Makefile.in
+++ b/x11/gdm/files/patch-daemon_Makefile.in
@@ -1,10 +1,94 @@
---- daemon/Makefile.in.orig 2013-04-12 00:53:59.667693353 +0000
-+++ daemon/Makefile.in 2013-04-12 00:54:27.682691596 +0000
-@@ -752,6 +752,7 @@
- gdm_session_worker_LDFLAGS = \
- $(XLIB_LIBS) \
- $(PAM_LIBS) \
-+ $(EXTRA_DAEMON_LIBS) \
+--- daemon/Makefile.in.orig 2018-01-14 12:25:16.930784000 +0100
++++ daemon/Makefile.in 2018-01-14 12:25:17.007460000 +0100
+@@ -101,6 +101,7 @@ libexec_PROGRAMS = gdm-session-worker$(EXEEXT) \
+
+ sbin_PROGRAMS = gdm$(EXEEXT) $(am__EXEEXT_1)
+ @XDMCP_SUPPORT_TRUE@am__append_4 = $(XDMCP_SOURCES)
++@WITH_CONSOLE_KIT_TRUE@am__append_5 = $(CONSOLE_KIT_SOURCES)
+ subdir = daemon
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/m4/intltool.m4 \
+@@ -139,6 +140,8 @@ am__objects_2 = gdm-xdmcp-display-factory.$(OBJEXT) \
+ gdm-xdmcp-display.$(OBJEXT) \
+ gdm-xdmcp-chooser-display.$(OBJEXT) $(am__objects_1)
+ @XDMCP_SUPPORT_TRUE@am__objects_3 = $(am__objects_2)
++am__objects_4 = $(am__objects_1)
++@WITH_CONSOLE_KIT_TRUE@am__objects_5 = $(am__objects_4)
+ am_gdm_OBJECTS = main.$(OBJEXT) gdm-display-access-file.$(OBJEXT) \
+ gdm-display-store.$(OBJEXT) gdm-display-factory.$(OBJEXT) \
+ gdm-local-display-factory.$(OBJEXT) gdm-display.$(OBJEXT) \
+@@ -148,7 +151,7 @@ am_gdm_OBJECTS = main.$(OBJEXT) gdm-display-access-fil
+ gdm-session-record.$(OBJEXT) \
+ gdm-session-worker-common.$(OBJEXT) \
+ gdm-session-worker-job.$(OBJEXT) gdm-dbus-util.$(OBJEXT) \
+- $(am__objects_1) $(am__objects_3)
++ $(am__objects_1) $(am__objects_3) $(am__objects_5)
+ nodist_gdm_OBJECTS = gdm-display-glue.$(OBJEXT) \
+ gdm-local-display-factory-glue.$(OBJEXT) \
+ gdm-manager-glue.$(OBJEXT) gdm-local-display-glue.$(OBJEXT) \
+@@ -175,16 +178,16 @@ am__gdm_session_worker_SOURCES_DIST = session-worker-m
+ $(top_srcdir)/pam-extensions/gdm-pam-extensions.h \
+ gdm-session-linux-auditor.h gdm-session-linux-auditor.c \
+ gdm-session-solaris-auditor.h gdm-session-solaris-auditor.c
+-@HAVE_LIBAUDIT_TRUE@am__objects_4 = \
++@HAVE_LIBAUDIT_TRUE@am__objects_6 = \
+ @HAVE_LIBAUDIT_TRUE@ gdm-session-linux-auditor.$(OBJEXT)
+-@HAVE_ADT_TRUE@am__objects_5 = gdm-session-solaris-auditor.$(OBJEXT)
++@HAVE_ADT_TRUE@am__objects_7 = gdm-session-solaris-auditor.$(OBJEXT)
+ am_gdm_session_worker_OBJECTS = session-worker-main.$(OBJEXT) \
+ gdm-session.$(OBJEXT) gdm-session-settings.$(OBJEXT) \
+ gdm-session-auditor.$(OBJEXT) gdm-session-record.$(OBJEXT) \
+ gdm-session-worker.$(OBJEXT) gdm-session-worker-job.$(OBJEXT) \
+ gdm-session-worker-common.$(OBJEXT) gdm-dbus-util.$(OBJEXT) \
+- $(am__objects_1) $(am__objects_1) $(am__objects_4) \
+- $(am__objects_5)
++ $(am__objects_1) $(am__objects_1) $(am__objects_6) \
++ $(am__objects_7)
+ nodist_gdm_session_worker_OBJECTS = gdm-session-glue.$(OBJEXT) \
+ gdm-session-worker-glue.$(OBJEXT) \
+ gdm-session-enum-types.$(OBJEXT) $(am__objects_1)
+@@ -310,6 +313,7 @@ CHECK_CFLAGS = @CHECK_CFLAGS@
+ CHECK_LIBS = @CHECK_LIBS@
+ COMMON_CFLAGS = @COMMON_CFLAGS@
+ COMMON_LIBS = @COMMON_LIBS@
++CONSOLEKIT_DIR = @CONSOLEKIT_DIR@
+ CPP = @CPP@
+ CPPFLAGS = @CPPFLAGS@
+ CXX = @CXX@
+@@ -466,6 +470,7 @@ SYSTEMD_X_SERVER = @SYSTEMD_X_SERVER@
+ USE_NLS = @USE_NLS@
+ VERSION = @VERSION@
+ WARN_CFLAGS = @WARN_CFLAGS@
++WITH_CONSOLE_KIT = @WITH_CONSOLE_KIT@
+ XDMCP_LIBS = @XDMCP_LIBS@
+ XEVIE_OPTION = @XEVIE_OPTION@
+ XGETTEXT = @XGETTEXT@
+@@ -571,6 +576,7 @@ AM_CPPFLAGS = \
+ -DGDM_SCREENSHOT_DIR=\"$(GDM_SCREENSHOT_DIR)\" \
+ -DGDM_CACHE_DIR=\""$(localstatedir)/cache/gdm"\" \
+ -DGDM_SESSION_DEFAULT_PATH=\"$(GDM_SESSION_DEFAULT_PATH)\" \
++ -DCONSOLEKIT_DIR=\"$(CONSOLEKIT_DIR)\" \
+ $(DISABLE_DEPRECATED_CFLAGS) \
+ $(DAEMON_CFLAGS) \
+ $(XLIB_CFLAGS) \
+@@ -674,7 +680,8 @@ gdm_SOURCES = main.c gdm-display-access-file.c \
+ gdm-session-record.c gdm-session-record.h \
+ gdm-session-worker-common.c gdm-session-worker-common.h \
+ gdm-session-worker-job.c gdm-session-worker-job.h \
+- gdm-dbus-util.c gdm-dbus-util.h $(NULL) $(am__append_4)
++ gdm-dbus-util.c gdm-dbus-util.h $(NULL) $(am__append_4) \
++ $(am__append_5)
+ nodist_gdm_SOURCES = \
+ gdm-display-glue.h \
+ gdm-display-glue.c \
+@@ -701,8 +708,8 @@ XDMCP_SOURCES = \
+ gdm-xdmcp-chooser-display.h \
+ $(NULL)
+
+-EXTRA_gdm_SOURCES = \
+- $(XDMCP_SOURCES) \
++EXTRA_gdm_SOURCES = $(XDMCP_SOURCES) $(NULL) $(CONSOLE_KIT_SOURCES)
++CONSOLE_KIT_SOURCES = \
$(NULL)
- gdm_session_worker_LDADD = \
+ gdm_LDADD = \
diff --git a/x11/gdm/files/patch-daemon_gdm-launch-environment.c b/x11/gdm/files/patch-daemon_gdm-launch-environment.c
new file mode 100644
index 000000000000..cd14eaa21b58
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_gdm-launch-environment.c
@@ -0,0 +1,37 @@
+$OpenBSD: patch-daemon_gdm-launch-environment_c,v 1.8 2017/04/17 13:17:07 ajacoutot Exp $
+
+XXX fix+push upstream
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:28:01 -0400
+Subject: drop consolekit support
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From a9cacb929470eb82582396984c61d5b611bfeb1a Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 14:33:40 -0400
+Subject: session: drop session-type property
+
+--- daemon/gdm-launch-environment.c.orig Wed Apr 12 15:47:09 2017
++++ daemon/gdm-launch-environment.c Mon Apr 17 14:17:28 2017
+@@ -197,6 +197,9 @@ build_launch_environment (GdmLaunchEnvironment *launch
+ char *seat_id;
+
+ seat_id = launch_environment->priv->x11_display_seat_id;
++ if (g_str_has_prefix (seat_id, "/org/freedesktop/ConsoleKit/")) {
++ seat_id += strlen ("/org/freedesktop/ConsoleKit/");
++ }
+
+ g_hash_table_insert (hash, g_strdup ("GDM_SEAT_ID"), g_strdup (seat_id));
+ }
+@@ -224,6 +227,8 @@ on_session_setup_complete (GdmSession *session,
+ gdm_session_set_environment_variable (launch_environment->priv->session, key, value);
+ }
+ g_hash_table_destroy (hash);
++
++ gdm_session_select_session_type (launch_environment->priv->session, "LoginWindow");
+ }
+
+ static void
diff --git a/x11/gdm/files/patch-daemon_gdm-local-display-factory.c b/x11/gdm/files/patch-daemon_gdm-local-display-factory.c
new file mode 100644
index 000000000000..8ed9f5e00239
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_gdm-local-display-factory.c
@@ -0,0 +1,132 @@
+$OpenBSD: patch-daemon_gdm-local-display-factory_c,v 1.6 2017/03/03 13:01:26 ajacoutot Exp $
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:28:01 -0400
+Subject: drop consolekit support
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:48:52 -0400
+Subject: require logind support
+
+--- daemon/gdm-local-display-factory.c.orig Wed Mar 1 16:58:36 2017
++++ daemon/gdm-local-display-factory.c Fri Mar 3 12:00:56 2017
+@@ -42,6 +42,8 @@
+
+ #define GDM_LOCAL_DISPLAY_FACTORY_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GDM_TYPE_LOCAL_DISPLAY_FACTORY, GdmLocalDisplayFactoryPrivate))
+
++#define CK_SEAT1_PATH "/org/freedesktop/ConsoleKit/Seat1"
++
+ #define GDM_DBUS_PATH "/org/gnome/DisplayManager"
+ #define GDM_LOCAL_DISPLAY_FACTORY_DBUS_PATH GDM_DBUS_PATH "/LocalDisplayFactory"
+ #define GDM_MANAGER_DBUS_NAME "org.gnome.DisplayManager.LocalDisplayFactory"
+@@ -57,8 +59,10 @@ struct GdmLocalDisplayFactoryPrivate
+ /* FIXME: this needs to be per seat? */
+ guint num_failures;
+
++#ifdef WITH_SYSTEMD
+ guint seat_new_id;
+ guint seat_removed_id;
++#endif
+ };
+
+ enum {
+@@ -206,8 +210,10 @@ gdm_local_display_factory_create_transient_display (Gd
+
+ g_debug ("GdmLocalDisplayFactory: Creating transient display");
+
+-#ifdef ENABLE_USER_DISPLAY_SERVER
+- display = gdm_local_display_new ();
++#if defined ENABLE_USER_DISPLAY_SERVER && defined WITH_SYSTEMD
++ if (LOGIND_RUNNING() > 0) {
++ display = gdm_local_display_new ();
++ }
+ #else
+ if (display == NULL) {
+ guint32 num;
+@@ -289,7 +295,7 @@ on_display_status_changed (GdmDisplay *dis
+ /* reset num failures */
+ factory->priv->num_failures = 0;
+
+- gdm_local_display_factory_sync_seats (factory);
++ create_display (factory, seat_id, session_type, is_initial);
+ }
+ break;
+ case GDM_DISPLAY_FAILED:
+@@ -368,7 +374,7 @@ create_display (GdmLocalDisplayFactory *factory,
+
+ g_debug ("GdmLocalDisplayFactory: Adding display on seat %s", seat_id);
+
+-#ifdef ENABLE_USER_DISPLAY_SERVER
++#if defined ENABLE_USER_DISPLAY_SERVER && defined WITH_SYSTEMD
+ if (g_strcmp0 (seat_id, "seat0") == 0) {
+ display = gdm_local_display_new ();
+ if (session_type != NULL) {
+@@ -400,6 +406,8 @@ create_display (GdmLocalDisplayFactory *factory,
+ return display;
+ }
+
++#ifdef WITH_SYSTEMD
++
+ static void
+ delete_display (GdmLocalDisplayFactory *factory,
+ const char *seat_id) {
+@@ -536,6 +544,7 @@ gdm_local_display_factory_stop_monitor (GdmLocalDispla
+ factory->priv->seat_removed_id = 0;
+ }
+ }
++#endif
+
+ static void
+ on_display_added (GdmDisplayStore *display_store,
+@@ -576,6 +585,7 @@ static gboolean
+ gdm_local_display_factory_start (GdmDisplayFactory *base_factory)
+ {
+ GdmLocalDisplayFactory *factory = GDM_LOCAL_DISPLAY_FACTORY (base_factory);
++ GdmDisplay *display;
+ GdmDisplayStore *store;
+
+ g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE);
+@@ -594,8 +604,17 @@ gdm_local_display_factory_start (GdmDisplayFactory *ba
+ factory,
+ 0);
+
+- gdm_local_display_factory_start_monitor (factory);
+- return gdm_local_display_factory_sync_seats (factory);
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ gdm_local_display_factory_start_monitor (factory);
++ return gdm_local_display_factory_sync_seats (factory);
++ }
++#endif
++
++ /* On ConsoleKit just create Seat1, and that's it. */
++ display = create_display (factory, CK_SEAT1_PATH, NULL, TRUE);
++
++ return display != NULL;
+ }
+
+ static gboolean
+@@ -606,7 +625,9 @@ gdm_local_display_factory_stop (GdmDisplayFactory *bas
+
+ g_return_val_if_fail (GDM_IS_LOCAL_DISPLAY_FACTORY (factory), FALSE);
+
++#ifdef WITH_SYSTEMD
+ gdm_local_display_factory_stop_monitor (factory);
++#endif
+
+ store = gdm_display_factory_get_display_store (GDM_DISPLAY_FACTORY (factory));
+
+@@ -762,7 +783,9 @@ gdm_local_display_factory_finalize (GObject *object)
+
+ g_hash_table_destroy (factory->priv->used_display_numbers);
+
++#ifdef WITH_SYSTEMD
+ gdm_local_display_factory_stop_monitor (factory);
++#endif
+
+ G_OBJECT_CLASS (gdm_local_display_factory_parent_class)->finalize (object);
+ }
diff --git a/x11/gdm/files/patch-daemon_gdm-manager.c b/x11/gdm/files/patch-daemon_gdm-manager.c
new file mode 100644
index 000000000000..af1ada894ddd
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_gdm-manager.c
@@ -0,0 +1,946 @@
+$OpenBSD: patch-daemon_gdm-manager_c,v 1.14 2017/05/10 10:18:15 ajacoutot Exp $
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 21905303afbd508f3bf599ad219c9209413c53a2 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Wed, 5 Apr 2017 12:11:20 -0400
+Subject: manager: stop transient greeter session when done with it
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 22c332baaf8ad6d7082c5b01250bae70934c2fd1 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Tue, 4 Apr 2017 17:07:04 -0400
+Subject: manager: make sure we end up on a login screen
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:28:01 -0400
+Subject: drop consolekit support
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:48:52 -0400
+Subject: require logind support
+
+
+--- daemon/gdm-manager.c.orig 2017-10-24 21:33:58.000000000 +0200
++++ daemon/gdm-manager.c 2018-01-14 13:33:21.588929000 +0100
+@@ -36,7 +36,9 @@
+
+ #include <act/act-user-manager.h>
+
++#ifdef WITH_SYSTEMD
+ #include <systemd/sd-login.h>
++#endif
+
+ #include "gdm-common.h"
+
+@@ -63,6 +65,15 @@
+
+ #define INITIAL_SETUP_USERNAME "gnome-initial-setup"
+
++#define CK_NAME "org.freedesktop.ConsoleKit"
++#define CK_PATH "/org/freedesktop/ConsoleKit"
++#define CK_INTERFACE "org.freedesktop.ConsoleKit"
++
++#define CK_MANAGER_PATH "/org/freedesktop/ConsoleKit/Manager"
++#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
++#define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat"
++#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
++
+ typedef struct
+ {
+ GdmManager *manager;
+@@ -206,9 +217,10 @@ plymouth_quit_without_transition (void)
+ }
+ #endif
+
++#ifdef WITH_SYSTEMD
+ static char *
+-get_session_id_for_pid (pid_t pid,
+- GError **error)
++get_session_id_for_pid_systemd (pid_t pid,
++ GError **error)
+ {
+ char *session, *gsession;
+ int ret;
+@@ -233,11 +245,61 @@ get_session_id_for_pid (pid_t pid,
+ return NULL;
+ }
+ }
++#endif
+
++#ifdef WITH_CONSOLE_KIT
++static char *
++get_session_id_for_pid_consolekit (GDBusConnection *connection,
++ pid_t pid,
++ GError **error)
++{
++ GVariant *reply;
++ char *retval;
++
++ reply = g_dbus_connection_call_sync (connection,
++ "org.freedesktop.ConsoleKit",
++ "/org/freedesktop/ConsoleKit/Manager",
++ "org.freedesktop.ConsoleKit.Manager",
++ "GetSessionForUnixProcess",
++ g_variant_new ("(u)", pid),
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, error);
++ if (reply == NULL) {
++ return NULL;
++ }
++
++ g_variant_get (reply, "(o)", &retval);
++ g_variant_unref (reply);
++
++ return retval;
++}
++#endif
++
++static char *
++get_session_id_for_pid (GDBusConnection *connection,
++ pid_t pid,
++ GError **error)
++{
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ return get_session_id_for_pid_systemd (pid, error);
++ }
++#endif
++
++#ifdef WITH_CONSOLE_KIT
++ return get_session_id_for_pid_consolekit (connection, pid, error);
++#endif
++
++ return NULL;
++}
++
++#ifdef WITH_SYSTEMD
+ static gboolean
+-get_uid_for_session_id (const char *session_id,
+- uid_t *uid,
+- GError **error)
++get_uid_for_systemd_session_id (const char *session_id,
++ uid_t *uid,
++ GError **error)
+ {
+ int ret;
+
+@@ -254,8 +316,62 @@ get_uid_for_session_id (const char *session_id,
+
+ return TRUE;
+ }
++#endif
+
++#ifdef WITH_CONSOLE_KIT
+ static gboolean
++get_uid_for_consolekit_session_id (GDBusConnection *connection,
++ const char *session_id,
++ uid_t *out_uid,
++ GError **error)
++{
++ GVariant *reply;
++ guint32 uid;
++
++ reply = g_dbus_connection_call_sync (connection,
++ "org.freedesktop.ConsoleKit",
++ session_id,
++ "org.freedesktop.ConsoleKit.Session",
++ "GetUnixUser",
++ NULL,
++ G_VARIANT_TYPE ("(u)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ error);
++ if (reply == NULL) {
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(u)", &uid);
++ g_variant_unref (reply);
++
++ *out_uid = (uid_t) uid;
++
++ return TRUE;
++}
++#endif
++
++static gboolean
++get_uid_for_session_id (GDBusConnection *connection,
++ const char *session_id,
++ uid_t *uid,
++ GError **error)
++{
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ return get_uid_for_systemd_session_id (session_id, uid, error);
++ }
++#endif
++
++#ifdef WITH_CONSOLE_KIT
++ return get_uid_for_consolekit_session_id (connection, session_id, uid, error);
++#endif
++
++ return FALSE;
++}
++
++static gboolean
+ lookup_by_session_id (const char *id,
+ GdmDisplay *display,
+ gpointer user_data)
+@@ -267,11 +383,51 @@ lookup_by_session_id (const char *id,
+ return g_strcmp0 (current, looking_for) == 0;
+ }
+
++#ifdef WITH_CONSOLE_KIT
+ static gboolean
+-is_login_session (GdmManager *self,
+- const char *session_id,
+- GError **error)
++is_consolekit_login_session (GdmManager *self,
++ GDBusConnection *connection,
++ const char *session_id,
++ GError **error)
+ {
++ GVariant *reply;
++ char *session_type = NULL;
++
++ reply = g_dbus_connection_call_sync (connection,
++ "org.freedesktop.ConsoleKit",
++ session_id,
++ "org.freedesktop.ConsoleKit.Session",
++ "GetSessionType",
++ NULL,
++ G_VARIANT_TYPE ("(s)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ error);
++ if (reply == NULL) {
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(s)", &session_type);
++ g_variant_unref (reply);
++
++ if (g_strcmp0 (session_type, "LoginWindow") != 0) {
++ g_free (session_type);
++
++ return FALSE;
++ }
++
++ g_free (session_type);
++ return TRUE;
++}
++#endif
++
++#ifdef WITH_SYSTEMD
++static gboolean
++is_systemd_login_session (GdmManager *self,
++ const char *session_id,
++ GError **error)
++{
+ char *session_class = NULL;
+ int ret;
+
+@@ -295,12 +451,33 @@ is_login_session (GdmManager *self,
+ g_free (session_class);
+ return TRUE;
+ }
++#endif
+
+ static gboolean
+-activate_session_id (GdmManager *manager,
+- const char *seat_id,
+- const char *session_id)
++is_login_session (GdmManager *self,
++ GDBusConnection *connection,
++ const char *session_id,
++ GError **error)
+ {
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ return is_systemd_login_session (self, session_id, error);
++ }
++#endif
++
++#ifdef WITH_CONSOLE_KIT
++ return is_consolekit_login_session (self, connection, session_id, error);
++#endif
++
++ return FALSE;
++}
++
++#ifdef WITH_SYSTEMD
++static gboolean
++activate_session_id_for_systemd (GdmManager *manager,
++ const char *seat_id,
++ const char *session_id)
++{
+ GError *error = NULL;
+ GVariant *reply;
+
+@@ -326,16 +503,75 @@ activate_session_id (GdmManager *manager,
+
+ return TRUE;
+ }
++#endif
+
++#ifdef WITH_CONSOLE_KIT
+ static gboolean
+-session_unlock (GdmManager *manager,
+- const char *ssid)
++activate_session_id_for_ck (GdmManager *manager,
++ const char *seat_id,
++ const char *session_id)
+ {
+ GError *error = NULL;
+ GVariant *reply;
+
+- g_debug ("Unlocking session %s", ssid);
++ reply = g_dbus_connection_call_sync (manager->priv->connection,
++ CK_NAME,
++ seat_id,
++ "org.freedesktop.ConsoleKit.Seat",
++ "ActivateSession",
++ g_variant_new ("(o)", session_id),
++ NULL, /* expected reply */
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ &error);
++ if (reply == NULL) {
++ g_debug ("GdmManager: ConsoleKit %s raised:\n %s\n\n",
++ g_dbus_error_get_remote_error (error), error->message);
++ g_error_free (error);
+
++ /* It is very likely that the "error" just reported is
++ * that the session is already active. Unfortunately,
++ * ConsoleKit doesn't use proper error codes and it
++ * translates the error message, so we have no real way
++ * to detect this case...
++ */
++ return TRUE;
++ }
++
++ g_variant_unref (reply);
++
++ return TRUE;
++}
++#endif
++
++static gboolean
++activate_session_id (GdmManager *manager,
++ const char *seat_id,
++ const char *session_id)
++{
++
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ return activate_session_id_for_systemd (manager, seat_id, session_id);
++ }
++#endif
++
++#ifdef WITH_CONSOLE_KIT
++ return activate_session_id_for_ck (manager, seat_id, session_id);
++#else
++ return FALSE;
++#endif
++}
++
++#ifdef WITH_SYSTEMD
++static gboolean
++session_unlock_for_systemd (GdmManager *manager,
++ const char *ssid)
++{
++ GError *error = NULL;
++ GVariant *reply;
++
+ reply = g_dbus_connection_call_sync (manager->priv->connection,
+ "org.freedesktop.login1",
+ "/org/freedesktop/login1",
+@@ -358,7 +594,60 @@ session_unlock (GdmManager *manager,
+
+ return TRUE;
+ }
++#endif
+
++#ifdef WITH_CONSOLE_KIT
++static gboolean
++session_unlock_for_ck (GdmManager *manager,
++ const char *ssid)
++{
++ GError *error = NULL;
++ GVariant *reply;
++
++ reply = g_dbus_connection_call_sync (manager->priv->connection,
++ CK_NAME,
++ ssid,
++ CK_SESSION_INTERFACE,
++ "Unlock",
++ NULL, /* parameters */
++ NULL, /* expected reply */
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ &error);
++ if (reply == NULL) {
++ g_debug ("GdmManager: ConsoleKit %s raised:\n %s\n\n",
++ g_dbus_error_get_remote_error (error), error->message);
++ g_error_free (error);
++ return FALSE;
++ }
++
++ g_variant_unref (reply);
++
++ return TRUE;
++}
++#endif
++
++static gboolean
++session_unlock (GdmManager *manager,
++ const char *ssid)
++{
++
++ g_debug ("Unlocking session %s", ssid);
++
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ return session_unlock_for_systemd (manager, ssid);
++ }
++#endif
++
++#ifdef WITH_CONSOLE_KIT
++ return session_unlock_for_ck (manager, ssid);
++#else
++ return TRUE;
++#endif
++}
++
+ static GdmSession *
+ find_session_for_user_on_seat (GdmManager *manager,
+ const char *username,
+@@ -389,11 +678,44 @@ find_session_for_user_on_seat (GdmManager *manager,
+ return NULL;
+ }
+
++#ifdef WITH_CONSOLE_KIT
+ static gboolean
+-is_remote_session (GdmManager *self,
+- const char *session_id,
+- GError **error)
++is_consolekit_remote_session (GdmManager *self,
++ GDBusConnection *connection,
++ const char *session_id,
++ GError **error)
+ {
++ GVariant *reply;
++ gboolean is_remote;
++
++ reply = g_dbus_connection_call_sync (connection,
++ "org.freedesktop.ConsoleKit",
++ session_id,
++ "org.freedesktop.ConsoleKit.Session",
++ "IsLocal",
++ NULL,
++ G_VARIANT_TYPE ("(b)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ error);
++ if (reply == NULL) {
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(b)", &is_remote);
++ g_variant_unref (reply);
++
++ return is_remote;
++}
++#endif
++
++#ifdef WITH_SYSTEMD
++static gboolean
++is_systemd_remote_session (GdmManager *self,
++ const char *session_id,
++ GError **error)
++{
+ char *seat;
+ int ret;
+ gboolean is_remote;
+@@ -418,10 +740,31 @@ is_remote_session (GdmManager *self,
+
+ return is_remote;
+ }
++#endif
+
++static gboolean
++is_remote_session (GdmManager *self,
++ GDBusConnection *connection,
++ const char *session_id,
++ GError **error)
++{
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ return is_systemd_remote_session (self, session_id, error);
++ }
++#endif
++
++#ifdef WITH_CONSOLE_KIT
++ return is_consolekit_remote_session (self, connection, session_id, error);
++#endif
++
++ return FALSE;
++}
++
++#ifdef WITH_SYSTEMD
+ static char *
+-get_seat_id_for_session_id (const char *session_id,
+- GError **error)
++get_seat_id_for_systemd_session_id (const char *session_id,
++ GError **error)
+ {
+ int ret;
+ char *seat, *out_seat;
+@@ -446,11 +789,62 @@ get_seat_id_for_session_id (const char *session_id,
+
+ return out_seat;
+ }
++#endif
+
++#ifdef WITH_CONSOLE_KIT
+ static char *
+-get_tty_for_session_id (const char *session_id,
+- GError **error)
++get_seat_id_for_consolekit_session_id (GDBusConnection *connection,
++ const char *session_id,
++ GError **error)
+ {
++ GVariant *reply;
++ char *retval;
++
++ reply = g_dbus_connection_call_sync (connection,
++ "org.freedesktop.ConsoleKit",
++ session_id,
++ "org.freedesktop.ConsoleKit.Session",
++ "GetSeatId",
++ NULL,
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ error);
++ if (reply == NULL) {
++ return NULL;
++ }
++
++ g_variant_get (reply, "(o)", &retval);
++ g_variant_unref (reply);
++
++ return retval;
++}
++#endif
++
++static char *
++get_seat_id_for_session_id (GDBusConnection *connection,
++ const char *session_id,
++ GError **error)
++{
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ return get_seat_id_for_systemd_session_id (session_id, error);
++ }
++#endif
++
++#ifdef WITH_CONSOLE_KIT
++ return get_seat_id_for_consolekit_session_id (connection, session_id, error);
++#endif
++
++ return NULL;
++}
++
++#ifdef WITH_SYSTEMD
++static char *
++get_tty_for_systemd_session_id (const char *session_id,
++ GError **error)
++{
+ int ret;
+ char *tty, *out_tty;
+
+@@ -473,7 +867,21 @@ get_tty_for_session_id (const char *session_id,
+
+ return out_tty;
+ }
++#endif
+
++static char *
++get_tty_for_session_id (const char *session_id,
++ GError **error)
++{
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ return get_tty_for_systemd_session_id (session_id, error);
++ }
++#endif
++
++ return NULL;
++}
++
+ static void
+ get_display_and_details_for_bus_sender (GdmManager *self,
+ GDBusConnection *connection,
+@@ -516,7 +924,7 @@ get_display_and_details_for_bus_sender (GdmManager
+ goto out;
+ }
+
+- session_id = get_session_id_for_pid (pid, &error);
++ session_id = get_session_id_for_pid (connection, pid, &error);
+
+ if (session_id == NULL) {
+ g_debug ("GdmManager: Error while retrieving session id for sender: %s",
+@@ -530,7 +938,7 @@ get_display_and_details_for_bus_sender (GdmManager
+ }
+
+ if (out_is_login_screen != NULL) {
+- *out_is_login_screen = is_login_session (self, session_id, &error);
++ *out_is_login_screen = is_login_session (self, connection, session_id, &error);
+
+ if (error != NULL) {
+ g_debug ("GdmManager: Error while checking if sender is login screen: %s",
+@@ -540,7 +948,7 @@ get_display_and_details_for_bus_sender (GdmManager
+ }
+ }
+
+- if (!get_uid_for_session_id (session_id, &session_uid, &error)) {
++ if (!get_uid_for_session_id (connection, session_id, &session_uid, &error)) {
+ g_debug ("GdmManager: Error while retrieving uid for session: %s",
+ error->message);
+ g_error_free (error);
+@@ -557,7 +965,7 @@ get_display_and_details_for_bus_sender (GdmManager
+ }
+
+ if (out_seat_id != NULL) {
+- *out_seat_id = get_seat_id_for_session_id (session_id, &error);
++ *out_seat_id = get_seat_id_for_session_id (connection, session_id, &error);
+
+ if (error != NULL) {
+ g_debug ("GdmManager: Error while retrieving seat id for session: %s",
+@@ -567,7 +975,7 @@ get_display_and_details_for_bus_sender (GdmManager
+ }
+
+ if (out_is_remote != NULL) {
+- *out_is_remote = is_remote_session (self, session_id, &error);
++ *out_is_remote = is_remote_session (self, connection, session_id, &error);
+
+ if (error != NULL) {
+ g_debug ("GdmManager: Error while retrieving remoteness for session: %s",
+@@ -725,29 +1133,6 @@ out:
+ return recorded;
+ }
+
+-static GdmSession *
+-find_user_session_for_display (GdmManager *self,
+- GdmDisplay *display)
+-{
+-
+- GList *node = self->priv->user_sessions;
+-
+- while (node != NULL) {
+- GdmSession *session = node->data;
+- GdmDisplay *candidate_display;
+- GList *next_node = node->next;
+-
+- candidate_display = get_display_for_user_session (session);
+-
+- if (candidate_display == display)
+- return session;
+-
+- node = next_node;
+- }
+-
+- return NULL;
+-}
+-
+ static gboolean
+ gdm_manager_handle_register_display (GdmDBusManager *manager,
+ GDBusMethodInvocation *invocation,
+@@ -787,7 +1172,7 @@ gdm_manager_handle_register_display (GdmDBusManager
+ }
+ }
+
+- session = find_user_session_for_display (self, display);
++ session = get_user_session_for_display (display);
+
+ if (session != NULL) {
+ GPid pid;
+@@ -961,7 +1346,8 @@ on_reauthentication_client_rejected (GdmSession
+ * same audit session, ignore it since it doesn't "own" the
+ * reauthentication session
+ */
+- client_session_id = get_session_id_for_pid (pid_of_client,
++ client_session_id = get_session_id_for_pid (self->priv->connection,
++ pid_of_client,
+ NULL);
+ session_id = g_object_get_data (G_OBJECT (session), "caller-session-id");
+
+@@ -1173,16 +1559,20 @@ static gboolean
+ display_is_on_seat0 (GdmDisplay *display)
+ {
+ gboolean is_on_seat0 = TRUE;
+- char *seat_id = NULL;
+
+- g_object_get (G_OBJECT (display), "seat-id", &seat_id, NULL);
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ char *seat_id = NULL;
+
+- if (g_strcmp0 (seat_id, "seat0") != 0) {
+- is_on_seat0 = FALSE;
+- }
++ g_object_get (G_OBJECT (display), "seat-id", &seat_id, NULL);
+
+- g_free (seat_id);
++ if (g_strcmp0 (seat_id, "seat0") != 0) {
++ is_on_seat0 = FALSE;
++ }
+
++ g_free (seat_id);
++ }
++#endif
+ return is_on_seat0;
+ }
+
+@@ -1320,133 +1710,6 @@ maybe_start_pending_initial_login (GdmManager *manager
+ g_free (user_session_seat_id);
+ }
+
+-static gboolean
+-get_login_window_session_id (const char *seat_id,
+- char **session_id)
+-{
+- gboolean ret;
+- int res, i;
+- char **sessions;
+- char *service_id;
+- char *service_class;
+- char *state;
+-
+- res = sd_seat_get_sessions (seat_id, &sessions, NULL, NULL);
+- if (res < 0) {
+- g_debug ("Failed to determine sessions: %s", strerror (-res));
+- return FALSE;
+- }
+-
+- if (sessions == NULL || sessions[0] == NULL) {
+- *session_id = NULL;
+- ret = TRUE;
+- goto out;
+- }
+-
+- for (i = 0; sessions[i]; i ++) {
+-
+- res = sd_session_get_class (sessions[i], &service_class);
+- if (res < 0) {
+- g_debug ("failed to determine class of session %s: %s", sessions[i], strerror (-res));
+- ret = FALSE;
+- goto out;
+- }
+-
+- if (strcmp (service_class, "greeter") != 0) {
+- free (service_class);
+- continue;
+- }
+-
+- free (service_class);
+-
+- ret = sd_session_get_state (sessions[i], &state);
+- if (ret < 0) {
+- g_debug ("failed to determine state of session %s: %s", sessions[i], strerror (-res));
+- ret = FALSE;
+- goto out;
+- }
+-
+- if (g_strcmp0 (state, "closing") == 0) {
+- free (state);
+- continue;
+- }
+- free (state);
+-
+- res = sd_session_get_service (sessions[i], &service_id);
+- if (res < 0) {
+- g_debug ("failed to determine service of session %s: %s", sessions[i], strerror (-res));
+- ret = FALSE;
+- goto out;
+- }
+-
+- if (strcmp (service_id, "gdm-launch-environment") == 0) {
+- *session_id = g_strdup (sessions[i]);
+- ret = TRUE;
+-
+- free (service_id);
+- goto out;
+- }
+-
+- free (service_id);
+- }
+-
+- *session_id = NULL;
+- ret = TRUE;
+-
+-out:
+- if (sessions) {
+- for (i = 0; sessions[i]; i ++) {
+- free (sessions[i]);
+- }
+-
+- free (sessions);
+- }
+-
+- return ret;
+-}
+-
+-static void
+-activate_login_window_session_on_seat (GdmManager *self,
+- const char *seat_id)
+-{
+- char *session_id;
+-
+- if (!get_login_window_session_id (seat_id, &session_id)) {
+- return;
+- }
+-
+- activate_session_id (self, seat_id, session_id);
+-}
+-
+-static void
+-maybe_activate_other_session (GdmManager *self,
+- GdmDisplay *old_display)
+-{
+- char *seat_id = NULL;
+- char *session_id;
+- int ret;
+-
+- g_object_get (G_OBJECT (old_display),
+- "seat-id", &seat_id,
+- NULL);
+-
+- ret = sd_seat_get_active (seat_id, &session_id, NULL);
+-
+- if (ret == 0) {
+- GdmDisplay *display;
+-
+- display = gdm_display_store_find (self->priv->display_store,
+- lookup_by_session_id,
+- (gpointer) session_id);
+-
+- if (display == NULL) {
+- activate_login_window_session_on_seat (self, seat_id);
+- }
+- }
+-
+- g_free (seat_id);
+-}
+-
+ static const char *
+ get_username_for_greeter_display (GdmManager *manager,
+ GdmDisplay *display)
+@@ -1692,7 +1955,6 @@ on_display_status_changed (GdmDisplay *display,
+ manager->priv->ran_once = TRUE;
+ }
+ maybe_start_pending_initial_login (manager, display);
+- maybe_activate_other_session (manager, display);
+ break;
+ default:
+ break;
+@@ -2027,11 +2289,57 @@ on_user_session_died (GdmSession *session,
+ }
+
+ static char *
++query_ck_for_display_device (GdmManager *manager,
++ GdmDisplay *display)
++{
++ char *out;
++ char *command;
++ char *display_name = NULL;
++ int status;
++ gboolean res;
++ GError *error;
++
++ g_object_get (G_OBJECT (display),
++ "x11-display-name", &display_name,
++ NULL);
++
++ error = NULL;
++ command = g_strdup_printf (CONSOLEKIT_DIR "/ck-get-x11-display-device --display %s",
++ display_name);
++ g_free (display_name);
++
++ g_debug ("GdmManager: Running helper %s", command);
++ out = NULL;
++ res = g_spawn_command_line_sync (command,
++ &out,
++ NULL,
++ &status,
++ &error);
++ if (! res) {
++ g_warning ("GdmManager: Could not run helper %s: %s", command, error->message);
++ g_error_free (error);
++ } else {
++ out = g_strstrip (out);
++ g_debug ("GdmManager: Got tty: '%s'", out);
++ }
++
++ g_free (command);
++
++ return out;
++}
++
++static char *
+ get_display_device (GdmManager *manager,
+ GdmDisplay *display)
+ {
+- /* systemd finds the display device out on its own based on the display */
+- return NULL;
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ /* systemd finds the display device out on its own based on the display */
++ return NULL;
++ }
++#endif
++
++ return query_ck_for_display_device (manager, display);
+ }
+
+ static void
+@@ -2040,25 +2348,6 @@ on_session_reauthenticated (GdmSession *session,
+ GdmManager *manager)
+ {
+ gboolean fail_if_already_switched = FALSE;
+-
+- if (gdm_session_get_display_mode (session) == GDM_SESSION_DISPLAY_MODE_REUSE_VT) {
+- const char *seat_id;
+- char *session_id;
+-
+- seat_id = gdm_session_get_display_seat_id (session);
+- if (get_login_window_session_id (seat_id, &session_id)) {
+- GdmDisplay *display = gdm_display_store_find (manager->priv->display_store,
+- lookup_by_session_id,
+- (gpointer) session_id);
+-
+- if (display != NULL) {
+- gdm_display_stop_greeter_session (display);
+- gdm_display_unmanage (display);
+- gdm_display_finish (display);
+- }
+- g_free (session_id);
+- }
+- }
+
+ /* There should already be a session running, so jump to its
+ * VT. In the event we're already on the right VT, (i.e. user
diff --git a/x11/gdm/files/patch-daemon_gdm-server.c b/x11/gdm/files/patch-daemon_gdm-server.c
new file mode 100644
index 000000000000..22325e63a15f
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_gdm-server.c
@@ -0,0 +1,167 @@
+--- daemon/gdm-server.c.orig 2017-05-05 16:40:44.000000000 +0200
++++ daemon/gdm-server.c 2017-06-08 10:39:30.725180000 +0200
+@@ -43,7 +43,9 @@
+ #include <linux/vt.h>
+ #endif
+
++#ifdef WITH_SYSTEMD
+ #include <systemd/sd-daemon.h>
++#endif
+
+ #ifdef ENABLE_SYSTEMD_JOURNAL
+ #include <systemd/sd-journal.h>
+@@ -122,23 +124,65 @@
+
+ G_DEFINE_TYPE (GdmServer, gdm_server, G_TYPE_OBJECT)
+
++static char *
++_gdm_server_query_ck_for_display_device (GdmServer *server)
++{
++ char *out;
++ char *command;
++ int status;
++ gboolean res;
++ GError *error;
++
++ g_return_val_if_fail (GDM_IS_SERVER (server), NULL);
++
++ error = NULL;
++ command = g_strdup_printf (CONSOLEKIT_DIR "/ck-get-x11-display-device --display %s",
++ server->priv->display_name);
++
++ g_debug ("GdmServer: Running helper %s", command);
++ out = NULL;
++ res = g_spawn_command_line_sync (command,
++ &out,
++ NULL,
++ &status,
++ &error);
++ if (! res) {
++ g_warning ("Could not run helper: %s", error->message);
++ g_error_free (error);
++ } else {
++ out = g_strstrip (out);
++ g_debug ("GdmServer: Got tty: '%s'", out);
++ }
++
++ g_free (command);
++
++ return out;
++}
++
+ char *
+ gdm_server_get_display_device (GdmServer *server)
+ {
+- /* systemd finds the display device out on its own based on the display */
+- return NULL;
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ /* systemd finds the display device out on its own based on the display */
++ return NULL;
++ }
++#endif
++
++ if (server->priv->display_device == NULL) {
++ server->priv->display_device =
++ _gdm_server_query_ck_for_display_device (server);
++
++ g_object_notify (G_OBJECT (server), "display-device");
++ }
++
++ return g_strdup (server->priv->display_device);
+ }
+
+ static void
+ gdm_server_ready (GdmServer *server)
+ {
+ g_debug ("GdmServer: Got USR1 from X server - emitting READY");
+-
+- gdm_run_script (GDMCONFDIR "/Init", GDM_USERNAME,
+- server->priv->display_name,
+- NULL, /* hostname */
+- server->priv->auth_file);
+-
+ g_signal_emit (server, signals[READY], 0);
+ }
+
+@@ -226,8 +270,10 @@
+ debug_options = "";
+ }
+
+-#define X_SERVER_ARG_FORMAT " -background none -noreset -verbose %s%s"
++ #define X_SERVER_ARG_FORMAT " -background none -noreset -verbose %s%s"
+
++#ifdef WITH_SYSTEMD
++
+ /* This is a temporary hack to work around the fact that XOrg
+ * currently lacks support for multi-seat hotplugging for
+ * display devices. This bit should be removed as soon as XOrg
+@@ -242,6 +288,10 @@
+ * wasn't booted using systemd, or b) the wrapper tool is
+ * missing, or c) we are running for the main seat 'seat0'. */
+
++ if (!LOGIND_RUNNING()) {
++ goto fallback;
++ }
++
+ #ifdef ENABLE_SYSTEMD_JOURNAL
+ /* For systemd, we don't have a log file but instead log to stdout,
+ so set it to the xserver's built-in default verbosity */
+@@ -264,8 +314,9 @@
+ return;
+
+ fallback:
+- server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
++#endif
+
++ server->priv->command = g_strdup_printf (X_SERVER X_SERVER_ARG_FORMAT, verbosity, debug_options);
+ }
+
+ static gboolean
+@@ -315,10 +366,12 @@
+ argv[len++] = g_strdup (server->priv->auth_file);
+ }
+
+- if (server->priv->display_seat_id != NULL) {
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING() && server->priv->display_seat_id != NULL) {
+ argv[len++] = g_strdup ("-seat");
+ argv[len++] = g_strdup (server->priv->display_seat_id);
+ }
++#endif
+
+ /* If we were compiled with Xserver >= 1.17 we need to specify
+ * '-listen tcp' as the X server dosen't listen on tcp sockets
+@@ -657,18 +710,14 @@
+ g_signal_emit (server, signals [DIED], 0, num);
+ }
+
++ active_servers = g_slist_remove (active_servers, server);
++
+ g_spawn_close_pid (server->priv->pid);
+ server->priv->pid = -1;
+
+ g_object_unref (server);
+ }
+
+-static void
+-prune_active_servers_list (GdmServer *server)
+-{
+- active_servers = g_slist_remove (active_servers, server);
+-}
+-
+ static gboolean
+ gdm_server_spawn (GdmServer *server,
+ const char *vtarg,
+@@ -707,11 +756,6 @@
+ g_free (freeme);
+
+ active_servers = g_slist_append (active_servers, server);
+-
+- g_object_weak_ref (G_OBJECT (server),
+- (GWeakNotify)
+- prune_active_servers_list,
+- server);
+
+ gdm_server_launch_sigusr1_thread_if_needed ();
+
diff --git a/x11/gdm/files/patch-daemon_gdm-session-worker-job.c b/x11/gdm/files/patch-daemon_gdm-session-worker-job.c
new file mode 100644
index 000000000000..cd7f6b0c27f1
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_gdm-session-worker-job.c
@@ -0,0 +1,20 @@
+$OpenBSD: patch-daemon_gdm-session-worker-job_c,v 1.1 2015/10/18 13:25:54 ajacoutot Exp $
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:48:52 -0400
+Subject: require logind support
+
+--- daemon/gdm-session-worker-job.c.orig Mon Sep 21 16:12:33 2015
++++ daemon/gdm-session-worker-job.c Sun Oct 18 14:23:39 2015
+@@ -36,7 +36,9 @@
+ #include <sys/prctl.h>
+ #endif
+
++#ifdef WITH_SYSTEMD
+ #include <systemd/sd-daemon.h>
++#endif
+
+ #ifdef ENABLE_SYSTEMD_JOURNAL
+ #include <systemd/sd-journal.h>
diff --git a/x11/gdm/files/patch-daemon_gdm-session-worker.c b/x11/gdm/files/patch-daemon_gdm-session-worker.c
new file mode 100644
index 000000000000..121ca11a0232
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_gdm-session-worker.c
@@ -0,0 +1,611 @@
+$OpenBSD: patch-daemon_gdm-session-worker_c,v 1.15 2017/03/12 12:58:03 nigel Exp $
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 1ac67f522f5690c27023d98096ca817f12f7eb88 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:28:01 -0400
+Subject: drop consolekit support
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:48:52 -0400
+Subject: require logind support
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From a9cacb929470eb82582396984c61d5b611bfeb1a Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 14:33:40 -0400
+Subject: session: drop session-type property
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 6942fb9b16bab7173bbd295fb19a9770289dbe0e Mon Sep 17 00:00:00 2001
+From: Tim Lunn <tim@feathertop.org>
+Date: Mon, 11 Apr 2016 23:18:10 +1000
+Subject: gdm-session: set PAM_TTY when initialising pam
+
+--- daemon/gdm-session-worker.c.orig 2017-10-31 18:16:51.000000000 +0100
++++ daemon/gdm-session-worker.c 2018-01-17 17:38:41.826277000 +0100
+@@ -28,9 +28,11 @@
+ #include <string.h>
+ #include <sys/types.h>
+ #include <sys/wait.h>
++#ifdef WITH_SYSTEMD
+ #include <sys/ioctl.h>
+ #include <sys/vt.h>
+ #include <sys/kd.h>
++#endif
+ #include <errno.h>
+ #include <grp.h>
+ #include <pwd.h>
+@@ -49,7 +51,9 @@
+
+ #include <X11/Xauth.h>
+
++#ifdef WITH_SYSTEMD
+ #include <systemd/sd-daemon.h>
++#endif
+
+ #ifdef ENABLE_SYSTEMD_JOURNAL
+ #include <systemd/sd-journal.h>
+@@ -93,7 +97,7 @@
+ #endif
+
+ #ifndef GDM_SESSION_DEFAULT_PATH
+-#define GDM_SESSION_DEFAULT_PATH "/usr/local/bin:/usr/bin:/bin"
++#define GDM_SESSION_DEFAULT_PATH "%%LOCALBASE%%/bin:/usr/bin:/bin"
+ #endif
+
+ #ifndef GDM_SESSION_ROOT_UID
+@@ -136,6 +140,10 @@ struct GdmSessionWorkerPrivate
+
+ int exit_code;
+
++#ifdef WITH_CONSOLE_KIT
++ char *session_cookie;
++#endif
++
+ pam_handle_t *pam_handle;
+
+ GPid child_pid;
+@@ -150,6 +158,7 @@ struct GdmSessionWorkerPrivate
+ char *hostname;
+ char *username;
+ char *log_file;
++ char *session_type;
+ char *session_id;
+ uid_t uid;
+ gid_t gid;
+@@ -223,6 +232,204 @@ G_DEFINE_TYPE_WITH_CODE (GdmSessionWorker,
+ G_IMPLEMENT_INTERFACE (GDM_DBUS_TYPE_WORKER,
+ worker_interface_init))
+
++#ifdef WITH_CONSOLE_KIT
++static gboolean
++open_ck_session (GdmSessionWorker *worker)
++{
++ GDBusConnection *system_bus;
++ GVariantBuilder builder;
++ GVariant *parameters;
++ GVariant *in_args;
++ struct passwd *pwent;
++ GVariant *reply;
++ GError *error = NULL;
++ const char *display_name;
++ const char *display_device;
++ const char *display_hostname;
++ const char *session_type;
++ gint32 uid;
++
++ g_assert (worker->priv->session_cookie == NULL);
++
++ if (worker->priv->x11_display_name != NULL) {
++ display_name = worker->priv->x11_display_name;
++ } else {
++ display_name = "";
++ }
++ if (worker->priv->hostname != NULL) {
++ display_hostname = worker->priv->hostname;
++ } else {
++ display_hostname = "";
++ }
++ if (worker->priv->display_device != NULL) {
++ display_device = worker->priv->display_device;
++ } else {
++ display_device = "";
++ }
++
++ if (worker->priv->session_type != NULL) {
++ session_type = worker->priv->session_type;
++ } else {
++ session_type = "";
++ }
++
++ g_assert (worker->priv->username != NULL);
++
++ gdm_get_pwent_for_name (worker->priv->username, &pwent);
++ if (pwent == NULL) {
++ goto out;
++ }
++
++ uid = (gint32) pwent->pw_uid;
++
++ error = NULL;
++ system_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
++
++ if (system_bus == NULL) {
++ g_warning ("Couldn't create connection to system bus: %s",
++ error->message);
++
++ g_error_free (error);
++ goto out;
++ }
++
++ g_variant_builder_init (&builder, G_VARIANT_TYPE ("a(sv)"));
++ g_variant_builder_add_parsed (&builder, "('unix-user', <%i>)", uid);
++ g_variant_builder_add_parsed (&builder, "('x11-display-device', <%s>)", display_device);
++ g_variant_builder_add_parsed (&builder, "('x11-display', <%s>)", display_name);
++ g_variant_builder_add_parsed (&builder, "('remote-host-name', <%s>)", display_hostname);
++ g_variant_builder_add_parsed (&builder, "('is-local', <%b>)", worker->priv->display_is_local);
++ g_variant_builder_add_parsed (&builder, "('session-type', <%s>)", session_type);
++
++ parameters = g_variant_builder_end (&builder);
++ in_args = g_variant_new_tuple (&parameters, 1);
++
++ reply = g_dbus_connection_call_sync (system_bus,
++ "org.freedesktop.ConsoleKit",
++ "/org/freedesktop/ConsoleKit/Manager",
++ "org.freedesktop.ConsoleKit.Manager",
++ "OpenSessionWithParameters",
++ in_args,
++ G_VARIANT_TYPE ("(s)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ &error);
++
++ if (! reply) {
++ g_warning ("%s\n", error->message);
++ g_clear_error (&error);
++ goto out;
++ }
++
++ g_variant_get (reply, "(s)", &worker->priv->session_cookie);
++
++ g_variant_unref (reply);
++
++out:
++ return worker->priv->session_cookie != NULL;
++}
++
++static void
++close_ck_session (GdmSessionWorker *worker)
++{
++ GDBusConnection *system_bus;
++ GVariant *reply;
++ GError *error = NULL;
++ gboolean was_closed;
++
++ if (worker->priv->session_cookie == NULL) {
++ return;
++ }
++
++ error = NULL;
++ system_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
++
++ if (system_bus == NULL) {
++ g_warning ("Couldn't create connection to system bus: %s",
++ error->message);
++
++ g_error_free (error);
++ goto out;
++ }
++
++ reply = g_dbus_connection_call_sync (system_bus,
++ "org.freedesktop.ConsoleKit",
++ "/org/freedesktop/ConsoleKit/Manager",
++ "org.freedesktop.ConsoleKit.Manager",
++ "CloseSession",
++ g_variant_new ("(s)", worker->priv->session_cookie),
++ G_VARIANT_TYPE ("(b)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ &error);
++
++ if (! reply) {
++ g_warning ("%s", error->message);
++ g_clear_error (&error);
++ goto out;
++ }
++
++ g_variant_get (reply, "(b)", &was_closed);
++
++ if (!was_closed) {
++ g_warning ("Unable to close ConsoleKit session");
++ }
++
++ g_variant_unref (reply);
++
++out:
++ g_clear_pointer (&worker->priv->session_cookie,
++ (GDestroyNotify) g_free);
++}
++
++static char *
++get_ck_session_id (GdmSessionWorker *worker)
++{
++ GDBusConnection *system_bus;
++ GVariant *reply;
++ GError *error = NULL;
++ char *session_id = NULL;
++
++ error = NULL;
++ system_bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error);
++
++ if (system_bus == NULL) {
++ g_warning ("Couldn't create connection to system bus: %s",
++ error->message);
++
++ g_error_free (error);
++ goto out;
++ }
++
++ reply = g_dbus_connection_call_sync (system_bus,
++ "org.freedesktop.ConsoleKit",
++ "/org/freedesktop/ConsoleKit/Manager",
++ "org.freedesktop.ConsoleKit.Manager",
++ "GetSessionForCookie",
++ g_variant_new ("(s)", worker->priv->session_cookie),
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL,
++ &error);
++
++ if (reply == NULL) {
++ g_warning ("%s", error->message);
++ g_clear_error (&error);
++ goto out;
++ }
++
++ g_variant_get (reply, "(o)", &session_id);
++
++ g_variant_unref (reply);
++
++out:
++ return session_id;
++}
++#endif
++
+ /* adapted from glib script_execute */
+ static void
+ script_execute (const gchar *file,
+@@ -674,7 +881,9 @@ gdm_session_worker_process_pam_message (GdmSessionWork
+ char *user_answer;
+ gboolean res;
+ char *utf8_msg;
++#ifdef PAM_RADIO_TYPE
+ char *msg;
++#endif
+
+ if (response != NULL) {
+ *response = NULL;
+@@ -878,6 +1087,7 @@ gdm_session_worker_stop_auditor (GdmSessionWorker *wor
+ worker->priv->auditor = NULL;
+ }
+
++#ifdef WITH_SYSTEMD
+ static void
+ on_release_display (int signal)
+ {
+@@ -1003,6 +1213,7 @@ jump_to_vt (GdmSessionWorker *worker,
+
+ close (active_vt_tty_fd);
+ }
++#endif
+
+ static void
+ gdm_session_worker_uninitialize_pam (GdmSessionWorker *worker,
+@@ -1033,11 +1244,13 @@ gdm_session_worker_uninitialize_pam (GdmSessionWorker
+
+ gdm_session_worker_stop_auditor (worker);
+
++#ifdef WITH_SYSTEMD
+ if (g_strcmp0 (worker->priv->display_seat_id, "seat0") == 0) {
+ if (worker->priv->login_vt != worker->priv->session_vt) {
+ jump_to_vt (worker, worker->priv->login_vt);
+ }
+ }
++#endif
+
+ worker->priv->login_vt = 0;
+ worker->priv->session_vt = 0;
+@@ -1088,6 +1301,7 @@ _get_xauth_for_pam (const char *x11_authority_file)
+ }
+ #endif
+
++#ifdef WITH_SYSTEMD
+ static gboolean
+ ensure_login_vt (GdmSessionWorker *worker)
+ {
+@@ -1099,7 +1313,7 @@ ensure_login_vt (GdmSessionWorker *worker)
+
+ if (fd < 0) {
+ g_debug ("GdmSessionWorker: couldn't open VT master: %m");
+- return FALSE;
++ return FALSE;
+ }
+
+ if (ioctl (fd, VT_GETSTATE, &vt_state) < 0) {
+@@ -1113,6 +1327,7 @@ out:
+ close (fd);
+ return got_login_vt;
+ }
++#endif
+
+ static gboolean
+ gdm_session_worker_initialize_pam (GdmSessionWorker *worker,
+@@ -1129,7 +1344,6 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
+ {
+ struct pam_conv pam_conversation;
+ int error_code;
+- char tty_string[256];
+
+ g_assert (worker->priv->pam_handle == NULL);
+
+@@ -1196,10 +1410,12 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
+ }
+ }
+
++#ifdef WITH_SYSTEMD
+ /* set seat ID */
+- if (seat_id != NULL && seat_id[0] != '\0') {
++ if (seat_id != NULL && seat_id[0] != '\0' && LOGIND_RUNNING()) {
+ gdm_session_worker_set_environment_variable (worker, "XDG_SEAT", seat_id);
+ }
++#endif
+
+ if (strcmp (service, "gdm-launch-environment") == 0) {
+ gdm_session_worker_set_environment_variable (worker, "XDG_SESSION_CLASS", "greeter");
+@@ -1208,6 +1424,7 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
+ g_debug ("GdmSessionWorker: state SETUP_COMPLETE");
+ worker->priv->state = GDM_SESSION_WORKER_STATE_SETUP_COMPLETE;
+
++#ifdef WITH_SYSTEMD
+ /* Temporarily set PAM_TTY with the currently active VT (login screen)
+ PAM_TTY will be reset with the users VT right before the user session is opened */
+ ensure_login_vt (worker);
+@@ -1215,6 +1432,7 @@ gdm_session_worker_initialize_pam (GdmSessionWorker
+ pam_set_item (worker->priv->pam_handle, PAM_TTY, tty_string);
+ if (!display_is_local)
+ worker->priv->password_is_required = TRUE;
++#endif
+
+ out:
+ if (error_code != PAM_SUCCESS) {
+@@ -1509,7 +1727,7 @@ _lookup_passwd_info (const char *username,
+ if (passwd_entry->pw_shell != NULL && passwd_entry->pw_shell[0] != '\0') {
+ *shellp = g_strdup (passwd_entry->pw_shell);
+ } else {
+- *shellp = g_strdup ("/bin/bash");
++ *shellp = g_strdup ("/bin/sh");
+ }
+ }
+ ret = TRUE;
+@@ -1762,6 +1980,26 @@ gdm_session_worker_get_environment (GdmSessionWorker *
+ return (const char * const *) pam_getenvlist (worker->priv->pam_handle);
+ }
+
++#ifdef WITH_CONSOLE_KIT
++static void
++register_ck_session (GdmSessionWorker *worker)
++{
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ return;
++ }
++#endif
++
++ open_ck_session (worker);
++
++ if (worker->priv->session_cookie != NULL) {
++ gdm_session_worker_set_environment_variable (worker,
++ "XDG_SESSION_COOKIE",
++ worker->priv->session_cookie);
++ }
++}
++#endif
++
+ static gboolean
+ run_script (GdmSessionWorker *worker,
+ const char *dir)
+@@ -1792,6 +2030,9 @@ session_worker_child_watch (GPid pid,
+ : WIFSIGNALED (status) ? WTERMSIG (status)
+ : -1);
+
++#ifdef WITH_CONSOLE_KIT
++ close_ck_session (worker);
++#endif
+
+ gdm_session_worker_uninitialize_pam (worker, PAM_SUCCESS);
+
+@@ -1982,6 +2223,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
+
+ error_code = PAM_SUCCESS;
+
++#ifdef WITH_SYSTEMD
+ /* If we're in new vt mode, jump to the new vt now. There's no need to jump for
+ * the other two modes: in the logind case, the session will activate itself when
+ * ready, and in the reuse server case, we're already on the correct VT. */
+@@ -1990,6 +2232,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
+ jump_to_vt (worker, worker->priv->session_vt);
+ }
+ }
++#endif
+
+ if (!worker->priv->is_program_session && !run_script (worker, GDMCONFDIR "/PostLogin")) {
+ g_set_error (error,
+@@ -2054,6 +2297,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
+ _exit (EXIT_FAILURE);
+ }
+
++#ifdef WITH_SYSTEMD
+ /* Take control of the tty
+ */
+ if (needs_controlling_terminal) {
+@@ -2061,6 +2305,7 @@ gdm_session_worker_start_session (GdmSessionWorker *w
+ g_debug ("GdmSessionWorker: could not take control of tty: %m");
+ }
+ }
++#endif
+
+ #ifdef HAVE_LOGINCAP
+ if (setusercontext (NULL, passwd_entry, passwd_entry->pw_uid, LOGIN_SETALL) < 0) {
+@@ -2205,11 +2450,13 @@ gdm_session_worker_start_session (GdmSessionWorker *w
+ return TRUE;
+ }
+
++#ifdef WITH_SYSTEMD
+ static gboolean
+ set_up_for_new_vt (GdmSessionWorker *worker)
+ {
+ int fd;
+ char vt_string[256], tty_string[256];
++ struct vt_stat vt_state = { 0 };
+ int session_vt = 0;
+
+ fd = open ("/dev/tty0", O_RDWR | O_NOCTTY);
+@@ -2219,6 +2466,11 @@ set_up_for_new_vt (GdmSessionWorker *worker)
+ return FALSE;
+ }
+
++ if (ioctl (fd, VT_GETSTATE, &vt_state) < 0) {
++ g_debug ("GdmSessionWorker: couldn't get current VT: %m");
++ goto fail;
++ }
++
+ if (worker->priv->display_is_initial) {
+ session_vt = atoi (GDM_INITIAL_VT);
+ } else {
+@@ -2228,6 +2480,7 @@ set_up_for_new_vt (GdmSessionWorker *worker)
+ }
+ }
+
++ worker->priv->login_vt = vt_state.v_active;
+ worker->priv->session_vt = session_vt;
+
+ close (fd);
+@@ -2290,6 +2543,7 @@ fail:
+ close (fd);
+ return FALSE;
+ }
++#endif
+
+ static gboolean
+ set_up_for_current_vt (GdmSessionWorker *worker,
+@@ -2357,12 +2611,14 @@ set_up_for_current_vt (GdmSessionWorker *worker,
+ }
+ #endif
+
++#ifdef WITH_SYSTEMD
+ if (g_strcmp0 (worker->priv->display_seat_id, "seat0") == 0) {
+ g_debug ("GdmSessionWorker: setting XDG_VTNR to current vt");
+ set_xdg_vtnr_to_current_vt (worker);
+ } else {
+ g_debug ("GdmSessionWorker: not setting XDG_VTNR since not seat0");
+ }
++#endif
+
+ return TRUE;
+ out:
+@@ -2386,6 +2642,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
+ return FALSE;
+ }
+ break;
++#ifdef WITH_SYSTEMD
+ case GDM_SESSION_DISPLAY_MODE_NEW_VT:
+ case GDM_SESSION_DISPLAY_MODE_LOGIND_MANAGED:
+ if (!set_up_for_new_vt (worker)) {
+@@ -2396,6 +2653,7 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
+ return FALSE;
+ }
+ break;
++#endif
+ }
+
+ flags = 0;
+@@ -2417,8 +2675,18 @@ gdm_session_worker_open_session (GdmSessionWorker *wo
+ g_debug ("GdmSessionWorker: state SESSION_OPENED");
+ worker->priv->state = GDM_SESSION_WORKER_STATE_SESSION_OPENED;
+
++#ifdef WITH_SYSTEMD
+ session_id = gdm_session_worker_get_environment_variable (worker, "XDG_SESSION_ID");
++#endif
+
++#ifdef WITH_CONSOLE_KIT
++ register_ck_session (worker);
++
++ if (session_id == NULL) {
++ session_id = get_ck_session_id (worker);
++ }
++#endif
++
+ if (session_id != NULL) {
+ g_free (worker->priv->session_id);
+ worker->priv->session_id = session_id;
+@@ -2523,6 +2791,19 @@ gdm_session_worker_handle_set_session_name (GdmDBusWor
+ }
+
+ static gboolean
++gdm_session_worker_handle_set_session_type (GdmDBusWorker *object,
++ GDBusMethodInvocation *invocation,
++ const char *session_type)
++{
++ GdmSessionWorker *worker = GDM_SESSION_WORKER (object);
++ g_debug ("GdmSessionWorker: session type set to %s", session_type);
++ g_free (worker->priv->session_type);
++ worker->priv->session_type = g_strdup (session_type);
++ gdm_dbus_worker_complete_set_session_type (object, invocation);
++ return TRUE;
++}
++
++static gboolean
+ gdm_session_worker_handle_set_session_display_mode (GdmDBusWorker *object,
+ GDBusMethodInvocation *invocation,
+ const char *str)
+@@ -2949,6 +3230,7 @@ gdm_session_worker_handle_open (GdmDBusWorker
+ return TRUE;
+ }
+
++#ifdef SUPPORTS_PAM_EXTENSIONS
+ static char **
+ filter_extensions (const char * const *extensions)
+ {
+@@ -2974,6 +3256,7 @@ filter_extensions (const char * const *extensions)
+
+ return filtered_extensions;
+ }
++#endif
+
+ static gboolean
+ gdm_session_worker_handle_initialize (GdmDBusWorker *object,
+@@ -2993,8 +3276,10 @@ gdm_session_worker_handle_initialize (GdmDBusWorker
+ while (g_variant_iter_loop (&iter, "{sv}", &key, &value)) {
+ if (g_strcmp0 (key, "service") == 0) {
+ worker->priv->service = g_variant_dup_string (value, NULL);
++#ifdef SUPPORTS_PAM_EXTENSIONS
+ } else if (g_strcmp0 (key, "extensions") == 0) {
+ worker->priv->extensions = filter_extensions (g_variant_get_strv (value, NULL));
++#endif
+ } else if (g_strcmp0 (key, "username") == 0) {
+ worker->priv->username = g_variant_dup_string (value, NULL);
+ } else if (g_strcmp0 (key, "is-program-session") == 0) {
+@@ -3434,6 +3719,7 @@ worker_interface_init (GdmDBusWorkerIface *interface)
+ interface->handle_open = gdm_session_worker_handle_open;
+ interface->handle_set_language_name = gdm_session_worker_handle_set_language_name;
+ interface->handle_set_session_name = gdm_session_worker_handle_set_session_name;
++ interface->handle_set_session_type = gdm_session_worker_handle_set_session_type;
+ interface->handle_set_session_display_mode = gdm_session_worker_handle_set_session_display_mode;
+ interface->handle_set_environment_variable = gdm_session_worker_handle_set_environment_variable;
+ interface->handle_start_program = gdm_session_worker_handle_start_program;
diff --git a/x11/gdm/files/patch-daemon_gdm-session-worker.xml b/x11/gdm/files/patch-daemon_gdm-session-worker.xml
new file mode 100644
index 000000000000..185ce246bc24
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_gdm-session-worker.xml
@@ -0,0 +1,12 @@
+--- daemon/gdm-session-worker.xml.orig 2015-07-20 13:13:42 UTC
++++ daemon/gdm-session-worker.xml
+@@ -13,6 +13,9 @@
+ <method name="SetSessionName">
+ <arg name="session_name" direction="in" type="s" />
+ </method>
++ <method name="SetSessionType">
++ <arg name="session_type" direction="in" type="s"/>
++ </method>
+ <method name="SetSessionDisplayMode">
+ <arg name="mode" direction="in" type="s"/>
+ </method>
diff --git a/x11/gdm/files/patch-daemon_gdm-session.c b/x11/gdm/files/patch-daemon_gdm-session.c
new file mode 100644
index 000000000000..a7c1f80f44be
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_gdm-session.c
@@ -0,0 +1,56 @@
+$OpenBSD: patch-daemon_gdm-session_c,v 1.12 2017/05/10 10:18:15 ajacoutot Exp $
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From 9be58c9ec9a3a411492a5182ac4b0d51fdc3a323 Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 13:48:52 -0400
+Subject: require logind support
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From a9cacb929470eb82582396984c61d5b611bfeb1a Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 14:33:40 -0400
+Subject: session: drop session-type property
+
+Index: daemon/gdm-session.c
+--- daemon/gdm-session.c.orig
++++ daemon/gdm-session.c
+@@ -3076,6 +3076,10 @@ gdm_session_bypasses_xsession (GdmSession *self)
+ g_return_val_if_fail (self != NULL, FALSE);
+ g_return_val_if_fail (GDM_IS_SESSION (self), FALSE);
+
++ if (!LOGIND_RUNNING()) {
++ return GDM_SESSION_DISPLAY_MODE_REUSE_VT;
++ }
++
+ #ifdef ENABLE_WAYLAND_SUPPORT
+ if (gdm_session_is_wayland_session (self)) {
+ bypasses_xsession = TRUE;
+@@ -3168,6 +3172,27 @@ gdm_session_select_program (GdmSession *self,
+ g_free (self->priv->selected_program);
+
+ self->priv->selected_program = g_strdup (text);
++}
++
++void
++gdm_session_select_session_type (GdmSession *self,
++ const char *text)
++{
++ GHashTableIter iter;
++ gpointer key, value;
++
++ g_debug ("GdmSession: selecting session type '%s'", text);
++
++ g_hash_table_iter_init (&iter, self->priv->conversations);
++ while (g_hash_table_iter_next (&iter, &key, &value)) {
++ GdmSessionConversation *conversation;
++
++ conversation = (GdmSessionConversation *) value;
++
++ gdm_dbus_worker_call_set_session_type (conversation->worker_proxy,
++ text,
++ NULL, NULL, NULL);
++ }
+ }
+
+ void
diff --git a/x11/gdm/files/patch-daemon_gdm-session.h b/x11/gdm/files/patch-daemon_gdm-session.h
new file mode 100644
index 000000000000..dc8dd0dbf735
--- /dev/null
+++ b/x11/gdm/files/patch-daemon_gdm-session.h
@@ -0,0 +1,19 @@
+$OpenBSD: patch-daemon_gdm-session_h,v 1.4 2016/04/26 08:25:04 ajacoutot Exp $
+
+REVERT - OpenBSD does not have a systemd implementation (we need ConsoleKit)
+From a9cacb929470eb82582396984c61d5b611bfeb1a Mon Sep 17 00:00:00 2001
+From: Ray Strode <rstrode@redhat.com>
+Date: Fri, 12 Jun 2015 14:33:40 -0400
+Subject: session: drop session-type property
+
+--- daemon/gdm-session.h.orig Tue Apr 19 07:00:04 2016
++++ daemon/gdm-session.h Tue Apr 26 10:02:48 2016
+@@ -180,6 +180,8 @@ void gdm_session_answer_query
+ const char *text);
+ void gdm_session_select_program (GdmSession *session,
+ const char *command_line);
++void gdm_session_select_session_type (GdmSession *session,
++ const char *session_type);
+ void gdm_session_select_session (GdmSession *session,
+ const char *session_name);
+ void gdm_session_select_user (GdmSession *session,
diff --git a/x11/gdm/files/patch-data_Init.in b/x11/gdm/files/patch-data_Init.in
new file mode 100644
index 000000000000..b89e85ebedf8
--- /dev/null
+++ b/x11/gdm/files/patch-data_Init.in
@@ -0,0 +1,13 @@
+$OpenBSD: patch-data_Init_in,v 1.7 2015/04/15 14:47:00 ajacoutot Exp $
+--- data/Init.in.orig Thu Apr 2 15:52:42 2015
++++ data/Init.in Wed Apr 15 16:43:30 2015
+@@ -6,6 +6,9 @@
+ PATH="@X_PATH@:$PATH"
+ OLD_IFS=$IFS
+
++# enhance fade in look
++xsetroot -solid black
++
+ gdmwhich () {
+ COMMAND="$1"
+ OUTPUT=
diff --git a/x11/gdm/files/patch-data_applications_mime-dummy-handler.desktop b/x11/gdm/files/patch-data_applications_mime-dummy-handler.desktop
index 8a72f4aa949e..8ed03d6e8f6c 100644
--- a/x11/gdm/files/patch-data_applications_mime-dummy-handler.desktop
+++ b/x11/gdm/files/patch-data_applications_mime-dummy-handler.desktop
@@ -1,5 +1,5 @@
---- data/applications/mime-dummy-handler.desktop.orig 2015-06-18 15:47:40.000000000 +0200
-+++ data/applications/mime-dummy-handler.desktop 2015-07-03 09:30:57.146642000 +0200
+--- data/applications/mime-dummy-handler.desktop.orig 2015-05-29 13:27:05.000000000 +0200
++++ data/applications/mime-dummy-handler.desktop 2015-06-04 07:47:55.014724000 +0200
@@ -1,6 +1,6 @@
[Desktop Entry]
Type=Application
diff --git a/x11/gdm/files/patch-data_dconf_defaults_00-upstream-settings b/x11/gdm/files/patch-data_dconf_defaults_00-upstream-settings
index 7ca2158505d8..7e421494d96d 100644
--- a/x11/gdm/files/patch-data_dconf_defaults_00-upstream-settings
+++ b/x11/gdm/files/patch-data_dconf_defaults_00-upstream-settings
@@ -1,5 +1,5 @@
---- data/dconf/defaults/00-upstream-settings.orig 2015-06-18 15:47:40.000000000 +0200
-+++ data/dconf/defaults/00-upstream-settings 2015-07-03 09:32:09.925298000 +0200
+--- data/dconf/defaults/00-upstream-settings.orig 2015-05-29 13:27:05.000000000 +0200
++++ data/dconf/defaults/00-upstream-settings 2015-06-04 07:49:07.773567000 +0200
@@ -13,7 +13,7 @@
show-desktop-icons=false
diff --git a/x11/gdm/files/patch-data_pam-redhat_gdm-autologin.pam b/x11/gdm/files/patch-data_pam-redhat_gdm-autologin.pam
new file mode 100644
index 000000000000..e7653c42b323
--- /dev/null
+++ b/x11/gdm/files/patch-data_pam-redhat_gdm-autologin.pam
@@ -0,0 +1,10 @@
+--- data/pam-redhat/gdm-autologin.pam.orig 2015-07-20 13:13:44 UTC
++++ data/pam-redhat/gdm-autologin.pam
+@@ -8,6 +8,7 @@ password include system-auth
+ session required pam_selinux.so close
+ session required pam_loginuid.so
+ session optional pam_console.so
++-session optional pam_ck_connector.so
+ session required pam_selinux.so open
+ session optional pam_keyinit.so force revoke
+ session required pam_namespace.so
diff --git a/x11/gdm/files/patch-data_pam-redhat_gdm-fingerprint.pam b/x11/gdm/files/patch-data_pam-redhat_gdm-fingerprint.pam
new file mode 100644
index 000000000000..9ce2f7729d58
--- /dev/null
+++ b/x11/gdm/files/patch-data_pam-redhat_gdm-fingerprint.pam
@@ -0,0 +1,10 @@
+--- data/pam-redhat/gdm-fingerprint.pam.orig 2015-07-20 13:13:44 UTC
++++ data/pam-redhat/gdm-fingerprint.pam
+@@ -9,6 +9,7 @@ password include fingerprint-au
+ session required pam_selinux.so close
+ session required pam_loginuid.so
+ session optional pam_console.so
++-session optional pam_ck_connector.so
+ session required pam_selinux.so open
+ session optional pam_keyinit.so force revoke
+ session required pam_namespace.so
diff --git a/x11/gdm/files/patch-data_pam-redhat_gdm-password.pam b/x11/gdm/files/patch-data_pam-redhat_gdm-password.pam
new file mode 100644
index 000000000000..de3e5c3c78b3
--- /dev/null
+++ b/x11/gdm/files/patch-data_pam-redhat_gdm-password.pam
@@ -0,0 +1,10 @@
+--- data/pam-redhat/gdm-password.pam.orig 2015-07-20 13:13:44 UTC
++++ data/pam-redhat/gdm-password.pam
+@@ -12,6 +12,7 @@ password substack password-auth
+ session required pam_selinux.so close
+ session required pam_loginuid.so
+ session optional pam_console.so
++-session optional pam_ck_connector.so
+ session required pam_selinux.so open
+ session optional pam_keyinit.so force revoke
+ session required pam_namespace.so
diff --git a/x11/gdm/files/patch-data_pam-redhat_gdm-pin.pam b/x11/gdm/files/patch-data_pam-redhat_gdm-pin.pam
new file mode 100644
index 000000000000..14dff49185ee
--- /dev/null
+++ b/x11/gdm/files/patch-data_pam-redhat_gdm-pin.pam
@@ -0,0 +1,10 @@
+--- data/pam-redhat/gdm-pin.pam.orig 2015-07-20 13:13:44 UTC
++++ data/pam-redhat/gdm-pin.pam
+@@ -13,6 +13,7 @@ password optional pam_pin.so
+ session required pam_selinux.so close
+ session required pam_loginuid.so
+ session optional pam_console.so
++-session optional pam_ck_connector.so
+ session required pam_selinux.so open
+ session optional pam_keyinit.so force revoke
+ session required pam_namespace.so
diff --git a/x11/gdm/files/patch-data_pam-redhat_gdm-smartcard.pam b/x11/gdm/files/patch-data_pam-redhat_gdm-smartcard.pam
new file mode 100644
index 000000000000..e7acf1de5372
--- /dev/null
+++ b/x11/gdm/files/patch-data_pam-redhat_gdm-smartcard.pam
@@ -0,0 +1,10 @@
+--- data/pam-redhat/gdm-smartcard.pam.orig 2015-07-20 13:13:44 UTC
++++ data/pam-redhat/gdm-smartcard.pam
+@@ -9,6 +9,7 @@ password include smartcard-auth
+ session required pam_selinux.so close
+ session required pam_loginuid.so
+ session optional pam_console.so
++-session optional pam_ck_connector.so
+ session required pam_selinux.so open
+ session optional pam_keyinit.so force revoke
+ session required pam_namespace.so
diff --git a/x11/gdm/files/patch-gui_simple-chooser_gdm-host-chooser-widget.c b/x11/gdm/files/patch-gui_simple-chooser_gdm-host-chooser-widget.c
deleted file mode 100644
index b7ed323184f3..000000000000
--- a/x11/gdm/files/patch-gui_simple-chooser_gdm-host-chooser-widget.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- gui/simple-chooser/gdm-host-chooser-widget.c.orig 2010-01-13 14:29:00.000000000 +0000
-+++ gui/simple-chooser/gdm-host-chooser-widget.c 2010-01-17 13:04:14.000000000 +0000
-@@ -543,6 +543,8 @@ xdmcp_init (GdmHostChooserWidget *widget
- #ifdef ENABLE_IPV6
- widget->priv->socket_fd = socket (AF_INET6, SOCK_DGRAM, 0);
- if (widget->priv->socket_fd != -1) {
-+ int off = 0;
-+ setsockopt(widget->priv->socket_fd, IPPROTO_IPV6, IPV6_V6ONLY, (void *)&off, sizeof (off));
- widget->priv->have_ipv6 = TRUE;
- }
- #endif
diff --git a/x11/gdm/files/patch-libgdm_gdm-user-switching.c b/x11/gdm/files/patch-libgdm_gdm-user-switching.c
new file mode 100644
index 000000000000..cedffff73382
--- /dev/null
+++ b/x11/gdm/files/patch-libgdm_gdm-user-switching.c
@@ -0,0 +1,412 @@
+--- libgdm/gdm-user-switching.c.orig 2015-07-20 13:13:45 UTC
++++ libgdm/gdm-user-switching.c
+@@ -31,12 +31,25 @@
+ #include <glib-object.h>
+ #include <gio/gio.h>
+
++#ifdef WITH_SYSTEMD
+ #include <systemd/sd-login.h>
++#endif
+
+ #include "common/gdm-common.h"
+ #include "gdm-user-switching.h"
+ #include "gdm-client.h"
+
++#ifdef WITH_CONSOLE_KIT
++#define CK_NAME "org.freedesktop.ConsoleKit"
++#define CK_PATH "/org/freedesktop/ConsoleKit"
++#define CK_INTERFACE "org.freedesktop.ConsoleKit"
++
++#define CK_MANAGER_PATH "/org/freedesktop/ConsoleKit/Manager"
++#define CK_MANAGER_INTERFACE "org.freedesktop.ConsoleKit.Manager"
++#define CK_SEAT_INTERFACE "org.freedesktop.ConsoleKit.Seat"
++#define CK_SESSION_INTERFACE "org.freedesktop.ConsoleKit.Session"
++#endif
++
+ static gboolean
+ create_transient_display (GDBusConnection *connection,
+ GCancellable *cancellable,
+@@ -67,12 +80,304 @@ create_transient_display (GDBusConnectio
+ return TRUE;
+ }
+
++#ifdef WITH_CONSOLE_KIT
++
+ static gboolean
+-activate_session_id (GDBusConnection *connection,
+- GCancellable *cancellable,
+- const char *seat_id,
+- const char *session_id,
+- GError **error)
++get_current_session_id (GDBusConnection *connection,
++ char **session_id)
++{
++ GError *local_error = NULL;
++ GVariant *reply;
++
++ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ CK_MANAGER_PATH,
++ CK_MANAGER_INTERFACE,
++ "GetCurrentSession",
++ NULL, /* parameters */
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, &local_error);
++ if (reply == NULL) {
++ g_warning ("Unable to determine session: %s", local_error->message);
++ g_error_free (local_error);
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(o)", session_id);
++ g_variant_unref (reply);
++
++ return TRUE;
++}
++
++static gboolean
++get_seat_id_for_session (GDBusConnection *connection,
++ const char *session_id,
++ char **seat_id)
++{
++ GError *local_error = NULL;
++ GVariant *reply;
++
++ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ session_id,
++ CK_SESSION_INTERFACE,
++ "GetSeatId",
++ NULL, /* parameters */
++ G_VARIANT_TYPE ("(o)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, &local_error);
++ if (reply == NULL) {
++ g_warning ("Unable to determine seat: %s", local_error->message);
++ g_error_free (local_error);
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(o)", seat_id);
++ g_variant_unref (reply);
++
++ return TRUE;
++}
++
++static char *
++get_current_seat_id (GDBusConnection *connection)
++{
++ gboolean res;
++ char *session_id;
++ char *seat_id;
++
++ session_id = NULL;
++ seat_id = NULL;
++
++ res = get_current_session_id (connection, &session_id);
++ if (res) {
++ res = get_seat_id_for_session (connection, session_id, &seat_id);
++ }
++ g_free (session_id);
++
++ return seat_id;
++}
++
++static gboolean
++activate_session_id_for_ck (GDBusConnection *connection,
++ GCancellable *cancellable,
++ const char *seat_id,
++ const char *session_id,
++ GError **error)
++{
++ GVariant *reply;
++
++ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ seat_id,
++ CK_SEAT_INTERFACE,
++ "ActivateSession",
++ g_variant_new ("(o)", session_id),
++ NULL,
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, error);
++ if (reply == NULL) {
++ g_prefix_error (error, _("Unable to activate session: "));
++ return FALSE;
++ }
++
++ g_variant_unref (reply);
++
++ return TRUE;
++}
++
++static gboolean
++session_is_login_window (GDBusConnection *connection,
++ const char *session_id)
++{
++ GError *local_error = NULL;
++ GVariant *reply;
++ const char *value;
++ gboolean ret;
++
++ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ session_id,
++ CK_SESSION_INTERFACE,
++ "GetSessionType",
++ NULL,
++ G_VARIANT_TYPE ("(s)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, &local_error);
++ if (reply == NULL) {
++ g_warning ("Unable to determine session type: %s", local_error->message);
++ g_error_free (local_error);
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(&s)", &value);
++
++ if (value == NULL || value[0] == '\0' || strcmp (value, "LoginWindow") != 0) {
++ ret = FALSE;
++ } else {
++ ret = TRUE;
++ }
++
++ g_variant_unref (reply);
++
++ return ret;
++}
++
++static gboolean
++seat_can_activate_sessions (GDBusConnection *connection,
++ const char *seat_id)
++{
++ GError *local_error = NULL;
++ GVariant *reply;
++ gboolean ret;
++
++ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ seat_id,
++ CK_SEAT_INTERFACE,
++ "CanActivateSessions",
++ NULL,
++ G_VARIANT_TYPE ("(b)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, &local_error);
++ if (reply == NULL) {
++ g_warning ("Unable to determine if can activate sessions: %s", local_error->message);
++ g_error_free (local_error);
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(b)", &ret);
++ g_variant_unref (reply);
++
++ return ret;
++}
++
++static const char **
++seat_get_sessions (GDBusConnection *connection,
++ const char *seat_id)
++{
++ GError *local_error = NULL;
++ GVariant *reply;
++ const char **value;
++
++ reply = g_dbus_connection_call_sync (connection,
++ CK_NAME,
++ seat_id,
++ CK_SEAT_INTERFACE,
++ "GetSessions",
++ NULL,
++ G_VARIANT_TYPE ("(ao)"),
++ G_DBUS_CALL_FLAGS_NONE,
++ -1,
++ NULL, &local_error);
++ if (reply == NULL) {
++ g_warning ("Unable to list sessions: %s", local_error->message);
++ g_error_free (local_error);
++ return FALSE;
++ }
++
++ g_variant_get (reply, "(^ao)", &value);
++ g_variant_unref (reply);
++
++ return value;
++}
++
++static gboolean
++get_login_window_session_id_for_ck (GDBusConnection *connection,
++ const char *seat_id,
++ char **session_id)
++{
++ gboolean can_activate_sessions;
++ const char **sessions;
++ int i;
++
++ *session_id = NULL;
++ sessions = NULL;
++
++ g_debug ("checking if seat can activate sessions");
++
++ can_activate_sessions = seat_can_activate_sessions (connection, seat_id);
++ if (! can_activate_sessions) {
++ g_debug ("seat is unable to activate sessions");
++ return FALSE;
++ }
++
++ sessions = seat_get_sessions (connection, seat_id);
++ for (i = 0; sessions [i] != NULL; i++) {
++ const char *ssid;
++
++ ssid = sessions [i];
++
++ if (session_is_login_window (connection, ssid)) {
++ *session_id = g_strdup (ssid);
++ break;
++ }
++ }
++ g_free (sessions);
++
++ return TRUE;
++}
++
++static gboolean
++goto_login_session_for_ck (GDBusConnection *connection,
++ GCancellable *cancellable,
++ GError **error)
++{
++ gboolean ret;
++ gboolean res;
++ char *session_id;
++ char *seat_id;
++
++ ret = FALSE;
++
++ /* First look for any existing LoginWindow sessions on the seat.
++ If none are found, create a new one. */
++
++ seat_id = get_current_seat_id (connection);
++ if (seat_id == NULL || seat_id[0] == '\0') {
++ g_debug ("seat id is not set; can't switch sessions");
++ g_set_error (error, GDM_CLIENT_ERROR, 0, _("Could not identify the current session."));
++
++ return FALSE;
++ }
++
++ res = get_login_window_session_id_for_ck (connection, seat_id, &session_id);
++ if (! res) {
++ g_set_error (error, GDM_CLIENT_ERROR, 0, _("User unable to switch sessions."));
++ return FALSE;
++ }
++
++ if (session_id != NULL) {
++ res = activate_session_id_for_ck (connection, cancellable, seat_id, session_id, error);
++ if (res) {
++ ret = TRUE;
++ }
++ }
++
++ if (! ret && g_strcmp0 (seat_id, "/org/freedesktop/ConsoleKit/Seat1") == 0) {
++ res = create_transient_display (connection, cancellable, error);
++ if (res) {
++ ret = TRUE;
++ }
++ }
++
++ return ret;
++}
++#endif
++
++#ifdef WITH_SYSTEMD
++
++static gboolean
++activate_session_id_for_systemd (GDBusConnection *connection,
++ GCancellable *cancellable,
++ const char *seat_id,
++ const char *session_id,
++ GError **error)
+ {
+ GVariant *reply;
+
+@@ -97,8 +402,8 @@ activate_session_id (GDBusConnection *c
+ }
+
+ static gboolean
+-get_login_window_session_id (const char *seat_id,
+- char **session_id)
++get_login_window_session_id_for_systemd (const char *seat_id,
++ char **session_id)
+ {
+ gboolean ret;
+ int res, i;
+@@ -182,9 +487,9 @@ out:
+ }
+
+ static gboolean
+-goto_login_session (GDBusConnection *connection,
+- GCancellable *cancellable,
+- GError **error)
++goto_login_session_for_systemd (GDBusConnection *connection,
++ GCancellable *cancellable,
++ GError **error)
+ {
+ gboolean ret;
+ int res;
+@@ -238,9 +543,9 @@ goto_login_session (GDBusConnection *co
+ return FALSE;
+ }
+
+- res = get_login_window_session_id (seat_id, &session_id);
++ res = get_login_window_session_id_for_systemd (seat_id, &session_id);
+ if (res && session_id != NULL) {
+- res = activate_session_id (connection, cancellable, seat_id, session_id, error);
++ res = activate_session_id_for_systemd (connection, cancellable, seat_id, session_id, error);
+
+ if (res) {
+ ret = TRUE;
+@@ -259,10 +564,11 @@ goto_login_session (GDBusConnection *co
+
+ return ret;
+ }
++#endif
+
+ gboolean
+ gdm_goto_login_session_sync (GCancellable *cancellable,
+- GError **error)
++ GError **error)
+ {
+ GDBusConnection *connection;
+ gboolean retval;
+@@ -271,8 +577,23 @@ gdm_goto_login_session_sync (GCancellabl
+ if (!connection)
+ return FALSE;
+
+- retval = goto_login_session (connection, cancellable, error);
++#ifdef WITH_SYSTEMD
++ if (LOGIND_RUNNING()) {
++ retval = goto_login_session_for_systemd (connection,
++ cancellable,
++ error);
++
++ g_object_unref (connection);
++ return retval;
++ }
++#endif
++
++#ifdef WITH_CONSOLE_KIT
++ retval = goto_login_session_for_ck (connection, cancellable, error);
+
+ g_object_unref (connection);
+ return retval;
++#else
++ return FALSE;
++#endif
+ }
diff --git a/x11/gdm/pkg-plist b/x11/gdm/pkg-plist
index 4c85d41bf4a1..6c694fc15cf1 100644
--- a/x11/gdm/pkg-plist
+++ b/x11/gdm/pkg-plist
@@ -7,8 +7,8 @@ etc/dbus-1/system.d/gdm.conf
@sample %%ETCDIR%%/PreSession/Default.sample
%%ETCDIR%%/Xsession
@sample %%ETCDIR%%/custom.conf.sample
-%%ETCDIR%%/home/.pulse/client.conf
-%%ETCDIR%%/locale.conf
+@sample %%ETCDIR%%/home/.pulse/client.conf.sample
+@sample %%ETCDIR%%/locale.conf.sample
etc/pam.d/gdm-autologin
etc/pam.d/gdm-launch-environment
etc/pam.d/gdm-password
@@ -31,13 +31,12 @@ share/dconf/profile/gdm
%%DATADIR%%/gdb-cmd
%%DATADIR%%/gdm.schemas
%%DATADIR%%/greeter-dconf-defaults
-%%DATADIR%%/greeter/applications/gnome-shell-wayland.desktop
-%%DATADIR%%/greeter/applications/gnome-shell.desktop
%%DATADIR%%/greeter/applications/mime-dummy-handler.desktop
%%DATADIR%%/greeter/applications/mimeapps.list
%%DATADIR%%/greeter/autostart/orca-autostart.desktop
%%DATADIR%%/locale.alias
share/gir-1.0/Gdm-1.0.gir
+share/gnome-session/sessions/gnome-login.session
share/help/C/gdm/index.docbook
share/help/C/gdm/legal.xml
share/help/ca/gdm/index.docbook
@@ -68,6 +67,8 @@ share/help/oc/gdm/index.docbook
share/help/oc/gdm/legal.xml
share/help/pt_BR/gdm/index.docbook
share/help/pt_BR/gdm/legal.xml
+share/help/ro/gdm/index.docbook
+share/help/ro/gdm/legal.xml
share/help/ru/gdm/index.docbook
share/help/ru/gdm/legal.xml
share/help/sl/gdm/index.docbook
@@ -76,6 +77,8 @@ share/help/sv/gdm/index.docbook
share/help/sv/gdm/legal.xml
share/help/te/gdm/index.docbook
share/help/te/gdm/legal.xml
+share/help/tr/gdm/index.docbook
+share/help/tr/gdm/legal.xml
share/help/uk/gdm/index.docbook
share/help/uk/gdm/legal.xml
share/help/zh_CN/gdm/index.docbook
@@ -134,6 +137,7 @@ share/locale/is/LC_MESSAGES/gdm.mo
share/locale/it/LC_MESSAGES/gdm.mo
share/locale/ja/LC_MESSAGES/gdm.mo
share/locale/ka/LC_MESSAGES/gdm.mo
+share/locale/kab/LC_MESSAGES/gdm.mo
share/locale/kk/LC_MESSAGES/gdm.mo
share/locale/km/LC_MESSAGES/gdm.mo
share/locale/kn/LC_MESSAGES/gdm.mo
@@ -195,13 +199,13 @@ share/pixmaps/gdm-xnest.png
share/pixmaps/gdm.png
share/pixmaps/nobody.png
share/pixmaps/nohost.png
-@exec mkdir -p %D/share/xsessions
-@exec dconf update
-@unexec dconf update
+@postexec mkdir -p %D/share/xsessions
+@postexec dconf update
+@postunexec dconf update
@mode 1775
@dir etc/gdm/home
@mode
-@unexec rm -rf %D/etc/gdm/home/.gconf*
+@postunexec rm -rf %D/etc/gdm/home/.gconf*
@dir %%ETCDIR%%/Sessions
@dir %%ETCDIR%%/home/.local/share/applications
@dir etc/dm
@@ -211,4 +215,4 @@ share/pixmaps/nohost.png
@dir /var/run/gdm/greeter
@dir /var/run/gdm/
@dir /var/log/gdm/
-@unexec rm -fr /var/gdm
+@postunexec rm -fr /var/gdm
diff --git a/x11/gnome-desktop-reference/Makefile b/x11/gnome-desktop-reference/Makefile
deleted file mode 100644
index eadb3d80b013..000000000000
--- a/x11/gnome-desktop-reference/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# Created by: Jean-Yves Lefort <jylefort@FreeBSD.org>
-# $FreeBSD$
-
-PORTREVISION= 2
-
-REFERENCE_SRC= ${WRKSRC}/docs/reference/gnome-desktop3
-
-.include "${.CURDIR}/../../devel/glib20-reference/bsd.gnome-reference.mk"
diff --git a/x11/gnome-desktop-reference/pkg-descr b/x11/gnome-desktop-reference/pkg-descr
deleted file mode 100644
index d5ada3acbb15..000000000000
--- a/x11/gnome-desktop-reference/pkg-descr
+++ /dev/null
@@ -1,3 +0,0 @@
-This port contains the programming reference for x11/gnome-desktop.
-
-WWW: https://www.gnome.org/
diff --git a/x11/gnome-desktop/Makefile b/x11/gnome-desktop/Makefile
index f317b2e72289..3ed8017684e6 100644
--- a/x11/gnome-desktop/Makefile
+++ b/x11/gnome-desktop/Makefile
@@ -2,8 +2,7 @@
# $FreeBSD$
PORTNAME= gnome-desktop
-PORTVERSION= 3.18.2
-PORTREVISION= 1
+PORTVERSION= 3.28.2
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome3
@@ -16,27 +15,25 @@ LICENSE_COMB= multi
LICENSE_FILE_GPLv2+ = ${WRKSRC}/COPYING
LICENSE_FILE_LGPL20+ = ${WRKSRC}/COPYING.LIB
-USES= tar:xz
-
-.if !defined(REFERENCE_PORT)
PORTSCOUT= limitw:1,even
BUILD_DEPENDS= iso-codes>=0:misc/iso-codes \
gsettings-desktop-schemas>=0:devel/gsettings-desktop-schemas \
xkeyboard-config>=0:x11/xkeyboard-config \
- libxkbfile>=0:x11/libxkbfile \
itstool:textproc/itstool
RUN_DEPENDS= iso-codes>=0:misc/iso-codes \
gsettings-desktop-schemas>=0:devel/gsettings-desktop-schemas \
- xkeyboard-config>=0:x11/xkeyboard-config \
- libxkbfile>=0:x11/libxkbfile
+ cantarell-fonts>=0:x11-fonts/cantarell-fonts \
+ xkeyboard-config>=0:x11/xkeyboard-config
-USES+= bison gettext gmake gnome libtool localbase pathfix pkgconfig python:3.4+
-USE_GNOME= gtk30 intlhack introspection:build referencehack
-USE_XORG= x11 xrandr xext
+USES= bison gettext gmake gnome libtool localbase pathfix \
+ pkgconfig python:3.4+ tar:xz
+USE_GNOME= cairo gdkpixbuf2 gtk30 intltool introspection:build
+USE_XORG= x11
USE_LDCONFIG= yes
GNU_CONFIGURE= yes
-CONFIGURE_ARGS= --with-gnome-distributor="FreeBSD GNOME Project"
+CONFIGURE_ARGS= --with-gnome-distributor="FreeBSD GNOME Project" \
+ --disable-udev
INSTALL_TARGET= install-strip
post-patch:
@@ -46,5 +43,3 @@ post-patch:
${WRKSRC}/desktop-docs/lgpl/Makefile.in
.include <bsd.port.mk>
-
-.endif
diff --git a/x11/gnome-desktop/distinfo b/x11/gnome-desktop/distinfo
index fb2cff555234..8f9da2dfff79 100644
--- a/x11/gnome-desktop/distinfo
+++ b/x11/gnome-desktop/distinfo
@@ -1,2 +1,3 @@
-SHA256 (gnome3/gnome-desktop-3.18.2.tar.xz) = ddd46d022de137543a71f50c7392b32f9b98d5d3f2b53040b35f5802de2e7b56
-SIZE (gnome3/gnome-desktop-3.18.2.tar.xz) = 1091568
+TIMESTAMP = 1525954310
+SHA256 (gnome3/gnome-desktop-3.28.2.tar.xz) = 605087bff17c61bc167ccb5a61ed4d06eab922fcce384576ed2a3577214c8330
+SIZE (gnome3/gnome-desktop-3.28.2.tar.xz) = 1077556
diff --git a/x11/gnome-desktop/files/patch-libgnome-desktop_gnome-languages.c b/x11/gnome-desktop/files/patch-libgnome-desktop_gnome-languages.c
deleted file mode 100644
index 2892239bb633..000000000000
--- a/x11/gnome-desktop/files/patch-libgnome-desktop_gnome-languages.c
+++ /dev/null
@@ -1,11 +0,0 @@
---- libgnome-desktop/gnome-languages.c.orig 2016-01-08 00:52:40.415603000 +0100
-+++ libgnome-desktop/gnome-languages.c 2016-01-08 01:30:53.511431000 +0100
-@@ -229,7 +231,7 @@
- {
- char *name;
-
-- g_assert (language[0] != 0);
-+ g_assert (language == NULL || language[0] != 0);
- g_assert (territory == NULL || territory[0] != 0);
- g_assert (codeset == NULL || codeset[0] != 0);
- g_assert (modifier == NULL || modifier[0] != 0);
diff --git a/x11/gnome-desktop/pkg-plist b/x11/gnome-desktop/pkg-plist
index 12df042647f3..6cbaf46d6015 100644
--- a/x11/gnome-desktop/pkg-plist
+++ b/x11/gnome-desktop/pkg-plist
@@ -11,8 +11,8 @@ include/gnome-desktop-3.0/libgnome-desktop/gnome-wall-clock.h
include/gnome-desktop-3.0/libgnome-desktop/gnome-xkb-info.h
lib/girepository-1.0/GnomeDesktop-3.0.typelib
lib/libgnome-desktop-3.so
-lib/libgnome-desktop-3.so.12
-lib/libgnome-desktop-3.so.12.0.0
+lib/libgnome-desktop-3.so.17
+lib/libgnome-desktop-3.so.17.0.0
libdata/pkgconfig/gnome-desktop-3.0.pc
libexec/gnome-rr-debug
share/gir-1.0/GnomeDesktop-3.0.gir
@@ -32,7 +32,6 @@ share/gtk-doc/html/gnome-desktop3/gnome-desktop3.devhelp2
share/gtk-doc/html/gnome-desktop3/home.png
share/gtk-doc/html/gnome-desktop3/idle-monitor.html
share/gtk-doc/html/gnome-desktop3/index.html
-share/gtk-doc/html/gnome-desktop3/index.sgml
share/gtk-doc/html/gnome-desktop3/intro.html
share/gtk-doc/html/gnome-desktop3/languages.html
share/gtk-doc/html/gnome-desktop3/left-insensitive.png
@@ -87,7 +86,6 @@ share/help/oc/gpl/index.docbook
share/help/oc/lgpl/index.docbook
share/help/pa/gpl/index.docbook
share/help/pa/lgpl/index.docbook
-share/help/pl/fdl/index.docbook
share/help/pt_BR/fdl/index.docbook
share/help/pt_BR/gpl/index.docbook
share/help/pt_BR/lgpl/index.docbook
@@ -108,7 +106,6 @@ share/help/vi/lgpl/index.docbook
share/help/zh_CN/fdl/index.docbook
share/help/zh_CN/gpl/index.docbook
share/help/zh_CN/lgpl/index.docbook
-share/libgnome-desktop-3.0/pnp.ids
share/locale/af/LC_MESSAGES/gnome-desktop-3.0.mo
share/locale/am/LC_MESSAGES/gnome-desktop-3.0.mo
share/locale/an/LC_MESSAGES/gnome-desktop-3.0.mo
diff --git a/x11/gnome-session/Makefile b/x11/gnome-session/Makefile
index 9e0c7d8d97ce..5d9952cca701 100644
--- a/x11/gnome-session/Makefile
+++ b/x11/gnome-session/Makefile
@@ -2,8 +2,7 @@
# $FreeBSD$
PORTNAME= gnome-session
-PORTVERSION= 3.18.1.2
-PORTREVISION= 2
+PORTVERSION= 3.28.1
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome3
@@ -14,24 +13,23 @@ COMMENT= Session component for the GNOME 3 desktop
LICENSE= GPLv2+
LICENSE_FILE= ${WRKSRC}/COPYING
-LIB_DEPENDS= libdbus-glib-1.so:devel/dbus-glib \
- libjson-glib-1.0.so:devel/json-glib \
- libupower-glib.so:sysutils/upower
+BUILD_DEPENDS= xmlto:textproc/xmlto
+LIB_DEPENDS= libjson-glib-1.0.so:devel/json-glib \
+ libepoxy.so:graphics/libepoxy
RUN_DEPENDS= ${LOCALBASE}/sbin/console-kit-daemon:sysutils/consolekit2 \
- ${LOCALBASE}/bin/xdpyinfo:x11/xdpyinfo
+ dbus-daemon:devel/dbus
PORTSCOUT= limitw:1,even
-USES= gettext gmake gnome localbase:ldflags pathfix \
- pkgconfig tar:xz
-USE_GNOME= gnomedesktop3 gtk30 intlhack intlhack libxslt:build
-USE_XORG= ice sm xau xext xtst xrender xtrans xcomposite
-USE_GL= gl
+USES= gettext gnome localbase:ldflags meson pkgconfig python:3.6+,build tar:xz
+USE_GNOME= gnomedesktop3 gtk30
+USE_XORG= ice sm x11 xcomposite xtrans
+USE_GL= egl gl glesv2
INSTALLS_ICONS= yes
-GNU_CONFIGURE= yes
-CONFIGURE_ARGS= --disable-docbook-docs \
- --enable-consolekit \
- --enable-gconf=no
+MESON_ARGS= -Dsystemd=false \
+ -Dsystemd_journal=false \
+ -Dconsolekit=true
+BINARY_ALIAS= python3=${PYTHON_VERSION}
GLIB_SCHEMAS= org.gnome.SessionManager.gschema.xml
diff --git a/x11/gnome-session/distinfo b/x11/gnome-session/distinfo
index 480f61145a78..03ee0d36e289 100644
--- a/x11/gnome-session/distinfo
+++ b/x11/gnome-session/distinfo
@@ -1,2 +1,3 @@
-SHA256 (gnome3/gnome-session-3.18.1.2.tar.xz) = b37d823d57ff2e3057401a426279954699cfe1e44e59a4cbdd941687ff928a45
-SIZE (gnome3/gnome-session-3.18.1.2.tar.xz) = 758552
+TIMESTAMP = 1524855068
+SHA256 (gnome3/gnome-session-3.28.1.tar.xz) = b893f75c8d34dbdbbc5c56429a17b59136ac7402e12f384da856dcfc725cd592
+SIZE (gnome3/gnome-session-3.28.1.tar.xz) = 480196
diff --git a/x11/gnome-session/pkg-plist b/x11/gnome-session/pkg-plist
index 67125a764943..e5b818f8e586 100644
--- a/x11/gnome-session/pkg-plist
+++ b/x11/gnome-session/pkg-plist
@@ -1,29 +1,22 @@
bin/gnome-session
+bin/gnome-session-custom-session
bin/gnome-session-inhibit
bin/gnome-session-quit
libexec/gnome-session-binary
libexec/gnome-session-check-accelerated
-libexec/gnome-session-check-accelerated-helper
+libexec/gnome-session-check-accelerated-gl-helper
+libexec/gnome-session-check-accelerated-gles-helper
libexec/gnome-session-failed
-man/man1/gnome-session.1.gz
man/man1/gnome-session-inhibit.1.gz
man/man1/gnome-session-quit.1.gz
+man/man1/gnome-session.1.gz
share/GConf/gsettings/gnome-session.convert
%%DATADIR%%/hardware-compatibility
%%DATADIR%%/sessions/gnome-dummy.session
-%%DATADIR%%/sessions/gnome-wayland.session
-%%DATADIR%%/session-properties.ui
%%DATADIR%%/sessions/gnome.session
-share/icons/hicolor/16x16/apps/session-properties.png
-share/icons/hicolor/22x22/apps/session-properties.png
-share/icons/hicolor/24x24/apps/session-properties.png
-share/icons/hicolor/32x32/apps/session-properties.png
-share/icons/hicolor/48x48/apps/session-properties.png
-share/icons/hicolor/scalable/apps/session-properties.svg
-share/icons/hicolor/symbolic/apps/session-properties-symbolic.svg
share/locale/af/LC_MESSAGES/gnome-session-3.0.mo
-share/locale/an/LC_MESSAGES/gnome-session-3.0.mo
share/locale/am/LC_MESSAGES/gnome-session-3.0.mo
+share/locale/an/LC_MESSAGES/gnome-session-3.0.mo
share/locale/ar/LC_MESSAGES/gnome-session-3.0.mo
share/locale/as/LC_MESSAGES/gnome-session-3.0.mo
share/locale/ast/LC_MESSAGES/gnome-session-3.0.mo
@@ -129,5 +122,6 @@ share/locale/zh_CN/LC_MESSAGES/gnome-session-3.0.mo
share/locale/zh_HK/LC_MESSAGES/gnome-session-3.0.mo
share/locale/zh_TW/LC_MESSAGES/gnome-session-3.0.mo
share/locale/zu/LC_MESSAGES/gnome-session-3.0.mo
-share/wayland-sessions/gnome-wayland.desktop
+share/wayland-sessions/gnome.desktop
+share/xsessions/gnome-xorg.desktop
share/xsessions/gnome.desktop
diff --git a/x11/gnome-shell-extensions/Makefile b/x11/gnome-shell-extensions/Makefile
index 2b8e60f6c7bb..ebca33a0df6c 100644
--- a/x11/gnome-shell-extensions/Makefile
+++ b/x11/gnome-shell-extensions/Makefile
@@ -2,7 +2,7 @@
# $FreeBSD$
PORTNAME= gnome-shell-extensions
-PORTVERSION= 3.18.4
+PORTVERSION= 3.28.1
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome3
@@ -10,16 +10,21 @@ DIST_SUBDIR= gnome3
MAINTAINER= gnome@FreeBSD.org
COMMENT= GNOME desktop shell extensions
-LIB_DEPENDS= libgtop-2.0.so:devel/libgtop
-RUN_DEPENDS= gnome-shell>=3.12.0:x11/gnome-shell
+LICENSE= GPLv2
+LICENSE_FILE= ${WRKSRC}/COPYING
+
+BUILD_DEPENDS= sassc:textproc/sassc
+LIB_DEPENDS= libgjs.so:lang/gjs
+RUN_DEPENDS= gnome-shell>=3.28.0:x11/gnome-shell
PORTSCOUT= limitw:1,even
-USES= gettext gmake gnome pathfix pkgconfig tar:xz
+NO_ARCH= yes
+USES= gettext gnome meson pkgconfig tar:xz
USE_GNOME= glib20 gnomedesktop3 intlhack
USE_LDCONFIG= yes
-GNU_CONFIGURE= yes
-CONFIGURE_ARGS= --enable-extensions=all
+MESON_ARGS= -Dextension_set=all \
+ -Dclassic_mode=true
GLIB_SCHEMAS= org.gnome.shell.extensions.auto-move-windows.gschema.xml \
org.gnome.shell.extensions.classic-overrides.gschema.xml \
diff --git a/x11/gnome-shell-extensions/distinfo b/x11/gnome-shell-extensions/distinfo
index 21ae0e652ee6..551336673f0c 100644
--- a/x11/gnome-shell-extensions/distinfo
+++ b/x11/gnome-shell-extensions/distinfo
@@ -1,2 +1,3 @@
-SHA256 (gnome3/gnome-shell-extensions-3.18.4.tar.xz) = 8ae470f894aad914a56d447e3b07dc99e2f36c30ef3ec386f6f03f619599b73a
-SIZE (gnome3/gnome-shell-extensions-3.18.4.tar.xz) = 234108
+TIMESTAMP = 1525374861
+SHA256 (gnome3/gnome-shell-extensions-3.28.1.tar.xz) = e9c602338b529c8282e7d13e075703028ea384a1d946f3e8ce760e6c5b469058
+SIZE (gnome3/gnome-shell-extensions-3.28.1.tar.xz) = 199180
diff --git a/x11/gnome-shell-extensions/pkg-descr b/x11/gnome-shell-extensions/pkg-descr
index 0d40cd5f2234..9103d25eadb6 100644
--- a/x11/gnome-shell-extensions/pkg-descr
+++ b/x11/gnome-shell-extensions/pkg-descr
@@ -1,4 +1,4 @@
-A set of basic extensions for gnome-shell.
+A set of basic extensions for gnome-shell.
More extensions are available on https://extensions.gnome.org/
In future release this will be more intergrated.
diff --git a/x11/gnome-shell-extensions/pkg-plist b/x11/gnome-shell-extensions/pkg-plist
index 88fa907a6039..057fe92c24f2 100644
--- a/x11/gnome-shell-extensions/pkg-plist
+++ b/x11/gnome-shell-extensions/pkg-plist
@@ -71,6 +71,7 @@ share/locale/af/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/an/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/ar/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/as/LC_MESSAGES/gnome-shell-extensions.mo
+share/locale/be/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/bg/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/bn_IN/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/bs/LC_MESSAGES/gnome-shell-extensions.mo
@@ -89,10 +90,12 @@ share/locale/fa/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/fi/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/fr/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/fur/LC_MESSAGES/gnome-shell-extensions.mo
+share/locale/gd/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/gl/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/gu/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/he/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/hi/LC_MESSAGES/gnome-shell-extensions.mo
+share/locale/hr/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/hu/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/id/LC_MESSAGES/gnome-shell-extensions.mo
share/locale/is/LC_MESSAGES/gnome-shell-extensions.mo
diff --git a/x11/gnome-shell/Makefile b/x11/gnome-shell/Makefile
index 71c3838b49cd..2cf835e97563 100644
--- a/x11/gnome-shell/Makefile
+++ b/x11/gnome-shell/Makefile
@@ -2,8 +2,7 @@
# $FreeBSD$
PORTNAME= gnome-shell
-PORTVERSION= 3.18.5
-PORTREVISION= 10
+PORTVERSION= 3.28.2
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome3
@@ -11,63 +10,63 @@ DIST_SUBDIR= gnome3
MAINTAINER= gnome@FreeBSD.org
COMMENT= Next generation GNOME desktop shell
-LICENSE= GPLv2+
+LICENSE= GPLv2
LICENSE_FILE= ${WRKSRC}/COPYING
-BUILD_DEPENDS= ca_root_nss>=0:security/ca_root_nss \
- nss>=0:security/nss \
+BUILD_DEPENDS= docbook-xsl>=0:textproc/docbook-xsl \
+ sassc:textproc/sassc \
gnome-control-center:sysutils/gnome-control-center
LIB_DEPENDS= libstartup-notification-1.so:x11/startup-notification \
- libcaribou.so:accessibility/caribou \
- libmutter.so:x11-wm/mutter \
+ libdrm.so:graphics/libdrm \
+ libmutter-2.so:x11-wm/mutter \
libatk-bridge-2.0.so:accessibility/at-spi2-atk \
- libnspr4.so:devel/nspr \
libsoup-2.4.so:devel/libsoup \
libjson-glib-1.0.so:devel/json-glib \
libsecret-1.so:security/libsecret \
- libgcr-3.so:security/gcr \
- libtelepathy-glib.so:net-im/telepathy-glib \
- libibus-1.0.so:textproc/ibus \
+ libpolkit-agent-1.so:sysutils/polkit \
+ libp11-kit.so:security/p11-kit \
libical.so:devel/libical \
- libmozjs-24.so:lang/spidermonkey24 \
+ libgcr-3.so:security/gcr \
libicuuc.so:devel/icu \
libpulse.so:audio/pulseaudio \
libcroco-0.6.so:textproc/libcroco \
- libdbus-glib-1.so:devel/dbus-glib \
libcanberra.so:audio/libcanberra \
libcanberra-gtk3.so:audio/libcanberra-gtk3 \
libp11-kit.so:security/p11-kit \
- libpolkit-gobject-1.so:sysutils/polkit \
- libcogl.so:graphics/cogl \
- libclutter-1.0.so:graphics/clutter \
libgjs.so:lang/gjs
-RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}dbus>=0:devel/py-dbus@${PY_FLAVOR} \
- nss>=0:security/nss \
- gnome-control-center:sysutils/gnome-control-center \
- ca_root_nss>=0:security/ca_root_nss \
- gkbd-keyboard-display:x11/libgnomekbd
+RUN_DEPENDS= gnome-control-center:sysutils/gnome-control-center
PORTSCOUT= limitw:1,even
-USES= compiler:c11 cpe gettext gmake gnome libtool localbase \
- pathfix pkgconfig python:3.4+ sqlite tar:xz webplugin:native
-USE_GNOME= cairo evolutiondataserver3 gdkpixbuf2 gtk30 intltool \
- introspection libxml2
-USE_XORG= x11 xcomposite xdamage xext xfixes xi xrandr
-USE_GL= egl
+USES= compiler:c11 cpe gettext gl gnome libtool localbase meson \
+ pathfix perl5 pkgconfig python:3.4+ shebangfix tar:xz webplugin:native
+USE_GNOME= cairo evolutiondataserver3 gdkpixbuf2 introspection \
+ libxslt:build libxml2
+USE_XORG= x11 xcomposite xdamage xext xfixes xi xrandr xtst
+USE_GL= egl gbm
USE_GSTREAMER1= yes
-GNU_CONFIGURE= yes
+USE_PERL5= build
USE_LDCONFIG= yes
+SHEBANG_FILES= src/gnome-shell-perf-tool.in \
+ src/gnome-shell-extension-tool.in
+
WEBPLUGIN_NAME= libgnome-shell-browser-plugin.so
WEBPLUGIN_DIR= ${PREFIX}/lib/mozilla/plugins/
WEBPLUGIN_FILES=libgnome-shell-browser-plugin.so
-INSTALL_TARGET= install-strip
+
+MESON_ARGS= -Dsystemd=false \
+ -Dnetworkmanager=false
CPE_VENDOR= gnome
GLIB_SCHEMAS= org.gnome.shell.gschema.xml
post-patch:
+ @${REINPLACE_CMD} -e 's|python3|${PYTHON_VERSION}|g' \
+ ${WRKSRC}/meson.build
@${REINPLACE_CMD} -e 's|applications.menu|gnome-applications.menu|g' \
${WRKSRC}/src/shell-app-system.c
+pre-build:
+ @cd ${BUILD_WRKSRC} && ninja src/st/st-scroll-view-fade-generated.c
+
.include <bsd.port.mk>
diff --git a/x11/gnome-shell/distinfo b/x11/gnome-shell/distinfo
index 8470830495c9..82138dfaa693 100644
--- a/x11/gnome-shell/distinfo
+++ b/x11/gnome-shell/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1493586851
-SHA256 (gnome3/gnome-shell-3.18.5.tar.xz) = 6fc9cd8b43b1ca0669e1c5a9de092a67eea648e38585f0cdb960f08a16c6cb20
-SIZE (gnome3/gnome-shell-3.18.5.tar.xz) = 1591860
+TIMESTAMP = 1525955404
+SHA256 (gnome3/gnome-shell-3.28.2.tar.xz) = 27e690c0c4bb0faac2892b9772d3160aa3c6b09523a873b1c2b63c21634236ad
+SIZE (gnome3/gnome-shell-3.28.2.tar.xz) = 1432208
diff --git a/x11/gnome-shell/files/patch-js_gdm_loginDialog.js b/x11/gnome-shell/files/patch-js_gdm_loginDialog.js
deleted file mode 100644
index 826af5f8b034..000000000000
--- a/x11/gnome-shell/files/patch-js_gdm_loginDialog.js
+++ /dev/null
@@ -1,23 +0,0 @@
---- js/gdm/loginDialog.js.orig 2012-03-24 21:19:24.000000000 -0500
-+++ js/gdm/loginDialog.js 2012-03-24 21:21:23.000000000 -0500
-@@ -301,11 +301,17 @@
- this.actor.connect('key-focus-in', Lang.bind(this, this._moveFocusToItems));
- },
-
-- _moveFocusToItems: function() {
-- let hasItems = Object.keys(this._items).length > 0;
-+ _hasItems: function() {
-+ for (let userName in this._items) {
-+ return true;
-+ }
-+ return false;
-+ },
-
-- if (!hasItems)
-+ _moveFocusToItems: function() {
-+ if (!this._hasItems()) {
- return;
-+ }
-
- if (global.stage.get_key_focus() != this.actor)
- return;
diff --git a/x11/gnome-shell/files/patch-js_misc_loginManager.js b/x11/gnome-shell/files/patch-js_misc_loginManager.js
index 37aec6ba827a..f4900004eebb 100644
--- a/x11/gnome-shell/files/patch-js_misc_loginManager.js
+++ b/x11/gnome-shell/files/patch-js_misc_loginManager.js
@@ -1,6 +1,30 @@
---- js/misc/loginManager.js.orig 2014-10-13 22:57:05.000000000 +0200
-+++ js/misc/loginManager.js 2014-10-23 19:53:12.854065483 +0200
-@@ -46,6 +46,32 @@
+$OpenBSD: patch-js_misc_loginManager_js,v 1.4 2017/11/04 16:44:50 jasper Exp $
+
+REVERT:
+From ddea54a5398c123a4711243e55811c8ba26f8b85 Mon Sep 17 00:00:00 2001
+From: Victor Toso <victortoso@redhat.com>
+Date: Thu, 12 May 2016 09:25:49 +0200
+Subject: ScreenShield: set LockedHint property from systemd
+
+REVERT:
+From a244c1e987502e359c45c0a9bc0012b5bc635553 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Florian=20M=C3=BCllner?= <fmuellner@gnome.org>
+Date: Thu, 24 Apr 2014 17:55:56 +0200
+Subject: loginManager: Kill ConsoleKit support
+
+
+--- js/misc/loginManager.js.orig 2018-04-05 22:23:32.831383000 +0200
++++ js/misc/loginManager.js 2018-04-05 22:30:34.647201000 +0200
+@@ -40,15 +40,38 @@ const SystemdLoginSessionIface = '<node> \
+ <signal name="Lock" /> \
+ <signal name="Unlock" /> \
+ <property name="Active" type="b" access="read" /> \
+-<method name="SetLockedHint"> \
+- <arg type="b" direction="in"/> \
+-</method> \
+ </interface> \
+ </node>';
+
const SystemdLoginManager = Gio.DBusProxy.makeProxyWrapper(SystemdLoginManagerIface);
const SystemdLoginSession = Gio.DBusProxy.makeProxyWrapper(SystemdLoginSessionIface);
@@ -33,7 +57,7 @@
function haveSystemd() {
return GLib.access("/run/systemd/seats", 0) >= 0;
}
-@@ -75,7 +101,7 @@
+@@ -78,7 +101,7 @@ function canLock() {
-1, null);
let version = result.deep_unpack()[0].deep_unpack();
@@ -42,7 +66,7 @@
} catch(e) {
return false;
}
-@@ -93,7 +119,7 @@
+@@ -96,7 +119,7 @@ function getLoginManager() {
if (haveSystemd())
_loginManager = new LoginManagerSystemd();
else
@@ -51,35 +75,35 @@
}
return _loginManager;
-@@ -110,6 +136,9 @@
- Lang.bind(this, this._prepareForSleep));
+@@ -113,6 +136,9 @@ var LoginManagerSystemd = new Lang.Class({
+ this._prepareForSleep.bind(this));
},
+ // Having this function is a bit of a hack since the Systemd and ConsoleKit
+ // session objects have different interfaces - but in both cases there are
+ // Lock/Unlock signals, and that's all we count upon at the moment.
- getCurrentSessionProxy: function(callback) {
+ getCurrentSessionProxy(callback) {
if (this._currentSession) {
callback (this._currentSession);
-@@ -177,13 +206,35 @@
+@@ -188,13 +214,35 @@ var LoginManagerSystemd = new Lang.Class({
});
Signals.addSignalMethods(LoginManagerSystemd.prototype);
--const LoginManagerDummy = new Lang.Class({
+-var LoginManagerDummy = new Lang.Class({
- Name: 'LoginManagerDummy',
+const LoginManagerConsoleKit = new Lang.Class({
+ Name: 'LoginManagerConsoleKit',
-+
+
+ _init: function() {
+ this._proxy = new ConsoleKitManager(Gio.DBus.system,
+ 'org.freedesktop.ConsoleKit',
+ '/org/freedesktop/ConsoleKit/Manager');
+ },
-
++
+ // Having this function is a bit of a hack since the Systemd and ConsoleKit
+ // session objects have different interfaces - but in both cases there are
+ // Lock/Unlock signals, and that's all we count upon at the moment.
- getCurrentSessionProxy: function(callback) {
+ getCurrentSessionProxy(callback) {
- // we could return a DummySession object that fakes whatever callers
- // expect (at the time of writing: connect() and connectSignal()
- // methods), but just never calling the callback should be safer
@@ -101,8 +125,8 @@
+ }));
},
- canSuspend: function(asyncCallback) {
-@@ -203,4 +254,4 @@
+ canSuspend(asyncCallback) {
+@@ -214,4 +262,4 @@ var LoginManagerDummy = new Lang.Class({
callback(null);
}
});
diff --git a/x11/gnome-shell/files/patch-js_ui_screenShield.js b/x11/gnome-shell/files/patch-js_ui_screenShield.js
new file mode 100644
index 000000000000..7c05eacea297
--- /dev/null
+++ b/x11/gnome-shell/files/patch-js_ui_screenShield.js
@@ -0,0 +1,21 @@
+$OpenBSD: patch-js_ui_screenShield_js,v 1.3 2017/11/04 16:44:50 jasper Exp $
+
+REVERT:
+From ddea54a5398c123a4711243e55811c8ba26f8b85 Mon Sep 17 00:00:00 2001
+From: Victor Toso <victortoso@redhat.com>
+Date: Thu, 12 May 2016 09:25:49 +0200
+Subject: ScreenShield: set LockedHint property from systemd
+
+Index: js/ui/screenShield.js
+--- js/ui/screenShield.js.orig
++++ js/ui/screenShield.js
+@@ -582,9 +582,6 @@ var ScreenShield = new Lang.Class({
+ if (prevIsActive != this._isActive)
+ this.emit('active-changed');
+
+- if (this._loginSession)
+- this._loginSession.SetLockedHintRemote(active);
+-
+ this._syncInhibitor();
+ },
+
diff --git a/x11/gnome-shell/files/patch-js_ui_sessionMode.js b/x11/gnome-shell/files/patch-js_ui_sessionMode.js
deleted file mode 100644
index 011ddcffd0c2..000000000000
--- a/x11/gnome-shell/files/patch-js_ui_sessionMode.js
+++ /dev/null
@@ -1,29 +0,0 @@
---- js/ui/sessionMode.js.orig 2014-02-19 20:54:46.000000000 +0000
-+++ js/ui/sessionMode.js 2014-03-17 19:23:36.755386539 +0000
-@@ -60,7 +60,7 @@
- isLocked: true,
- isGreeter: undefined,
- unlockDialog: undefined,
-- components: ['polkitAgent', 'telepathyClient'],
-+ components: ['polkitAgent'],
- panel: {
- left: [],
- center: [],
-@@ -72,7 +72,7 @@
- 'unlock-dialog': {
- isLocked: true,
- unlockDialog: undefined,
-- components: ['polkitAgent', 'telepathyClient'],
-+ components: ['polkitAgent'],
- panel: {
- left: [],
- center: [],
-@@ -97,7 +97,7 @@
- components: Config.HAVE_NETWORKMANAGER ?
- ['networkAgent', 'polkitAgent', 'telepathyClient',
- 'keyring', 'autorunManager', 'automountManager'] :
-- ['polkitAgent', 'telepathyClient',
-+ ['polkitAgent',
- 'keyring', 'autorunManager', 'automountManager'],
-
- panel: {
diff --git a/x11/gnome-shell/pkg-plist b/x11/gnome-shell/pkg-plist
index 406c994aa053..89f729b79fff 100644
--- a/x11/gnome-shell/pkg-plist
+++ b/x11/gnome-shell/pkg-plist
@@ -4,12 +4,12 @@ bin/gnome-shell-extension-tool
bin/gnome-shell-perf-tool
lib/gnome-shell/Gvc-1.0.typelib
lib/gnome-shell/Shell-0.1.typelib
-lib/gnome-shell/ShellJS-0.1.typelib
lib/gnome-shell/ShellMenu-0.1.typelib
lib/gnome-shell/St-1.0.typelib
-lib/gnome-shell/libgnome-shell-js.so
lib/gnome-shell/libgnome-shell-menu.so
lib/gnome-shell/libgnome-shell.so
+lib/gnome-shell/libgvc.so
+lib/gnome-shell/libst-1.0.so
%%WEBPLUGIN_DIR%%libgnome-shell-browser-plugin.so
libexec/gnome-shell-calendar-server
libexec/gnome-shell-hotplug-sniffer
@@ -18,8 +18,8 @@ man/man1/gnome-shell.1.gz
share/GConf/gsettings/gnome-shell-overrides.convert
share/applications/evolution-calendar.desktop
share/applications/gnome-shell-extension-prefs.desktop
-share/applications/gnome-shell-wayland.desktop
-share/applications/gnome-shell.desktop
+share/applications/org.gnome.Shell.desktop
+share/dbus-1/interfaces/org.gnome.Shell.PadOsd.xml
share/dbus-1/interfaces/org.gnome.Shell.Screencast.xml
share/dbus-1/interfaces/org.gnome.Shell.Screenshot.xml
share/dbus-1/interfaces/org.gnome.ShellSearchProvider.xml
@@ -27,83 +27,13 @@ share/dbus-1/interfaces/org.gnome.ShellSearchProvider2.xml
share/dbus-1/services/org.gnome.Shell.CalendarServer.service
share/dbus-1/services/org.gnome.Shell.HotplugSniffer.service
share/gnome-control-center/keybindings/50-gnome-shell-system.xml
+%%DATADIR%%/Gvc-1.0.gir
+%%DATADIR%%/Shell-0.1.gir
+%%DATADIR%%/ShellMenu-0.1.gir
+%%DATADIR%%/St-1.0.gir
+%%DATADIR%%/gnome-shell-osk-layouts.gresource
%%DATADIR%%/gnome-shell-theme.gresource
%%DATADIR%%/perf-background.xml
-share/gtk-doc/html/shell/ShellEmbeddedWindow.html
-share/gtk-doc/html/shell/ShellGtkEmbed.html
-share/gtk-doc/html/shell/ShellTpClient.html
-share/gtk-doc/html/shell/annotation-glossary.html
-share/gtk-doc/html/shell/api-index-full.html
-share/gtk-doc/html/shell/ch01.html
-share/gtk-doc/html/shell/ch02.html
-share/gtk-doc/html/shell/ch03.html
-share/gtk-doc/html/shell/ch04.html
-share/gtk-doc/html/shell/ch05.html
-share/gtk-doc/html/shell/ch06.html
-share/gtk-doc/html/shell/deprecated-api-index.html
-share/gtk-doc/html/shell/gdbus-org.gnome.Shell.SearchProvider.html
-share/gtk-doc/html/shell/gdbus-org.gnome.Shell.SearchProvider2.html
-share/gtk-doc/html/shell/home.png
-share/gtk-doc/html/shell/index.html
-share/gtk-doc/html/shell/left-insensitive.png
-share/gtk-doc/html/shell/left.png
-share/gtk-doc/html/shell/object-tree.html
-share/gtk-doc/html/shell/right-insensitive.png
-share/gtk-doc/html/shell/right.png
-share/gtk-doc/html/shell/shell-shell-action-modes.html
-share/gtk-doc/html/shell/shell-shell-app-system.html
-share/gtk-doc/html/shell/shell-shell-app-usage.html
-share/gtk-doc/html/shell/shell-shell-app.html
-share/gtk-doc/html/shell/shell-shell-generic-container.html
-share/gtk-doc/html/shell/shell-shell-global.html
-share/gtk-doc/html/shell/shell-shell-mount-operation.html
-share/gtk-doc/html/shell/shell-shell-polkit-authentication-agent.html
-share/gtk-doc/html/shell/shell-shell-recorder.html
-share/gtk-doc/html/shell/shell-shell-stack.html
-share/gtk-doc/html/shell/shell-shell-tray-icon.html
-share/gtk-doc/html/shell/shell-shell-tray-manager.html
-share/gtk-doc/html/shell/shell-shell-util.html
-share/gtk-doc/html/shell/shell-shell-window-tracker.html
-share/gtk-doc/html/shell/shell-shell-wm.html
-share/gtk-doc/html/shell/shell.devhelp2
-share/gtk-doc/html/shell/style.css
-share/gtk-doc/html/shell/up-insensitive.png
-share/gtk-doc/html/shell/up.png
-share/gtk-doc/html/st/StBin.html
-share/gtk-doc/html/st/StBoxLayout.html
-share/gtk-doc/html/st/StButton.html
-share/gtk-doc/html/st/StDrawingArea.html
-share/gtk-doc/html/st/StEntry.html
-share/gtk-doc/html/st/StIcon.html
-share/gtk-doc/html/st/StLabel.html
-share/gtk-doc/html/st/StScrollView.html
-share/gtk-doc/html/st/StScrollable.html
-share/gtk-doc/html/st/StTextureCache.html
-share/gtk-doc/html/st/StThemeNodeTransition.html
-share/gtk-doc/html/st/StWidget.html
-share/gtk-doc/html/st/StWidgetAccessible.html
-share/gtk-doc/html/st/annotation-glossary.html
-share/gtk-doc/html/st/api-index-full.html
-share/gtk-doc/html/st/base.html
-share/gtk-doc/html/st/containers.html
-share/gtk-doc/html/st/deprecated-api-index.html
-share/gtk-doc/html/st/home.png
-share/gtk-doc/html/st/index.html
-share/gtk-doc/html/st/left-insensitive.png
-share/gtk-doc/html/st/left.png
-share/gtk-doc/html/st/object-tree.html
-share/gtk-doc/html/st/pt01.html
-share/gtk-doc/html/st/right-insensitive.png
-share/gtk-doc/html/st/right.png
-share/gtk-doc/html/st/st-st-theme-context.html
-share/gtk-doc/html/st/st-st-theme-node.html
-share/gtk-doc/html/st/st-st-theme.html
-share/gtk-doc/html/st/st.devhelp2
-share/gtk-doc/html/st/style.css
-share/gtk-doc/html/st/styling.html
-share/gtk-doc/html/st/up-insensitive.png
-share/gtk-doc/html/st/up.png
-share/gtk-doc/html/st/widgets.html
share/locale/af/LC_MESSAGES/gnome-shell.mo
share/locale/an/LC_MESSAGES/gnome-shell.mo
share/locale/ar/LC_MESSAGES/gnome-shell.mo
@@ -130,10 +60,12 @@ share/locale/fi/LC_MESSAGES/gnome-shell.mo
share/locale/fr/LC_MESSAGES/gnome-shell.mo
share/locale/fur/LC_MESSAGES/gnome-shell.mo
share/locale/ga/LC_MESSAGES/gnome-shell.mo
+share/locale/gd/LC_MESSAGES/gnome-shell.mo
share/locale/gl/LC_MESSAGES/gnome-shell.mo
share/locale/gu/LC_MESSAGES/gnome-shell.mo
share/locale/he/LC_MESSAGES/gnome-shell.mo
share/locale/hi/LC_MESSAGES/gnome-shell.mo
+share/locale/hr/LC_MESSAGES/gnome-shell.mo
share/locale/hu/LC_MESSAGES/gnome-shell.mo
share/locale/ia/LC_MESSAGES/gnome-shell.mo
share/locale/id/LC_MESSAGES/gnome-shell.mo
@@ -182,3 +114,4 @@ share/locale/vi/LC_MESSAGES/gnome-shell.mo
share/locale/zh_CN/LC_MESSAGES/gnome-shell.mo
share/locale/zh_HK/LC_MESSAGES/gnome-shell.mo
share/locale/zh_TW/LC_MESSAGES/gnome-shell.mo
+share/xdg-desktop-portal/portals/gnome-shell.portal
diff --git a/x11/gnome-terminal/Makefile b/x11/gnome-terminal/Makefile
index 1a73c5484b38..e1f0dba7cd2b 100644
--- a/x11/gnome-terminal/Makefile
+++ b/x11/gnome-terminal/Makefile
@@ -2,8 +2,7 @@
# $FreeBSD$
PORTNAME= gnome-terminal
-PORTVERSION= 3.24.2
-PORTREVISION= 1
+PORTVERSION= 3.28.2
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome3
@@ -19,6 +18,7 @@ BUILD_DEPENDS= gsettings-desktop-schemas>=0:devel/gsettings-desktop-schemas \
vala:lang/vala
LIB_DEPENDS= libuuid.so:misc/e2fsprogs-libuuid \
libgnutls.so:security/gnutls \
+ libfribidi.so:converters/fribidi \
libpcre2-8.so:devel/pcre2
RUN_DEPENDS= gsettings-desktop-schemas>=0:devel/gsettings-desktop-schemas
@@ -51,9 +51,4 @@ NAUTILUS_CONFIGURE_WITH= nautilus-extension
NAUTILUS_USE= GNOME=nautilus3
NAUTILUS_DESC= Open in terminal extension for nautilus
-post-install:
-.for i in ca cs de el es fi fr gl hu ko pt_BR ru sv
- @${RMDIR} ${STAGEDIR}${PREFIX}/share/help/${i}/gnome-terminal/figures
-.endfor
-
.include <bsd.port.mk>
diff --git a/x11/gnome-terminal/distinfo b/x11/gnome-terminal/distinfo
index 01c61def86f1..070453bfb8b3 100644
--- a/x11/gnome-terminal/distinfo
+++ b/x11/gnome-terminal/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1494857938
-SHA256 (gnome3/gnome-terminal-3.24.2.tar.xz) = 281edac30a07ca45beaaaf0a13fe2219cf8b87ece5e55dccbfc49ef769dfec0f
-SIZE (gnome3/gnome-terminal-3.24.2.tar.xz) = 1960952
+TIMESTAMP = 1527915942
+SHA256 (gnome3/gnome-terminal-3.28.2.tar.xz) = a283dca4980eecf9184a55aac03fef99f85748461ff190423a2253f3b4557279
+SIZE (gnome3/gnome-terminal-3.28.2.tar.xz) = 2094920
diff --git a/x11/gnome-terminal/files/patch-src_Makefile.in b/x11/gnome-terminal/files/patch-src_Makefile.in
new file mode 100644
index 000000000000..e0d7f6d48faa
--- /dev/null
+++ b/x11/gnome-terminal/files/patch-src_Makefile.in
@@ -0,0 +1,14 @@
+https://debarshiray.wordpress.com/2018/05/11/gnome-terminal-separate-menu-items-for-opening-tabs-and-windows/
+
+https://github.com/debarshiray/gnome-terminal/commit/57f235b31cdf0a19c13a6cbb808ad5ef0865f62b
+
+--- src/Makefile.in.orig 2018-06-08 22:58:08.551112000 +0200
++++ src/Makefile.in 2018-06-08 22:59:00.096796000 +0200
+@@ -775,6 +775,7 @@
+ terminal-window.h $(NULL) $(am__append_3)
+ nodist_gnome_terminal_server_SOURCES = $(gnome_terminal_server_built)
+ gnome_terminal_server_CPPFLAGS = \
++ -DDISUNIFY_NEW_TERMINAL_SECTION \
+ -DTERMINAL_COMPILATION \
+ -DTERM_LOCALEDIR="\"$(datadir)/locale\"" \
+ -DTERM_LIBEXECDIR="\"$(libexecdir)\"" \
diff --git a/x11/gnome-terminal/pkg-plist b/x11/gnome-terminal/pkg-plist
index 35508e099b16..450f575fd932 100644
--- a/x11/gnome-terminal/pkg-plist
+++ b/x11/gnome-terminal/pkg-plist
@@ -1,12 +1,12 @@
bin/gnome-terminal
%%NAUTILUS%%lib/nautilus/extensions-3.0/libterminal-nautilus.a
%%NAUTILUS%%lib/nautilus/extensions-3.0/libterminal-nautilus.so
-lib/systemd/user/gnome-terminal-server.service
+@comment lib/systemd/user/gnome-terminal-server.service
%%MIGRATION%%libexec/gnome-terminal-migration
libexec/gnome-terminal-server
share/applications/org.gnome.Terminal.desktop
share/dbus-1/services/org.gnome.Terminal.service
-%%SEARCHPROVIDER%%share/gnome-shell/search-providers/gnome-terminal-search-provider.ini
+share/gnome-shell/search-providers/gnome-terminal-search-provider.ini
share/help/C/gnome-terminal/adv-keyboard-shortcuts.page
share/help/C/gnome-terminal/app-colors.page
share/help/C/gnome-terminal/app-cursor.page
@@ -27,6 +27,7 @@ share/help/C/gnome-terminal/pref-custom-command.page
share/help/C/gnome-terminal/pref-custom-exit.page
share/help/C/gnome-terminal/pref-encoding.page
share/help/C/gnome-terminal/pref-keyboard-access.page
+share/help/C/gnome-terminal/pref-login-shell.page
share/help/C/gnome-terminal/pref-menubar.page
share/help/C/gnome-terminal/pref-profile-char-width.page
share/help/C/gnome-terminal/pref-profile-encoding.page
@@ -36,9 +37,9 @@ share/help/C/gnome-terminal/pref-tab-window.page
share/help/C/gnome-terminal/pref-user-input.page
share/help/C/gnome-terminal/pref.page
share/help/C/gnome-terminal/prob-reset.page
-share/help/C/gnome-terminal/profile.page
share/help/C/gnome-terminal/txt-copy-paste.page
share/help/C/gnome-terminal/txt-links.page
+share/help/C/gnome-terminal/txt-save-text.page
share/help/C/gnome-terminal/txt-search.page
share/help/C/gnome-terminal/txt-select-text.page
share/help/ca/gnome-terminal/adv-keyboard-shortcuts.page
@@ -59,6 +60,7 @@ share/help/ca/gnome-terminal/pref-custom-command.page
share/help/ca/gnome-terminal/pref-custom-exit.page
share/help/ca/gnome-terminal/pref-encoding.page
share/help/ca/gnome-terminal/pref-keyboard-access.page
+share/help/ca/gnome-terminal/pref-login-shell.page
share/help/ca/gnome-terminal/pref-menubar.page
share/help/ca/gnome-terminal/pref-profile-char-width.page
share/help/ca/gnome-terminal/pref-profile-encoding.page
@@ -68,9 +70,9 @@ share/help/ca/gnome-terminal/pref-tab-window.page
share/help/ca/gnome-terminal/pref-user-input.page
share/help/ca/gnome-terminal/pref.page
share/help/ca/gnome-terminal/prob-reset.page
-share/help/ca/gnome-terminal/profile.page
share/help/ca/gnome-terminal/txt-copy-paste.page
share/help/ca/gnome-terminal/txt-links.page
+share/help/ca/gnome-terminal/txt-save-text.page
share/help/ca/gnome-terminal/txt-search.page
share/help/ca/gnome-terminal/txt-select-text.page
share/help/cs/gnome-terminal/adv-keyboard-shortcuts.page
@@ -91,6 +93,7 @@ share/help/cs/gnome-terminal/pref-custom-command.page
share/help/cs/gnome-terminal/pref-custom-exit.page
share/help/cs/gnome-terminal/pref-encoding.page
share/help/cs/gnome-terminal/pref-keyboard-access.page
+share/help/cs/gnome-terminal/pref-login-shell.page
share/help/cs/gnome-terminal/pref-menubar.page
share/help/cs/gnome-terminal/pref-profile-char-width.page
share/help/cs/gnome-terminal/pref-profile-encoding.page
@@ -100,9 +103,9 @@ share/help/cs/gnome-terminal/pref-tab-window.page
share/help/cs/gnome-terminal/pref-user-input.page
share/help/cs/gnome-terminal/pref.page
share/help/cs/gnome-terminal/prob-reset.page
-share/help/cs/gnome-terminal/profile.page
share/help/cs/gnome-terminal/txt-copy-paste.page
share/help/cs/gnome-terminal/txt-links.page
+share/help/cs/gnome-terminal/txt-save-text.page
share/help/cs/gnome-terminal/txt-search.page
share/help/cs/gnome-terminal/txt-select-text.page
share/help/de/gnome-terminal/adv-keyboard-shortcuts.page
@@ -112,6 +115,7 @@ share/help/de/gnome-terminal/app-fonts.page
share/help/de/gnome-terminal/app-fullscreen.page
share/help/de/gnome-terminal/app-terminal-sizes.page
share/help/de/gnome-terminal/app-zoom.page
+share/help/de/gnome-terminal/figures/gnome-terminal.png
share/help/de/gnome-terminal/gs-execute-commands.page
share/help/de/gnome-terminal/gs-tabs.page
share/help/de/gnome-terminal/index.page
@@ -123,6 +127,7 @@ share/help/de/gnome-terminal/pref-custom-command.page
share/help/de/gnome-terminal/pref-custom-exit.page
share/help/de/gnome-terminal/pref-encoding.page
share/help/de/gnome-terminal/pref-keyboard-access.page
+share/help/de/gnome-terminal/pref-login-shell.page
share/help/de/gnome-terminal/pref-menubar.page
share/help/de/gnome-terminal/pref-profile-char-width.page
share/help/de/gnome-terminal/pref-profile-encoding.page
@@ -132,9 +137,9 @@ share/help/de/gnome-terminal/pref-tab-window.page
share/help/de/gnome-terminal/pref-user-input.page
share/help/de/gnome-terminal/pref.page
share/help/de/gnome-terminal/prob-reset.page
-share/help/de/gnome-terminal/profile.page
share/help/de/gnome-terminal/txt-copy-paste.page
share/help/de/gnome-terminal/txt-links.page
+share/help/de/gnome-terminal/txt-save-text.page
share/help/de/gnome-terminal/txt-search.page
share/help/de/gnome-terminal/txt-select-text.page
share/help/el/gnome-terminal/adv-keyboard-shortcuts.page
@@ -144,6 +149,7 @@ share/help/el/gnome-terminal/app-fonts.page
share/help/el/gnome-terminal/app-fullscreen.page
share/help/el/gnome-terminal/app-terminal-sizes.page
share/help/el/gnome-terminal/app-zoom.page
+share/help/el/gnome-terminal/figures/gnome-terminal.png
share/help/el/gnome-terminal/gs-execute-commands.page
share/help/el/gnome-terminal/gs-tabs.page
share/help/el/gnome-terminal/index.page
@@ -155,6 +161,7 @@ share/help/el/gnome-terminal/pref-custom-command.page
share/help/el/gnome-terminal/pref-custom-exit.page
share/help/el/gnome-terminal/pref-encoding.page
share/help/el/gnome-terminal/pref-keyboard-access.page
+share/help/el/gnome-terminal/pref-login-shell.page
share/help/el/gnome-terminal/pref-menubar.page
share/help/el/gnome-terminal/pref-profile-char-width.page
share/help/el/gnome-terminal/pref-profile-encoding.page
@@ -164,9 +171,9 @@ share/help/el/gnome-terminal/pref-tab-window.page
share/help/el/gnome-terminal/pref-user-input.page
share/help/el/gnome-terminal/pref.page
share/help/el/gnome-terminal/prob-reset.page
-share/help/el/gnome-terminal/profile.page
share/help/el/gnome-terminal/txt-copy-paste.page
share/help/el/gnome-terminal/txt-links.page
+share/help/el/gnome-terminal/txt-save-text.page
share/help/el/gnome-terminal/txt-search.page
share/help/el/gnome-terminal/txt-select-text.page
share/help/es/gnome-terminal/adv-keyboard-shortcuts.page
@@ -187,6 +194,7 @@ share/help/es/gnome-terminal/pref-custom-command.page
share/help/es/gnome-terminal/pref-custom-exit.page
share/help/es/gnome-terminal/pref-encoding.page
share/help/es/gnome-terminal/pref-keyboard-access.page
+share/help/es/gnome-terminal/pref-login-shell.page
share/help/es/gnome-terminal/pref-menubar.page
share/help/es/gnome-terminal/pref-profile-char-width.page
share/help/es/gnome-terminal/pref-profile-encoding.page
@@ -196,9 +204,9 @@ share/help/es/gnome-terminal/pref-tab-window.page
share/help/es/gnome-terminal/pref-user-input.page
share/help/es/gnome-terminal/pref.page
share/help/es/gnome-terminal/prob-reset.page
-share/help/es/gnome-terminal/profile.page
share/help/es/gnome-terminal/txt-copy-paste.page
share/help/es/gnome-terminal/txt-links.page
+share/help/es/gnome-terminal/txt-save-text.page
share/help/es/gnome-terminal/txt-search.page
share/help/es/gnome-terminal/txt-select-text.page
share/help/fi/gnome-terminal/adv-keyboard-shortcuts.page
@@ -219,6 +227,7 @@ share/help/fi/gnome-terminal/pref-custom-command.page
share/help/fi/gnome-terminal/pref-custom-exit.page
share/help/fi/gnome-terminal/pref-encoding.page
share/help/fi/gnome-terminal/pref-keyboard-access.page
+share/help/fi/gnome-terminal/pref-login-shell.page
share/help/fi/gnome-terminal/pref-menubar.page
share/help/fi/gnome-terminal/pref-profile-char-width.page
share/help/fi/gnome-terminal/pref-profile-encoding.page
@@ -228,9 +237,9 @@ share/help/fi/gnome-terminal/pref-tab-window.page
share/help/fi/gnome-terminal/pref-user-input.page
share/help/fi/gnome-terminal/pref.page
share/help/fi/gnome-terminal/prob-reset.page
-share/help/fi/gnome-terminal/profile.page
share/help/fi/gnome-terminal/txt-copy-paste.page
share/help/fi/gnome-terminal/txt-links.page
+share/help/fi/gnome-terminal/txt-save-text.page
share/help/fi/gnome-terminal/txt-search.page
share/help/fi/gnome-terminal/txt-select-text.page
share/help/fr/gnome-terminal/adv-keyboard-shortcuts.page
@@ -251,6 +260,7 @@ share/help/fr/gnome-terminal/pref-custom-command.page
share/help/fr/gnome-terminal/pref-custom-exit.page
share/help/fr/gnome-terminal/pref-encoding.page
share/help/fr/gnome-terminal/pref-keyboard-access.page
+share/help/fr/gnome-terminal/pref-login-shell.page
share/help/fr/gnome-terminal/pref-menubar.page
share/help/fr/gnome-terminal/pref-profile-char-width.page
share/help/fr/gnome-terminal/pref-profile-encoding.page
@@ -260,9 +270,9 @@ share/help/fr/gnome-terminal/pref-tab-window.page
share/help/fr/gnome-terminal/pref-user-input.page
share/help/fr/gnome-terminal/pref.page
share/help/fr/gnome-terminal/prob-reset.page
-share/help/fr/gnome-terminal/profile.page
share/help/fr/gnome-terminal/txt-copy-paste.page
share/help/fr/gnome-terminal/txt-links.page
+share/help/fr/gnome-terminal/txt-save-text.page
share/help/fr/gnome-terminal/txt-search.page
share/help/fr/gnome-terminal/txt-select-text.page
share/help/gl/gnome-terminal/adv-keyboard-shortcuts.page
@@ -283,6 +293,7 @@ share/help/gl/gnome-terminal/pref-custom-command.page
share/help/gl/gnome-terminal/pref-custom-exit.page
share/help/gl/gnome-terminal/pref-encoding.page
share/help/gl/gnome-terminal/pref-keyboard-access.page
+share/help/gl/gnome-terminal/pref-login-shell.page
share/help/gl/gnome-terminal/pref-menubar.page
share/help/gl/gnome-terminal/pref-profile-char-width.page
share/help/gl/gnome-terminal/pref-profile-encoding.page
@@ -292,9 +303,9 @@ share/help/gl/gnome-terminal/pref-tab-window.page
share/help/gl/gnome-terminal/pref-user-input.page
share/help/gl/gnome-terminal/pref.page
share/help/gl/gnome-terminal/prob-reset.page
-share/help/gl/gnome-terminal/profile.page
share/help/gl/gnome-terminal/txt-copy-paste.page
share/help/gl/gnome-terminal/txt-links.page
+share/help/gl/gnome-terminal/txt-save-text.page
share/help/gl/gnome-terminal/txt-search.page
share/help/gl/gnome-terminal/txt-select-text.page
share/help/hu/gnome-terminal/adv-keyboard-shortcuts.page
@@ -304,6 +315,7 @@ share/help/hu/gnome-terminal/app-fonts.page
share/help/hu/gnome-terminal/app-fullscreen.page
share/help/hu/gnome-terminal/app-terminal-sizes.page
share/help/hu/gnome-terminal/app-zoom.page
+share/help/hu/gnome-terminal/figures/gnome-terminal.png
share/help/hu/gnome-terminal/gs-execute-commands.page
share/help/hu/gnome-terminal/gs-tabs.page
share/help/hu/gnome-terminal/index.page
@@ -315,6 +327,7 @@ share/help/hu/gnome-terminal/pref-custom-command.page
share/help/hu/gnome-terminal/pref-custom-exit.page
share/help/hu/gnome-terminal/pref-encoding.page
share/help/hu/gnome-terminal/pref-keyboard-access.page
+share/help/hu/gnome-terminal/pref-login-shell.page
share/help/hu/gnome-terminal/pref-menubar.page
share/help/hu/gnome-terminal/pref-profile-char-width.page
share/help/hu/gnome-terminal/pref-profile-encoding.page
@@ -324,9 +337,9 @@ share/help/hu/gnome-terminal/pref-tab-window.page
share/help/hu/gnome-terminal/pref-user-input.page
share/help/hu/gnome-terminal/pref.page
share/help/hu/gnome-terminal/prob-reset.page
-share/help/hu/gnome-terminal/profile.page
share/help/hu/gnome-terminal/txt-copy-paste.page
share/help/hu/gnome-terminal/txt-links.page
+share/help/hu/gnome-terminal/txt-save-text.page
share/help/hu/gnome-terminal/txt-search.page
share/help/hu/gnome-terminal/txt-select-text.page
share/help/ko/gnome-terminal/adv-keyboard-shortcuts.page
@@ -336,6 +349,7 @@ share/help/ko/gnome-terminal/app-fonts.page
share/help/ko/gnome-terminal/app-fullscreen.page
share/help/ko/gnome-terminal/app-terminal-sizes.page
share/help/ko/gnome-terminal/app-zoom.page
+share/help/ko/gnome-terminal/figures/gnome-terminal.png
share/help/ko/gnome-terminal/gs-execute-commands.page
share/help/ko/gnome-terminal/gs-tabs.page
share/help/ko/gnome-terminal/index.page
@@ -347,6 +361,7 @@ share/help/ko/gnome-terminal/pref-custom-command.page
share/help/ko/gnome-terminal/pref-custom-exit.page
share/help/ko/gnome-terminal/pref-encoding.page
share/help/ko/gnome-terminal/pref-keyboard-access.page
+share/help/ko/gnome-terminal/pref-login-shell.page
share/help/ko/gnome-terminal/pref-menubar.page
share/help/ko/gnome-terminal/pref-profile-char-width.page
share/help/ko/gnome-terminal/pref-profile-encoding.page
@@ -356,11 +371,45 @@ share/help/ko/gnome-terminal/pref-tab-window.page
share/help/ko/gnome-terminal/pref-user-input.page
share/help/ko/gnome-terminal/pref.page
share/help/ko/gnome-terminal/prob-reset.page
-share/help/ko/gnome-terminal/profile.page
share/help/ko/gnome-terminal/txt-copy-paste.page
share/help/ko/gnome-terminal/txt-links.page
+share/help/ko/gnome-terminal/txt-save-text.page
share/help/ko/gnome-terminal/txt-search.page
share/help/ko/gnome-terminal/txt-select-text.page
+share/help/pl/gnome-terminal/adv-keyboard-shortcuts.page
+share/help/pl/gnome-terminal/app-colors.page
+share/help/pl/gnome-terminal/app-cursor.page
+share/help/pl/gnome-terminal/app-fonts.page
+share/help/pl/gnome-terminal/app-fullscreen.page
+share/help/pl/gnome-terminal/app-terminal-sizes.page
+share/help/pl/gnome-terminal/app-zoom.page
+share/help/pl/gnome-terminal/figures/gnome-terminal.png
+share/help/pl/gnome-terminal/gs-execute-commands.page
+share/help/pl/gnome-terminal/gs-tabs.page
+share/help/pl/gnome-terminal/index.page
+share/help/pl/gnome-terminal/introduction.page
+share/help/pl/gnome-terminal/legal.xml
+share/help/pl/gnome-terminal/overview.page
+share/help/pl/gnome-terminal/pref-bell.page
+share/help/pl/gnome-terminal/pref-custom-command.page
+share/help/pl/gnome-terminal/pref-custom-exit.page
+share/help/pl/gnome-terminal/pref-encoding.page
+share/help/pl/gnome-terminal/pref-keyboard-access.page
+share/help/pl/gnome-terminal/pref-login-shell.page
+share/help/pl/gnome-terminal/pref-menubar.page
+share/help/pl/gnome-terminal/pref-profile-char-width.page
+share/help/pl/gnome-terminal/pref-profile-encoding.page
+share/help/pl/gnome-terminal/pref-profiles.page
+share/help/pl/gnome-terminal/pref-scrolling.page
+share/help/pl/gnome-terminal/pref-tab-window.page
+share/help/pl/gnome-terminal/pref-user-input.page
+share/help/pl/gnome-terminal/pref.page
+share/help/pl/gnome-terminal/prob-reset.page
+share/help/pl/gnome-terminal/txt-copy-paste.page
+share/help/pl/gnome-terminal/txt-links.page
+share/help/pl/gnome-terminal/txt-save-text.page
+share/help/pl/gnome-terminal/txt-search.page
+share/help/pl/gnome-terminal/txt-select-text.page
share/help/pt_BR/gnome-terminal/adv-keyboard-shortcuts.page
share/help/pt_BR/gnome-terminal/app-colors.page
share/help/pt_BR/gnome-terminal/app-cursor.page
@@ -368,6 +417,7 @@ share/help/pt_BR/gnome-terminal/app-fonts.page
share/help/pt_BR/gnome-terminal/app-fullscreen.page
share/help/pt_BR/gnome-terminal/app-terminal-sizes.page
share/help/pt_BR/gnome-terminal/app-zoom.page
+share/help/pt_BR/gnome-terminal/figures/gnome-terminal.png
share/help/pt_BR/gnome-terminal/gs-execute-commands.page
share/help/pt_BR/gnome-terminal/gs-tabs.page
share/help/pt_BR/gnome-terminal/index.page
@@ -379,6 +429,7 @@ share/help/pt_BR/gnome-terminal/pref-custom-command.page
share/help/pt_BR/gnome-terminal/pref-custom-exit.page
share/help/pt_BR/gnome-terminal/pref-encoding.page
share/help/pt_BR/gnome-terminal/pref-keyboard-access.page
+share/help/pt_BR/gnome-terminal/pref-login-shell.page
share/help/pt_BR/gnome-terminal/pref-menubar.page
share/help/pt_BR/gnome-terminal/pref-profile-char-width.page
share/help/pt_BR/gnome-terminal/pref-profile-encoding.page
@@ -388,11 +439,44 @@ share/help/pt_BR/gnome-terminal/pref-tab-window.page
share/help/pt_BR/gnome-terminal/pref-user-input.page
share/help/pt_BR/gnome-terminal/pref.page
share/help/pt_BR/gnome-terminal/prob-reset.page
-share/help/pt_BR/gnome-terminal/profile.page
share/help/pt_BR/gnome-terminal/txt-copy-paste.page
share/help/pt_BR/gnome-terminal/txt-links.page
+share/help/pt_BR/gnome-terminal/txt-save-text.page
share/help/pt_BR/gnome-terminal/txt-search.page
share/help/pt_BR/gnome-terminal/txt-select-text.page
+share/help/ro/gnome-terminal/adv-keyboard-shortcuts.page
+share/help/ro/gnome-terminal/app-colors.page
+share/help/ro/gnome-terminal/app-cursor.page
+share/help/ro/gnome-terminal/app-fonts.page
+share/help/ro/gnome-terminal/app-fullscreen.page
+share/help/ro/gnome-terminal/app-terminal-sizes.page
+share/help/ro/gnome-terminal/app-zoom.page
+share/help/ro/gnome-terminal/gs-execute-commands.page
+share/help/ro/gnome-terminal/gs-tabs.page
+share/help/ro/gnome-terminal/index.page
+share/help/ro/gnome-terminal/introduction.page
+share/help/ro/gnome-terminal/legal.xml
+share/help/ro/gnome-terminal/overview.page
+share/help/ro/gnome-terminal/pref-bell.page
+share/help/ro/gnome-terminal/pref-custom-command.page
+share/help/ro/gnome-terminal/pref-custom-exit.page
+share/help/ro/gnome-terminal/pref-encoding.page
+share/help/ro/gnome-terminal/pref-keyboard-access.page
+share/help/ro/gnome-terminal/pref-login-shell.page
+share/help/ro/gnome-terminal/pref-menubar.page
+share/help/ro/gnome-terminal/pref-profile-char-width.page
+share/help/ro/gnome-terminal/pref-profile-encoding.page
+share/help/ro/gnome-terminal/pref-profiles.page
+share/help/ro/gnome-terminal/pref-scrolling.page
+share/help/ro/gnome-terminal/pref-tab-window.page
+share/help/ro/gnome-terminal/pref-user-input.page
+share/help/ro/gnome-terminal/pref.page
+share/help/ro/gnome-terminal/prob-reset.page
+share/help/ro/gnome-terminal/txt-copy-paste.page
+share/help/ro/gnome-terminal/txt-links.page
+share/help/ro/gnome-terminal/txt-save-text.page
+share/help/ro/gnome-terminal/txt-search.page
+share/help/ro/gnome-terminal/txt-select-text.page
share/help/ru/gnome-terminal/adv-keyboard-shortcuts.page
share/help/ru/gnome-terminal/app-colors.page
share/help/ru/gnome-terminal/app-cursor.page
@@ -400,6 +484,7 @@ share/help/ru/gnome-terminal/app-fonts.page
share/help/ru/gnome-terminal/app-fullscreen.page
share/help/ru/gnome-terminal/app-terminal-sizes.page
share/help/ru/gnome-terminal/app-zoom.page
+share/help/ru/gnome-terminal/figures/gnome-terminal.png
share/help/ru/gnome-terminal/gs-execute-commands.page
share/help/ru/gnome-terminal/gs-tabs.page
share/help/ru/gnome-terminal/index.page
@@ -411,6 +496,7 @@ share/help/ru/gnome-terminal/pref-custom-command.page
share/help/ru/gnome-terminal/pref-custom-exit.page
share/help/ru/gnome-terminal/pref-encoding.page
share/help/ru/gnome-terminal/pref-keyboard-access.page
+share/help/ru/gnome-terminal/pref-login-shell.page
share/help/ru/gnome-terminal/pref-menubar.page
share/help/ru/gnome-terminal/pref-profile-char-width.page
share/help/ru/gnome-terminal/pref-profile-encoding.page
@@ -420,9 +506,9 @@ share/help/ru/gnome-terminal/pref-tab-window.page
share/help/ru/gnome-terminal/pref-user-input.page
share/help/ru/gnome-terminal/pref.page
share/help/ru/gnome-terminal/prob-reset.page
-share/help/ru/gnome-terminal/profile.page
share/help/ru/gnome-terminal/txt-copy-paste.page
share/help/ru/gnome-terminal/txt-links.page
+share/help/ru/gnome-terminal/txt-save-text.page
share/help/ru/gnome-terminal/txt-search.page
share/help/ru/gnome-terminal/txt-select-text.page
share/help/sv/gnome-terminal/adv-keyboard-shortcuts.page
@@ -443,6 +529,7 @@ share/help/sv/gnome-terminal/pref-custom-command.page
share/help/sv/gnome-terminal/pref-custom-exit.page
share/help/sv/gnome-terminal/pref-encoding.page
share/help/sv/gnome-terminal/pref-keyboard-access.page
+share/help/sv/gnome-terminal/pref-login-shell.page
share/help/sv/gnome-terminal/pref-menubar.page
share/help/sv/gnome-terminal/pref-profile-char-width.page
share/help/sv/gnome-terminal/pref-profile-encoding.page
@@ -452,9 +539,9 @@ share/help/sv/gnome-terminal/pref-tab-window.page
share/help/sv/gnome-terminal/pref-user-input.page
share/help/sv/gnome-terminal/pref.page
share/help/sv/gnome-terminal/prob-reset.page
-share/help/sv/gnome-terminal/profile.page
share/help/sv/gnome-terminal/txt-copy-paste.page
share/help/sv/gnome-terminal/txt-links.page
+share/help/sv/gnome-terminal/txt-save-text.page
share/help/sv/gnome-terminal/txt-search.page
share/help/sv/gnome-terminal/txt-select-text.page
share/locale/am/LC_MESSAGES/gnome-terminal.mo
@@ -554,3 +641,11 @@ share/locale/zh_HK/LC_MESSAGES/gnome-terminal.mo
share/locale/zh_TW/LC_MESSAGES/gnome-terminal.mo
%%NAUTILUS%%share/metainfo/org.gnome.Terminal.Nautilus.metainfo.xml
share/metainfo/org.gnome.Terminal.appdata.xml
+@dir share/help/ca/gnome-terminal/figures
+@dir share/help/cs/gnome-terminal/figures
+@dir share/help/es/gnome-terminal/figures
+@dir share/help/fi/gnome-terminal/figures
+@dir share/help/fr/gnome-terminal/figures
+@dir share/help/gl/gnome-terminal/figures
+@dir share/help/ro/gnome-terminal/figures
+@dir share/help/sv/gnome-terminal/figures
diff --git a/x11/gnome3-lite/Makefile b/x11/gnome3-lite/Makefile
index 04b010e9a837..d4bedc9ab9fc 100644
--- a/x11/gnome3-lite/Makefile
+++ b/x11/gnome3-lite/Makefile
@@ -1,15 +1,13 @@
# Created by: Joe Marcus Clarke <marcus@FreeBSD.org>
# $FreeBSD$
-# $MCom: ports/trunk/x11/gnome3-lite/Makefile 18610 2013-06-30 16:33:05Z marcus $
-PORTREVISION= 1
+PORTREVISION= 0
CATEGORIES= x11 gnome
PKGNAMESUFFIX= -lite
COMMENT= The "meta-port" of the GNOME desktop slimmed down for only the basics
MASTERDIR= ${.CURDIR}/../gnome3
-CONFLICTS= gnome2-[0-9]* gnome2-lite-[0-9]* gnome3-[0-9]*
DESCR= ${.CURDIR}/pkg-descr
PKGMESSAGE= ${.CURDIR}/pkg-message
diff --git a/x11/gnome3/Makefile b/x11/gnome3/Makefile
index 4e2602e46c3c..2728888bb9d4 100644
--- a/x11/gnome3/Makefile
+++ b/x11/gnome3/Makefile
@@ -2,8 +2,7 @@
# $FreeBSD$
PORTNAME= gnome3
-PORTVERSION= 3.18.0
-PORTREVISION= 1
+PORTVERSION= 3.28
CATEGORIES?= x11 gnome
MAINTAINER= gnome@FreeBSD.org
@@ -11,7 +10,7 @@ COMMENT?= "meta-port" for the GNOME 3 integrated X11 desktop
RUN_DEPENDS?= dconf-editor:devel/dconf-editor \
gnome-session>=3.0.0:x11/gnome-session \
- gnome-themes-standard>=3.0.0:x11-themes/gnome-themes-standard \
+ gnome-themes-extra>=3.28:x11-themes/gnome-themes-extra \
gnome-icon-theme-extras>=3.0.0:misc/gnome-icon-theme-extras \
gnome-icon-theme-symbolic>=3.0.0:x11-themes/gnome-icon-theme-symbolic \
gnome-keyring>=3.0.0:security/gnome-keyring \
@@ -20,7 +19,7 @@ RUN_DEPENDS?= dconf-editor:devel/dconf-editor \
gnome-mount:sysutils/gnome-mount \
gnome-shell>=3.0.0:x11/gnome-shell \
gnome-shell-extensions>=3.0.0:x11/gnome-shell-extensions \
- gnome-tweak-tool:deskutils/gnome-tweak-tool \
+ gnome-tweaks:deskutils/gnome-tweaks \
sushi>=0:x11-fm/sushi \
nautilus>=3.0.0:x11-fm/nautilus \
${LOCALBASE}/share/fonts/bitstream-vera/Vera.ttf:x11-fonts/bitstream-vera \
@@ -41,14 +40,14 @@ USES= metaport
.if ${.CURDIR:T}!="gnome3-lite"
OPTIONS_DEFINE+=DOCS
-DOCS_RUN_DEPENDS= gnome-user-docs>=0:misc/gnome-user-docs
+DOCS_RUN_DEPENDS= gnome-user-docs>=0:misc/gnome-user-docs \
+ gnome-getting-started-docs>=0:misc/gnome-getting-started-docs
.endif
.include <bsd.port.options.mk>
.if ${.CURDIR:T}!="gnome3-lite"
-RUN_DEPENDS+= empathy>=3.0.0:net-im/empathy \
- epiphany>=3.0.0:www/epiphany \
+RUN_DEPENDS+= epiphany>=3.0.0:www/epiphany \
gucharmap>=3.0.0:deskutils/gucharmap \
gnome-characters>=3.0.0:deskutils/gnome-characters \
gnome-calendar>=3.0:deskutils/gnome-calendar \
@@ -57,7 +56,6 @@ RUN_DEPENDS+= empathy>=3.0.0:net-im/empathy \
gedit>=3.0.0:editors/gedit \
gedit-plugins>=3.0.0:editors/gedit-plugins \
gnome-terminal>=3.0.0:x11/gnome-terminal \
- mousetweaks>=3.0.0:accessibility/mousetweaks \
brasero>=3.0.0:sysutils/brasero \
accerciser>=3.0.0:accessibility/accerciser \
gnome-calculator>=3.0.0:math/gnome-calculator \
diff --git a/x11/libgnome/Makefile b/x11/libgnome/Makefile
index b86a008339cf..3331ae06e558 100644
--- a/x11/libgnome/Makefile
+++ b/x11/libgnome/Makefile
@@ -16,7 +16,8 @@ USES= tar:bzip2
.if !defined(REFERENCE_PORT)
BUILD_DEPENDS= rarian-sk-config:textproc/rarian
-LIB_DEPENDS= libcanberra-gtk.so:audio/libcanberra
+LIB_DEPENDS= libcanberra-gtk.so:audio/libcanberra \
+ libpopt.so:devel/popt
RUN_DEPENDS= rarian-sk-config:textproc/rarian
INSTALL_TARGET= install-strip
diff --git a/x11/libgnome/files/patch-libgnome_gnome-config.h b/x11/libgnome/files/patch-libgnome_gnome-config.h
new file mode 100644
index 000000000000..14b56620abdf
--- /dev/null
+++ b/x11/libgnome/files/patch-libgnome_gnome-config.h
@@ -0,0 +1,11 @@
+--- libgnome/gnome-config.h.orig 2009-04-23 09:29:13 UTC
++++ libgnome/gnome-config.h
+@@ -270,7 +270,7 @@ void gnome_config_clean_key_ (const char *path, gboole
+ #define gnome_config_private_clean_key(path) \
+ (gnome_config_clean_key_((path),TRUE))
+
+-/* returns the true filename of the config file */
++/* returns the true filename of the config file */
+ #define gnome_config_get_real_path(path) \
+ (g_build_filename (gnome_user_dir_get(),(path),NULL))
+ #define gnome_config_private_get_real_path(path) \
diff --git a/x11/libgnomekbd/Makefile b/x11/libgnomekbd/Makefile
index 4a5c26b7dd6f..b6c40211668f 100644
--- a/x11/libgnomekbd/Makefile
+++ b/x11/libgnomekbd/Makefile
@@ -1,10 +1,8 @@
# Created by: Michael Johnson <ahze@FreeBSD.org>
# $FreeBSD$
-# $MCom: ports/trunk/x11/libgnomekbd/Makefile 19813 2014-08-15 19:44:33Z gusi $
PORTNAME= libgnomekbd
-PORTVERSION= 3.6.0
-PORTREVISION= 2
+PORTVERSION= 3.26.0
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome3
@@ -12,18 +10,17 @@ DIST_SUBDIR= gnome3
MAINTAINER= gnome@FreeBSD.org
COMMENT= GNOME keyboard shared library
-BUILD_DEPENDS= libxklavier>=5.2:x11/libxklavier
+LICENSE= GPLv2
+LICENSE_FILE= ${WRKSRC}/COPYING.LIB
+
LIB_DEPENDS= libxklavier.so:x11/libxklavier
-USES= gettext gmake libtool pathfix pkgconfig tar:xz
-USE_GNOME= gnomeprefix gtk30 intltool introspection:build \
- libxml2
+USES= gettext gmake libtool localbase pathfix pkgconfig tar:xz
+USE_GNOME= cairo gtk30 introspection:build
GNU_CONFIGURE= yes
-USE_XORG= ice
+USE_XORG= x11
INSTALLS_ICONS= yes
USE_LDCONFIG= yes
-CPPFLAGS+= -I${LOCALBASE}/include
-LDFLAGS+= -L${LOCALBASE}/lib
INSTALL_TARGET= install-strip
GLIB_SCHEMAS= org.gnome.libgnomekbd.desktop.gschema.xml \
diff --git a/x11/libgnomekbd/distinfo b/x11/libgnomekbd/distinfo
index 7e6f98afc98e..d72733140047 100644
--- a/x11/libgnomekbd/distinfo
+++ b/x11/libgnomekbd/distinfo
@@ -1,2 +1,3 @@
-SHA256 (gnome3/libgnomekbd-3.6.0.tar.xz) = c41ea5b0f64da470925ba09f9f1b46b26b82d4e433e594b2c71eab3da8856a09
-SIZE (gnome3/libgnomekbd-3.6.0.tar.xz) = 373588
+TIMESTAMP = 1507325653
+SHA256 (gnome3/libgnomekbd-3.26.0.tar.xz) = ea3b418c57c30615f7ee5b6f718def7c9d09ce34637324361150744258968875
+SIZE (gnome3/libgnomekbd-3.26.0.tar.xz) = 449204
diff --git a/x11/libgnomekbd/pkg-plist b/x11/libgnomekbd/pkg-plist
index 4c83d83b9ae7..4b728c094d20 100644
--- a/x11/libgnomekbd/pkg-plist
+++ b/x11/libgnomekbd/pkg-plist
@@ -33,6 +33,7 @@ share/locale/be@latin/LC_MESSAGES/libgnomekbd.mo
share/locale/bg/LC_MESSAGES/libgnomekbd.mo
share/locale/bn/LC_MESSAGES/libgnomekbd.mo
share/locale/bn_IN/LC_MESSAGES/libgnomekbd.mo
+share/locale/bs/LC_MESSAGES/libgnomekbd.mo
share/locale/ca/LC_MESSAGES/libgnomekbd.mo
share/locale/ca@valencia/LC_MESSAGES/libgnomekbd.mo
share/locale/cs/LC_MESSAGES/libgnomekbd.mo
@@ -49,6 +50,7 @@ share/locale/eu/LC_MESSAGES/libgnomekbd.mo
share/locale/fa/LC_MESSAGES/libgnomekbd.mo
share/locale/fi/LC_MESSAGES/libgnomekbd.mo
share/locale/fr/LC_MESSAGES/libgnomekbd.mo
+share/locale/fur/LC_MESSAGES/libgnomekbd.mo
share/locale/ga/LC_MESSAGES/libgnomekbd.mo
share/locale/gl/LC_MESSAGES/libgnomekbd.mo
share/locale/gu/LC_MESSAGES/libgnomekbd.mo
@@ -59,6 +61,8 @@ share/locale/id/LC_MESSAGES/libgnomekbd.mo
share/locale/it/LC_MESSAGES/libgnomekbd.mo
share/locale/ja/LC_MESSAGES/libgnomekbd.mo
share/locale/ka/LC_MESSAGES/libgnomekbd.mo
+share/locale/kk/LC_MESSAGES/libgnomekbd.mo
+share/locale/km/LC_MESSAGES/libgnomekbd.mo
share/locale/kn/LC_MESSAGES/libgnomekbd.mo
share/locale/ko/LC_MESSAGES/libgnomekbd.mo
share/locale/lt/LC_MESSAGES/libgnomekbd.mo
@@ -88,6 +92,7 @@ share/locale/sr@latin/LC_MESSAGES/libgnomekbd.mo
share/locale/sv/LC_MESSAGES/libgnomekbd.mo
share/locale/ta/LC_MESSAGES/libgnomekbd.mo
share/locale/te/LC_MESSAGES/libgnomekbd.mo
+share/locale/tg/LC_MESSAGES/libgnomekbd.mo
share/locale/th/LC_MESSAGES/libgnomekbd.mo
share/locale/tr/LC_MESSAGES/libgnomekbd.mo
share/locale/ug/LC_MESSAGES/libgnomekbd.mo
diff --git a/x11/pantheon-terminal/Makefile b/x11/pantheon-terminal/Makefile
index 4356821b6252..fb6fc94bcb54 100644
--- a/x11/pantheon-terminal/Makefile
+++ b/x11/pantheon-terminal/Makefile
@@ -12,6 +12,8 @@ COMMENT= Lightweight, beautiful, and simple terminal from Elementary OS
LICENSE= GPLv3
LICENSE_FILE= ${WRKSRC}/COPYING
+BROKEN= Doesn't build with vala 0.40+
+
LIB_DEPENDS= libgee-0.8.so:devel/libgee \
libgnutls.so:security/gnutls \
libgranite.so:x11-toolkits/granite \
diff --git a/x11/wmdrawer/Makefile b/x11/wmdrawer/Makefile
index 6c0510646408..56737d0f2124 100644
--- a/x11/wmdrawer/Makefile
+++ b/x11/wmdrawer/Makefile
@@ -3,7 +3,7 @@
PORTNAME= wmdrawer
PORTVERSION= 0.10.5
-PORTREVISION= 11
+PORTREVISION= 12
CATEGORIES= x11 windowmaker
MASTER_SITES= http://people.easter-eggs.org/~valos/wmdrawer/ \
http://www.sourcefiles.org/Utilities/Desktops/
@@ -15,6 +15,7 @@ LICENSE= GPLv2+
USES= gmake pkgconfig
USE_GNOME= gdkpixbuf2
+USE_XORG= x11 xext xi
MAKE_ENV= USE_GDKPIXBUF2=1
SUB_FILES= pkg-message
diff --git a/x11/yelp/Makefile b/x11/yelp/Makefile
index 8040830ca94d..ddcc96e09bf3 100644
--- a/x11/yelp/Makefile
+++ b/x11/yelp/Makefile
@@ -2,8 +2,7 @@
# $FreeBSD$
PORTNAME= yelp
-PORTVERSION= 3.22.0
-PORTREVISION= 2
+PORTVERSION= 3.28.1
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
DIST_SUBDIR= gnome3
diff --git a/x11/yelp/distinfo b/x11/yelp/distinfo
index aceb45721869..160c54796ccd 100644
--- a/x11/yelp/distinfo
+++ b/x11/yelp/distinfo
@@ -1,3 +1,3 @@
-TIMESTAMP = 1479730974
-SHA256 (gnome3/yelp-3.22.0.tar.xz) = 8616b77c239aaa731312609f192c9b2c71d54b2cae42ff23efa23b5b3188778e
-SIZE (gnome3/yelp-3.22.0.tar.xz) = 1383500
+TIMESTAMP = 1525379562
+SHA256 (gnome3/yelp-3.28.1.tar.xz) = e88a5d05af20e497c50430b36fb523f8fda79a986359a6b7bd25910a2d2e7c0c
+SIZE (gnome3/yelp-3.28.1.tar.xz) = 1381180
diff --git a/x11/yelp/pkg-plist b/x11/yelp/pkg-plist
index 102e56e6449e..b8a0aa443ef4 100644
--- a/x11/yelp/pkg-plist
+++ b/x11/yelp/pkg-plist
@@ -148,6 +148,7 @@ share/locale/zh_CN/LC_MESSAGES/yelp.mo
share/locale/zh_HK/LC_MESSAGES/yelp.mo
share/locale/zh_TW/LC_MESSAGES/yelp.mo
share/locale/zu/LC_MESSAGES/yelp.mo
+share/metainfo/yelp.appdata.xml
%%DATADIR%%-xsl/xslt/common/domains/yelp.xml
%%DATADIR%%/dtd/catalog
%%DATADIR%%/dtd/docbookx.dtd
diff --git a/x11/zenity/Makefile b/x11/zenity/Makefile
index 080e7ebe5de3..1e81d845aa54 100644
--- a/x11/zenity/Makefile
+++ b/x11/zenity/Makefile
@@ -2,10 +2,10 @@
# $FreeBSD$
PORTNAME= zenity
-PORTVERSION= 3.18.0
+PORTVERSION= 3.28.1
CATEGORIES= x11 gnome
MASTER_SITES= GNOME
-DIST_SUBDIR= gnome3
+DIST_SUBDIR= gnome
MAINTAINER= gnome@FreeBSD.org
COMMENT= Display GNOME dialogs from the command line
@@ -16,12 +16,12 @@ BUILD_DEPENDS= itstool:textproc/itstool
CONFLICTS= gtkada-1.2.* zenity-2.*
-USES= gettext gmake gnome pathfix pkgconfig perl5 tar:xz
-USE_GNOME= gnomeprefix gtk30 intlhack
+USES= gettext gmake gnome localbase pathfix pkgconfig \
+ perl5 tar:xz
+USE_GNOME= cairo gdkpixbuf2 gnomeprefix gtk30 intlhack
USE_XORG= x11
GNU_CONFIGURE= yes
-CPPFLAGS+= -I${LOCALBASE}/include
-LDFLAGS+= -L${LOCALBASE}/lib
+CONFIGURE_ARGS= --disable-webkitgtk
OPTIONS_DEFINE= NOTIFY
OPTIONS_DEFAULT=NOTIFY
diff --git a/x11/zenity/distinfo b/x11/zenity/distinfo
index c11941ac22b2..d5a0601488ef 100644
--- a/x11/zenity/distinfo
+++ b/x11/zenity/distinfo
@@ -1,2 +1,3 @@
-SHA256 (gnome3/zenity-3.18.0.tar.xz) = 0efafea95a830f3bf6eca805ff4a8008df760a6ad3e81181b9473dcf721c3a69
-SIZE (gnome3/zenity-3.18.0.tar.xz) = 3876564
+TIMESTAMP = 1525379738
+SHA256 (gnome/zenity-3.28.1.tar.xz) = db179354721fb4e2d5c418e0dc41f09c831a6b2dd440e33f7743dfc266de8a6b
+SIZE (gnome/zenity-3.28.1.tar.xz) = 4458404
diff --git a/x11/zenity/pkg-plist b/x11/zenity/pkg-plist
index ebd99514e5cb..31a8dfa42002 100644
--- a/x11/zenity/pkg-plist
+++ b/x11/zenity/pkg-plist
@@ -13,6 +13,7 @@ share/help/C/zenity/figures/zenity-fileselection-screenshot.png
share/help/C/zenity/figures/zenity-forms-screenshot.png
share/help/C/zenity/figures/zenity-information-screenshot.png
share/help/C/zenity/figures/zenity-list-screenshot.png
+share/help/C/zenity/figures/zenity-notification-listen-screenshot.png
share/help/C/zenity/figures/zenity-notification-screenshot.png
share/help/C/zenity/figures/zenity-password-screenshot.png
share/help/C/zenity/figures/zenity-progress-screenshot.png
@@ -48,6 +49,7 @@ share/help/bg/zenity/figures/zenity-fileselection-screenshot.png
share/help/bg/zenity/figures/zenity-forms-screenshot.png
share/help/bg/zenity/figures/zenity-information-screenshot.png
share/help/bg/zenity/figures/zenity-list-screenshot.png
+share/help/bg/zenity/figures/zenity-notification-listen-screenshot.png
share/help/bg/zenity/figures/zenity-notification-screenshot.png
share/help/bg/zenity/figures/zenity-password-screenshot.png
share/help/bg/zenity/figures/zenity-progress-screenshot.png
@@ -83,6 +85,7 @@ share/help/ca/zenity/figures/zenity-fileselection-screenshot.png
share/help/ca/zenity/figures/zenity-forms-screenshot.png
share/help/ca/zenity/figures/zenity-information-screenshot.png
share/help/ca/zenity/figures/zenity-list-screenshot.png
+share/help/ca/zenity/figures/zenity-notification-listen-screenshot.png
share/help/ca/zenity/figures/zenity-notification-screenshot.png
share/help/ca/zenity/figures/zenity-password-screenshot.png
share/help/ca/zenity/figures/zenity-progress-screenshot.png
@@ -118,6 +121,7 @@ share/help/cs/zenity/figures/zenity-fileselection-screenshot.png
share/help/cs/zenity/figures/zenity-forms-screenshot.png
share/help/cs/zenity/figures/zenity-information-screenshot.png
share/help/cs/zenity/figures/zenity-list-screenshot.png
+share/help/cs/zenity/figures/zenity-notification-listen-screenshot.png
share/help/cs/zenity/figures/zenity-notification-screenshot.png
share/help/cs/zenity/figures/zenity-password-screenshot.png
share/help/cs/zenity/figures/zenity-progress-screenshot.png
@@ -153,6 +157,7 @@ share/help/da/zenity/figures/zenity-fileselection-screenshot.png
share/help/da/zenity/figures/zenity-forms-screenshot.png
share/help/da/zenity/figures/zenity-information-screenshot.png
share/help/da/zenity/figures/zenity-list-screenshot.png
+share/help/da/zenity/figures/zenity-notification-listen-screenshot.png
share/help/da/zenity/figures/zenity-notification-screenshot.png
share/help/da/zenity/figures/zenity-password-screenshot.png
share/help/da/zenity/figures/zenity-progress-screenshot.png
@@ -188,6 +193,7 @@ share/help/de/zenity/figures/zenity-fileselection-screenshot.png
share/help/de/zenity/figures/zenity-forms-screenshot.png
share/help/de/zenity/figures/zenity-information-screenshot.png
share/help/de/zenity/figures/zenity-list-screenshot.png
+share/help/de/zenity/figures/zenity-notification-listen-screenshot.png
share/help/de/zenity/figures/zenity-notification-screenshot.png
share/help/de/zenity/figures/zenity-password-screenshot.png
share/help/de/zenity/figures/zenity-progress-screenshot.png
@@ -223,6 +229,7 @@ share/help/el/zenity/figures/zenity-fileselection-screenshot.png
share/help/el/zenity/figures/zenity-forms-screenshot.png
share/help/el/zenity/figures/zenity-information-screenshot.png
share/help/el/zenity/figures/zenity-list-screenshot.png
+share/help/el/zenity/figures/zenity-notification-listen-screenshot.png
share/help/el/zenity/figures/zenity-notification-screenshot.png
share/help/el/zenity/figures/zenity-password-screenshot.png
share/help/el/zenity/figures/zenity-progress-screenshot.png
@@ -258,6 +265,7 @@ share/help/en_GB/zenity/figures/zenity-fileselection-screenshot.png
share/help/en_GB/zenity/figures/zenity-forms-screenshot.png
share/help/en_GB/zenity/figures/zenity-information-screenshot.png
share/help/en_GB/zenity/figures/zenity-list-screenshot.png
+share/help/en_GB/zenity/figures/zenity-notification-listen-screenshot.png
share/help/en_GB/zenity/figures/zenity-notification-screenshot.png
share/help/en_GB/zenity/figures/zenity-password-screenshot.png
share/help/en_GB/zenity/figures/zenity-progress-screenshot.png
@@ -293,6 +301,7 @@ share/help/es/zenity/figures/zenity-fileselection-screenshot.png
share/help/es/zenity/figures/zenity-forms-screenshot.png
share/help/es/zenity/figures/zenity-information-screenshot.png
share/help/es/zenity/figures/zenity-list-screenshot.png
+share/help/es/zenity/figures/zenity-notification-listen-screenshot.png
share/help/es/zenity/figures/zenity-notification-screenshot.png
share/help/es/zenity/figures/zenity-password-screenshot.png
share/help/es/zenity/figures/zenity-progress-screenshot.png
@@ -328,6 +337,7 @@ share/help/eu/zenity/figures/zenity-fileselection-screenshot.png
share/help/eu/zenity/figures/zenity-forms-screenshot.png
share/help/eu/zenity/figures/zenity-information-screenshot.png
share/help/eu/zenity/figures/zenity-list-screenshot.png
+share/help/eu/zenity/figures/zenity-notification-listen-screenshot.png
share/help/eu/zenity/figures/zenity-notification-screenshot.png
share/help/eu/zenity/figures/zenity-password-screenshot.png
share/help/eu/zenity/figures/zenity-progress-screenshot.png
@@ -363,6 +373,7 @@ share/help/fi/zenity/figures/zenity-fileselection-screenshot.png
share/help/fi/zenity/figures/zenity-forms-screenshot.png
share/help/fi/zenity/figures/zenity-information-screenshot.png
share/help/fi/zenity/figures/zenity-list-screenshot.png
+share/help/fi/zenity/figures/zenity-notification-listen-screenshot.png
share/help/fi/zenity/figures/zenity-notification-screenshot.png
share/help/fi/zenity/figures/zenity-password-screenshot.png
share/help/fi/zenity/figures/zenity-progress-screenshot.png
@@ -398,6 +409,7 @@ share/help/fr/zenity/figures/zenity-fileselection-screenshot.png
share/help/fr/zenity/figures/zenity-forms-screenshot.png
share/help/fr/zenity/figures/zenity-information-screenshot.png
share/help/fr/zenity/figures/zenity-list-screenshot.png
+share/help/fr/zenity/figures/zenity-notification-listen-screenshot.png
share/help/fr/zenity/figures/zenity-notification-screenshot.png
share/help/fr/zenity/figures/zenity-password-screenshot.png
share/help/fr/zenity/figures/zenity-progress-screenshot.png
@@ -433,6 +445,7 @@ share/help/gl/zenity/figures/zenity-fileselection-screenshot.png
share/help/gl/zenity/figures/zenity-forms-screenshot.png
share/help/gl/zenity/figures/zenity-information-screenshot.png
share/help/gl/zenity/figures/zenity-list-screenshot.png
+share/help/gl/zenity/figures/zenity-notification-listen-screenshot.png
share/help/gl/zenity/figures/zenity-notification-screenshot.png
share/help/gl/zenity/figures/zenity-password-screenshot.png
share/help/gl/zenity/figures/zenity-progress-screenshot.png
@@ -468,6 +481,7 @@ share/help/hu/zenity/figures/zenity-fileselection-screenshot.png
share/help/hu/zenity/figures/zenity-forms-screenshot.png
share/help/hu/zenity/figures/zenity-information-screenshot.png
share/help/hu/zenity/figures/zenity-list-screenshot.png
+share/help/hu/zenity/figures/zenity-notification-listen-screenshot.png
share/help/hu/zenity/figures/zenity-notification-screenshot.png
share/help/hu/zenity/figures/zenity-password-screenshot.png
share/help/hu/zenity/figures/zenity-progress-screenshot.png
@@ -503,6 +517,7 @@ share/help/ja/zenity/figures/zenity-fileselection-screenshot.png
share/help/ja/zenity/figures/zenity-forms-screenshot.png
share/help/ja/zenity/figures/zenity-information-screenshot.png
share/help/ja/zenity/figures/zenity-list-screenshot.png
+share/help/ja/zenity/figures/zenity-notification-listen-screenshot.png
share/help/ja/zenity/figures/zenity-notification-screenshot.png
share/help/ja/zenity/figures/zenity-password-screenshot.png
share/help/ja/zenity/figures/zenity-progress-screenshot.png
@@ -538,6 +553,7 @@ share/help/oc/zenity/figures/zenity-fileselection-screenshot.png
share/help/oc/zenity/figures/zenity-forms-screenshot.png
share/help/oc/zenity/figures/zenity-information-screenshot.png
share/help/oc/zenity/figures/zenity-list-screenshot.png
+share/help/oc/zenity/figures/zenity-notification-listen-screenshot.png
share/help/oc/zenity/figures/zenity-notification-screenshot.png
share/help/oc/zenity/figures/zenity-password-screenshot.png
share/help/oc/zenity/figures/zenity-progress-screenshot.png
@@ -561,6 +577,42 @@ share/help/oc/zenity/scale.page
share/help/oc/zenity/text.page
share/help/oc/zenity/usage.page
share/help/oc/zenity/warning.page
+share/help/pl/zenity/calendar.page
+share/help/pl/zenity/color-selection.page
+share/help/pl/zenity/entry.page
+share/help/pl/zenity/error.page
+share/help/pl/zenity/figures/zenity-calendar-screenshot.png
+share/help/pl/zenity/figures/zenity-colorselection-screenshot.png
+share/help/pl/zenity/figures/zenity-entry-screenshot.png
+share/help/pl/zenity/figures/zenity-error-screenshot.png
+share/help/pl/zenity/figures/zenity-fileselection-screenshot.png
+share/help/pl/zenity/figures/zenity-forms-screenshot.png
+share/help/pl/zenity/figures/zenity-information-screenshot.png
+share/help/pl/zenity/figures/zenity-list-screenshot.png
+share/help/pl/zenity/figures/zenity-notification-listen-screenshot.png
+share/help/pl/zenity/figures/zenity-notification-screenshot.png
+share/help/pl/zenity/figures/zenity-password-screenshot.png
+share/help/pl/zenity/figures/zenity-progress-screenshot.png
+share/help/pl/zenity/figures/zenity-question-screenshot.png
+share/help/pl/zenity/figures/zenity-scale-screenshot.png
+share/help/pl/zenity/figures/zenity-text-screenshot.png
+share/help/pl/zenity/figures/zenity-warning-screenshot.png
+share/help/pl/zenity/file-selection.page
+share/help/pl/zenity/forms.page
+share/help/pl/zenity/index.page
+share/help/pl/zenity/info.page
+share/help/pl/zenity/intro.page
+share/help/pl/zenity/legal.xml
+share/help/pl/zenity/list.page
+share/help/pl/zenity/message.page
+share/help/pl/zenity/notification.page
+share/help/pl/zenity/password.page
+share/help/pl/zenity/progress.page
+share/help/pl/zenity/question.page
+share/help/pl/zenity/scale.page
+share/help/pl/zenity/text.page
+share/help/pl/zenity/usage.page
+share/help/pl/zenity/warning.page
share/help/pt_BR/zenity/calendar.page
share/help/pt_BR/zenity/color-selection.page
share/help/pt_BR/zenity/entry.page
@@ -573,6 +625,7 @@ share/help/pt_BR/zenity/figures/zenity-fileselection-screenshot.png
share/help/pt_BR/zenity/figures/zenity-forms-screenshot.png
share/help/pt_BR/zenity/figures/zenity-information-screenshot.png
share/help/pt_BR/zenity/figures/zenity-list-screenshot.png
+share/help/pt_BR/zenity/figures/zenity-notification-listen-screenshot.png
share/help/pt_BR/zenity/figures/zenity-notification-screenshot.png
share/help/pt_BR/zenity/figures/zenity-password-screenshot.png
share/help/pt_BR/zenity/figures/zenity-progress-screenshot.png
@@ -608,6 +661,7 @@ share/help/ru/zenity/figures/zenity-fileselection-screenshot.png
share/help/ru/zenity/figures/zenity-forms-screenshot.png
share/help/ru/zenity/figures/zenity-information-screenshot.png
share/help/ru/zenity/figures/zenity-list-screenshot.png
+share/help/ru/zenity/figures/zenity-notification-listen-screenshot.png
share/help/ru/zenity/figures/zenity-notification-screenshot.png
share/help/ru/zenity/figures/zenity-password-screenshot.png
share/help/ru/zenity/figures/zenity-progress-screenshot.png
@@ -643,6 +697,7 @@ share/help/sl/zenity/figures/zenity-fileselection-screenshot.png
share/help/sl/zenity/figures/zenity-forms-screenshot.png
share/help/sl/zenity/figures/zenity-information-screenshot.png
share/help/sl/zenity/figures/zenity-list-screenshot.png
+share/help/sl/zenity/figures/zenity-notification-listen-screenshot.png
share/help/sl/zenity/figures/zenity-notification-screenshot.png
share/help/sl/zenity/figures/zenity-password-screenshot.png
share/help/sl/zenity/figures/zenity-progress-screenshot.png
@@ -678,6 +733,7 @@ share/help/sv/zenity/figures/zenity-fileselection-screenshot.png
share/help/sv/zenity/figures/zenity-forms-screenshot.png
share/help/sv/zenity/figures/zenity-information-screenshot.png
share/help/sv/zenity/figures/zenity-list-screenshot.png
+share/help/sv/zenity/figures/zenity-notification-listen-screenshot.png
share/help/sv/zenity/figures/zenity-notification-screenshot.png
share/help/sv/zenity/figures/zenity-password-screenshot.png
share/help/sv/zenity/figures/zenity-progress-screenshot.png
@@ -713,6 +769,7 @@ share/help/uk/zenity/figures/zenity-fileselection-screenshot.png
share/help/uk/zenity/figures/zenity-forms-screenshot.png
share/help/uk/zenity/figures/zenity-information-screenshot.png
share/help/uk/zenity/figures/zenity-list-screenshot.png
+share/help/uk/zenity/figures/zenity-notification-listen-screenshot.png
share/help/uk/zenity/figures/zenity-notification-screenshot.png
share/help/uk/zenity/figures/zenity-password-screenshot.png
share/help/uk/zenity/figures/zenity-progress-screenshot.png
@@ -748,6 +805,7 @@ share/help/zh_CN/zenity/figures/zenity-fileselection-screenshot.png
share/help/zh_CN/zenity/figures/zenity-forms-screenshot.png
share/help/zh_CN/zenity/figures/zenity-information-screenshot.png
share/help/zh_CN/zenity/figures/zenity-list-screenshot.png
+share/help/zh_CN/zenity/figures/zenity-notification-listen-screenshot.png
share/help/zh_CN/zenity/figures/zenity-notification-screenshot.png
share/help/zh_CN/zenity/figures/zenity-password-screenshot.png
share/help/zh_CN/zenity/figures/zenity-progress-screenshot.png
@@ -801,6 +859,7 @@ share/locale/eu/LC_MESSAGES/zenity.mo
share/locale/fa/LC_MESSAGES/zenity.mo
share/locale/fi/LC_MESSAGES/zenity.mo
share/locale/fr/LC_MESSAGES/zenity.mo
+share/locale/fur/LC_MESSAGES/zenity.mo
share/locale/ga/LC_MESSAGES/zenity.mo
share/locale/gl/LC_MESSAGES/zenity.mo
share/locale/gu/LC_MESSAGES/zenity.mo