diff --git a/.gitignore b/.gitignore index a0f7905..c7bce2a 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ -SOURCES/gnome-session-3.26.1.tar.xz +SOURCES/gnome-session-3.28.1.tar.xz +SOURCES/session-properties-icons.tar.xz diff --git a/.gnome-session.metadata b/.gnome-session.metadata index 5f962ac..dd909e3 100644 --- a/.gnome-session.metadata +++ b/.gnome-session.metadata @@ -1 +1,2 @@ -dcb7aca725d43baec706e72e7256ccc88495bb24 SOURCES/gnome-session-3.26.1.tar.xz +3233201cc82fa736997ddee7e54cb7f61c9d0074 SOURCES/gnome-session-3.28.1.tar.xz +6bedaf303cd22f75cbbba43405ea6bdc445d66be SOURCES/session-properties-icons.tar.xz diff --git a/SOURCES/0001-Revert-Remove-all-references-to-gnome-session-proper.patch b/SOURCES/0001-Revert-Remove-all-references-to-gnome-session-proper.patch index 0552108..bade4f1 100644 --- a/SOURCES/0001-Revert-Remove-all-references-to-gnome-session-proper.patch +++ b/SOURCES/0001-Revert-Remove-all-references-to-gnome-session-proper.patch @@ -1,4 +1,4 @@ -From 8ba34a8831751b0825cabbcfc552e14e3510af2b Mon Sep 17 00:00:00 2001 +From 54e4bb8dcd30cc0b9a815fd4e14a5b4efcc184c6 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 8 Mar 2017 14:08:09 -0500 Subject: [PATCH 01/19] Revert "Remove all references to @@ -6,1854 +6,79 @@ Subject: [PATCH 01/19] Revert "Remove all references to This reverts commit 0c6fe6ca14b65cdfc1cd039a5cc9cb83ea346d6b. --- - configure.ac | 8 + - data/Makefile.am | 5 +- - data/icons/16x16/Makefile.am | 28 ++ - data/icons/16x16/session-properties.png | Bin 0 -> 595 bytes - data/icons/16x16/session-properties.svg | 394 ++++++++++++++++ - data/icons/22x22/Makefile.am | 27 ++ - data/icons/22x22/session-properties.png | Bin 0 -> 754 bytes - data/icons/22x22/session-properties.svg | 440 ++++++++++++++++++ - data/icons/24x24/Makefile.am | 25 + - data/icons/24x24/session-properties.png | Bin 0 -> 784 bytes - data/icons/32x32/Makefile.am | 27 ++ - data/icons/32x32/session-properties.png | Bin 0 -> 1109 bytes - data/icons/32x32/session-properties.svg | 490 ++++++++++++++++++++ - data/icons/48x48/Makefile.am | 25 + - data/icons/48x48/session-properties.png | Bin 0 -> 1839 bytes - data/icons/Makefile.am | 3 + - data/icons/scalable/Makefile.am | 25 + - data/icons/scalable/session-properties.svg | 515 +++++++++++++++++++++ - data/icons/symbolic/Makefile.am | 25 + - .../icons/symbolic/session-properties-symbolic.svg | 28 ++ - data/session-properties.ui | 323 +++++++++++++ - doc/man/gnome-session.1 | 2 + - po/POTFILES.in | 1 + - 23 files changed, 2390 insertions(+), 1 deletion(-) - create mode 100644 data/icons/16x16/Makefile.am + data/icons/16x16/session-properties.png | Bin 0 -> 595 bytes + data/icons/22x22/session-properties.png | Bin 0 -> 754 bytes + data/icons/24x24/session-properties.png | Bin 0 -> 784 bytes + data/icons/32x32/session-properties.png | Bin 0 -> 1109 bytes + data/icons/48x48/session-properties.png | Bin 0 -> 1839 bytes + data/icons/meson.build | 24 + + data/icons/scalable/session-properties.svg | 515 ++++++++++++++++++ + .../symbolic/session-properties-symbolic.svg | 28 + + data/meson.build | 3 + + data/session-properties.ui | 323 +++++++++++ + doc/man/gnome-session.1 | 2 + + po/POTFILES.in | 1 + + 12 files changed, 896 insertions(+) create mode 100644 data/icons/16x16/session-properties.png - create mode 100644 data/icons/16x16/session-properties.svg - create mode 100644 data/icons/22x22/Makefile.am create mode 100644 data/icons/22x22/session-properties.png - create mode 100644 data/icons/22x22/session-properties.svg - create mode 100644 data/icons/24x24/Makefile.am create mode 100644 data/icons/24x24/session-properties.png - create mode 100644 data/icons/32x32/Makefile.am create mode 100644 data/icons/32x32/session-properties.png - create mode 100644 data/icons/32x32/session-properties.svg - create mode 100644 data/icons/48x48/Makefile.am create mode 100644 data/icons/48x48/session-properties.png - create mode 100644 data/icons/Makefile.am - create mode 100644 data/icons/scalable/Makefile.am + create mode 100644 data/icons/meson.build create mode 100644 data/icons/scalable/session-properties.svg - create mode 100644 data/icons/symbolic/Makefile.am create mode 100644 data/icons/symbolic/session-properties-symbolic.svg create mode 100644 data/session-properties.ui -diff --git a/configure.ac b/configure.ac -index ec41462e..f57dcf3d 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -343,60 +343,68 @@ if test $enable_ipv6 = yes; then - dnl ================================================================= - dnl Now we would check for specific function like getaddrinfo. - dnl ================================================================= - have_getaddrinfo=no - if test $have_ipv6=yes; then - AC_CHECK_FUNC(getaddrinfo, have_getaddrinfo=yes) - if test $have_getaddrinfo != yes; then - # getaddrinfo is not in the default libraries. See if it's in some other. - for lib in bsd socket inet; do - AC_CHECK_LIB($lib, getaddrinfo, [LIBS="$LIBS -l$lib";have_getaddrinfo=yes; break]) - done - fi - if test $have_getaddrinfo=yes; then - AC_DEFINE(ENABLE_IPV6, 1, [Define if IPV6 is supported]) - have_full_ipv6=yes - fi - fi - fi - dnl ============================================================================== - dnl End of IPv6 checks - dnl ============================================================================== - - AC_CONFIG_FILES([ - Makefile - doc/Makefile - doc/dbus/Makefile - doc/dbus/gnome-session.xml - doc/man/Makefile - data/Makefile - data/org.gnome.SessionManager.gschema.xml -+data/icons/Makefile -+data/icons/16x16/Makefile -+data/icons/22x22/Makefile -+data/icons/24x24/Makefile -+data/icons/32x32/Makefile -+data/icons/48x48/Makefile -+data/icons/scalable/Makefile -+data/icons/symbolic/Makefile - gnome-session/Makefile - tools/Makefile - po/Makefile.in - ]) - AC_OUTPUT - - dnl --------------------------------------------------------------------------- - dnl - Show summary - dnl --------------------------------------------------------------------------- - - echo " - gnome-session $VERSION - `echo gnome-session $VERSION | sed "s/./=/g"` - - prefix: ${prefix} - exec_prefix: ${exec_prefix} - libdir: ${libdir} - bindir: ${bindir} - sbindir: ${sbindir} - sysconfdir: ${sysconfdir} - localstatedir: ${localstatedir} - datadir: ${datadir} - source code location: ${srcdir} - compiler: ${CC} - cflags: ${CFLAGS} - Maintainer mode: ${USE_MAINTAINER_MODE} - Use *_DISABLE_DEPRECATED: ${enable_deprecation_flags} - - GConf support: ${enable_gconf} - Session tracking: ${session_tracking} -diff --git a/data/Makefile.am b/data/Makefile.am -index d8c45573..413279a2 100644 ---- a/data/Makefile.am -+++ b/data/Makefile.am -@@ -1,32 +1,35 @@ -+SUBDIRS = icons -+ - uidir = $(pkgdatadir) --ui_DATA = -+ui_DATA = \ -+ session-properties.ui - - if BUILD_SESSION_SELECTOR - ui_DATA += session-selector.ui - endif - - hwcompatdir = $(pkgdatadir) - hwcompat_DATA = hardware-compatibility - - xsessiondir = $(datadir)/xsessions - xsession_in_files = gnome.desktop.in gnome-xorg.desktop.in - - if BUILD_SESSION_SELECTOR - xsession_in_files += gnome-custom-session.desktop.in - endif - - xsession_DATA = $(xsession_in_files:.desktop.in=.desktop) - - wayland_sessiondir = $(datadir)/wayland-sessions - wayland_session_in_files = gnome.desktop.in - wayland_session_DATA = $(wayland_session_in_files:.desktop.in=.desktop) - - sessiondir = $(datadir)/gnome-session/sessions - session_in_in_files = gnome.session.desktop.in.in gnome-dummy.session.desktop.in.in - session_in_files = $(session_in_in_files:.session.desktop.in.in=.session.desktop.in) - session_DATA = $(session_in_files:.session.desktop.in=.session) - - %.session.desktop.in: %.session.desktop.in.in Makefile - $(AM_V_GEN)sed \ - -e "s|\@LIBEXECDIR\@|$(libexecdir)|" \ - $< > $@ -diff --git a/data/icons/16x16/Makefile.am b/data/icons/16x16/Makefile.am -new file mode 100644 -index 00000000..d338f4c3 ---- /dev/null -+++ b/data/icons/16x16/Makefile.am -@@ -0,0 +1,28 @@ -+size = 16x16 -+ -+themedir = $(datadir)/icons/hicolor -+iconsdir = $(themedir)/$(size)/apps -+ -+icons_DATA = session-properties.png -+icons_SOURCE = session-properties.svg -+ -+gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor -+ -+install-data-hook: -+ @-if test -z "$(DESTDIR)"; then \ -+ echo "Updating Gtk icon cache."; \ -+ $(gtk_update_icon_cache); \ -+ else \ -+ echo "*** Icon cache not updated. After install, run this:"; \ -+ echo "*** $(gtk_update_icon_cache)"; \ -+ fi -+ -+uninstall-hook: -+ @rm -f $(DESTDIR)$(themedir)/icon-theme.cache -+ -+ -+EXTRA_DIST = \ -+ $(icons_DATA) \ -+ $(icons_SOURCE) -+ -+-include $(top_srcdir)/git.mk -diff --git a/data/icons/16x16/session-properties.png b/data/icons/16x16/session-properties.png -new file mode 100644 -index 0000000000000000000000000000000000000000..1367c20ae73a8b5e73d98f5dbcb6341cd0dc9ebe -GIT binary patch -literal 595 -zcmV-Z0<8UsP)5liy2|Q5eTR&-=cox8c~2 -zT2`*8E+SB&p~E)2@g|62&LHY4vde`2fUqAIbrnQ(5fMsI5DdE5O+<8)3nGl7Xd(&* -zq1IM`>7Zrq{n5poPS>=at8;js&-a|~^PD4B?+lHE1HU`?hY%420RcqF7tApudZ4MJ -zE8c~s=~abwC6-r?>+t&Bt7c<7Zxa4AL0x8@n8=B3Jba!bXKlr@-Brn-Gw*5G6{!mw -zx-k6mv!wxSGPJ6c%lz0AW=9{ddwPY@08FFo-*qhJvS~b}{D#-BFh)hqDJ?Mn;Sqax -z1UY%4pUYP+GX3;gE$H#$@o&f6A6pS{7YqD&bD!wJR(gAqhzK`t+(Oedlu{Umfl>;k -z6vbkZ$&Zr^-W$Se?b9@IZQiD@6K)K0JlTuXpCJG~pO5yocFvyeBealJnkzc71Mt88Ig(;l`&`*@Z~@%7txx)TWoE?xL5*x>ck8IN-~-nr5P)6mg9 -zK7!FRjAql!4BiEV-A4y%1ngf0M#hJkno0pnV_cr8VG@X(V$SseZVe2edwlqtk5MQt -z;yTunfU0^(A_Q7`2)1_DZ-59bhmMpjh+r#S^hDdv)kSOfYppnq%x;cY66;Uhwo3Ln -haR2i^x#&uN@CTAjj`{aKg8l#i002ovPDHLkV1gZB6^{S_ - -literal 0 -HcmV?d00001 - -diff --git a/data/icons/16x16/session-properties.svg b/data/icons/16x16/session-properties.svg -new file mode 100644 -index 00000000..4f7c37f2 ---- /dev/null -+++ b/data/icons/16x16/session-properties.svg -@@ -0,0 +1,394 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ image/svg+xml -+ -+ -+ -+ Jakub Steiner -+ -+ -+ http://jimmac.musichall.cz -+ -+ Gnome Session Properties -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/data/icons/22x22/Makefile.am b/data/icons/22x22/Makefile.am -new file mode 100644 -index 00000000..ae4931c2 ---- /dev/null -+++ b/data/icons/22x22/Makefile.am -@@ -0,0 +1,27 @@ -+size = 22x22 -+ -+themedir = $(datadir)/icons/hicolor -+iconsdir = $(themedir)/$(size)/apps -+ -+icons_DATA = session-properties.png -+icons_SOURCE = session-properties.svg -+ -+gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor -+ -+install-data-hook: -+ @-if test -z "$(DESTDIR)"; then \ -+ echo "Updating Gtk icon cache."; \ -+ $(gtk_update_icon_cache); \ -+ else \ -+ echo "*** Icon cache not updated. After install, run this:"; \ -+ echo "*** $(gtk_update_icon_cache)"; \ -+ fi -+ -+uninstall-hook: -+ @rm -f $(DESTDIR)$(themedir)/icon-theme.cache -+ -+EXTRA_DIST = \ -+ $(icons_DATA) \ -+ $(icons_SOURCE) -+ -+-include $(top_srcdir)/git.mk -diff --git a/data/icons/22x22/session-properties.png b/data/icons/22x22/session-properties.png -new file mode 100644 -index 0000000000000000000000000000000000000000..12225ee3c2abb7f1a4be7bb77743514cde5d08fe -GIT binary patch -literal 754 -zcmV*lgmp~Q5?rV=iJ8}9cNN| -z*^7v%7U@C>t-#cZ78aG(u1!U>>3?Wdi-=qVy&!035MdZp6cK`;6=)9%L}*o1+QXS< -zrhDh!x%ag2IgaI2wCD>54nNNCbAIQ0en0p}5&)+zUwyJH?$rySe=k`GKp@08Dn#(^ -zvwipEi6gtkmW~@G9owqD*VWWd-ZLw?sM;o^8GQX*Z?0{SrZk|A?`$gdTK -zaDO0~126$@_KpOjxkYBE3$4&W4q=!@f;D|lKLr4CGH98FJQi}5Oa^mqgu~>{)EJidMMJYuj62Y=848xeJ -z7{D+L1iH`)Q^hH(Zs*Q}TLfW9+rIrAJ$4v9M}N;&M3t~^?Yf_TUfIGGi0XFkJ?vs^ -zYz(b6)`qru!Jd<3_)R}Lm(2&;GX^ADxg2T^@_4WdfT}ec=LG{SSQ+D0UpJ69dHDkp -zt*9bia{#F-ih=@c+|kzyj@OzrDW#WF~*C6j%({ -kfc1x54{(9eiT!`39~bB4p9yeF3;+NC07*qoM6N<$f(k-YiU0rr - -literal 0 -HcmV?d00001 - -diff --git a/data/icons/22x22/session-properties.svg b/data/icons/22x22/session-properties.svg -new file mode 100644 -index 00000000..1d0afda2 ---- /dev/null -+++ b/data/icons/22x22/session-properties.svg -@@ -0,0 +1,440 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ image/svg+xml -+ -+ -+ -+ Jakub Steiner -+ -+ -+ http://jimmac.musichall.cz -+ -+ Gnome Session Properties -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/data/icons/24x24/Makefile.am b/data/icons/24x24/Makefile.am -new file mode 100644 -index 00000000..8c28888a ---- /dev/null -+++ b/data/icons/24x24/Makefile.am -@@ -0,0 +1,25 @@ -+size = 24x24 -+ -+themedir = $(datadir)/icons/hicolor -+iconsdir = $(themedir)/$(size)/apps -+ -+icons_DATA = session-properties.png -+ -+gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor -+ -+install-data-hook: -+ @-if test -z "$(DESTDIR)"; then \ -+ echo "Updating Gtk icon cache."; \ -+ $(gtk_update_icon_cache); \ -+ else \ -+ echo "*** Icon cache not updated. After install, run this:"; \ -+ echo "*** $(gtk_update_icon_cache)"; \ -+ fi -+ -+uninstall-hook: -+ @rm -f $(DESTDIR)$(themedir)/icon-theme.cache -+ -+EXTRA_DIST = \ -+ $(icons_DATA) -+ -+-include $(top_srcdir)/git.mk -diff --git a/data/icons/24x24/session-properties.png b/data/icons/24x24/session-properties.png -new file mode 100644 -index 0000000000000000000000000000000000000000..ac81c7ad3b604a056ed02c86bcb2db97c78f4aed -GIT binary patch -literal 784 -zcmV+r1MmEaP)KPZr(RZ;%TnP#T<=Dm6Ew$M?>9B0Z^(18c%aCzU)J?GqWFZ}B! -zvd+01w_dJ}IQ2rPKNAoF5C}0P=Og$s9(Z*2%!z|DfSs4`mR#Ob^|P+FelBy4NYVQQ -z6oVh$s2$rHGyns@86wbI>11TdkWpA{ar1q6G7!&XVmBh%Gb;>V{azyFWe~bi -zBtX&kYRt>V+T2Cc5DSRAjJ&vAbOxr8Bbf^b%v)3$huG^oxQUUX0fEH;ral|`u1##P -zlg5T^f7An0&#i*7P!%&3;P2j#V`BrK2a2i-_1 -ziAJMDA`!yjFyU~RP$-0yl3*~1X`1M|K9d1}uImU?{t_87LTODq51)47`95u}M>u)v -zI7$`1LV~h{>P^*!n_RklEuyBK$ItFFIXQ_^3Ufm23ZXCU1ygSN$Jd)cYW_>H3|I*Svg!SWIe-m}PW%6@u>Ar9X6B0{qPS!L -O0000jOCUOrWQ}?uexLlr3kGN|uWD_;#<|u5RK) -zY+`Mgak=WxnI0e^pt9nCR9kxlwNy<@njb{gPyyI%>YIck8xnvI;QB91>{F*GDcX}0 -z$O=7X^4Y)wNdc3yI{oAS4tWAH_omhWkdh{;@Y3f^@8I$|jizODC^81o)xt8D1ehy5 -zUbp}NqN_AFHy6a;+uIAJ+5J2P_+$w%lN)C)4`SPPPQ*e8&b;$_&O#Gh=>i<8Y};ny -z!CYPfa`jE;N*#fmGFq0!x7}~;nj{{NqbQ0iCRaGQcC3JDn(Txdzuv&MEgD~KO4`yp -z=5BCuB@e@wRsqvAJ;$xvx9Gcmjg^%Zmpz{f_`E70OR0-tSr&$2WCRZ19VQgI%iAYU -zp=p}SN0xJMWKJ&6Mznnd&T;3?ZAM0h>FoG``e*Ais+7+q+~GIOJc4b6LL-cgkJ8%G -zj;`yht*`ULkKgn2;6Tzx2$86Wc$mq!l{y|Xk<<#-kH3~Fz^Te9V01LZ#JvexTiVey -zjc7DV@NkeTmp*rM2;rL3*N~{}`1lx~T>2D6ys~=*48ve_EX3q*leC_0L(?>LT?b%! -zdD)d%k|bnV_8i-LLI{Kq)YR1Sazg{l!w=E~I4*{5+pL6F=>O_V`oH*^SS*$#|EDkv -zgFs+EMV6Kj?^OYS;Nc)APn@Eovkgg-C@syQ$>)f~lPz&+Gwy(0RL0e-R{@AbA}lN{ -z(%IF{xw9VvpzAv2<>js}=t<(ym~7joxVYG5%MdW{Z%FNygZktuQ}>5x@9Nk9> -z%JlRU-4`z)$qo_1HF-i&6l!bh2>AE81SH;OvUg~SKfuA~nwYsiL`PRA7ccZsRu&*E -zsxXTW?n38{#fOW?+6X9R0Kx}Ug1bBIBx3saA>M0wpQgq}Dr=774`zRSIAIzwRv*t3 -z|6`t*t^rg?fFE|QfKx>E^G(cXDt&#|Fr$&Y$N^+u5#`l&)EzyxZSwm7NnnTP9DXP(4sABZyPdr@{r2fTh{@!?W=uHM@4}{@6;R807W=7gCe`9}SA(iEpq7oiO -z;O1aK0wgSLd3LN7*c3o9Pyqx06|jLP3d)=vn_F`P2m^mP4_*aI00qbIxyOhD2C(4} -b^WWlc-6EIuR>CZG00000NkvXXu0mjfn7$9& - -literal 0 -HcmV?d00001 - -diff --git a/data/icons/32x32/session-properties.svg b/data/icons/32x32/session-properties.svg -new file mode 100644 -index 00000000..5bb14559 ---- /dev/null -+++ b/data/icons/32x32/session-properties.svg -@@ -0,0 +1,490 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ image/svg+xml -+ -+ -+ -+ Jakub Steiner -+ -+ -+ http://jimmac.musichall.cz -+ -+ Gnome Session Properties -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff --git a/data/icons/48x48/Makefile.am b/data/icons/48x48/Makefile.am +diff --git a/data/icons/16x16/session-properties.png b/data/icons/16x16/session-properties.png new file mode 100644 -index 00000000..13b0cf36 ---- /dev/null -+++ b/data/icons/48x48/Makefile.am -@@ -0,0 +1,25 @@ -+size = 48x48 -+ -+themedir = $(datadir)/icons/hicolor -+iconsdir = $(themedir)/$(size)/apps -+ -+icons_DATA = session-properties.png -+ -+gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor -+ -+install-data-hook: -+ @-if test -z "$(DESTDIR)"; then \ -+ echo "Updating Gtk icon cache."; \ -+ $(gtk_update_icon_cache); \ -+ else \ -+ echo "*** Icon cache not updated. After install, run this:"; \ -+ echo "*** $(gtk_update_icon_cache)"; \ -+ fi -+ -+uninstall-hook: -+ @rm -f $(DESTDIR)$(themedir)/icon-theme.cache -+ -+EXTRA_DIST = \ -+ $(icons_DATA) -+ -+-include $(top_srcdir)/git.mk -diff --git a/data/icons/48x48/session-properties.png b/data/icons/48x48/session-properties.png +index 00000000..1367c20a +Binary files /dev/null and b/data/icons/16x16/session-properties.png differ +diff --git a/data/icons/22x22/session-properties.png b/data/icons/22x22/session-properties.png new file mode 100644 -index 0000000000000000000000000000000000000000..32c2358ca45a07e86fbb03d75ec4742e8203091a -GIT binary patch -literal 1839 -zcmV+~2hjM5P)o(6r8k8?YI(DKwnU$ -zscQXx?!c!0iv$|d3jp#tKO3Mop|HfdwiG^%(Bv{YDXBhor03QDNj@<7u-QR}Ec -zVmpa1^{zMG*>esLv%B8Q?96WL#>pp*>^W!7Io~(`|9394!WhG?47u3^){9$SfL;3M -z;O`G6Kbf~)=uVkOY^kjqNkSk%G`=sEP%uKzEQ;faSmfJ3{?2z7p+dmQlJnw@ZOKQr -zboJpxqVWlr$ygr&M18@s@xn<$<*n9uUyaL=`79fO>e|+r^U%h+#PIN(` -zwf+>yR5$Xm?ILu%@)` -zg-9uhwY8C)y(IAbTNYs6I=^u3t{u6y{{F2p;AU7h32cP;`LSo46HJUh3X -zZvRKyeM6UVA~)ycly^06ou6a!>?~9YFvjRFfA4pNv(t*do?n2p}$TPH<;fLe87u(KE0yLT^AZk*}0*6iQE9~ua-f+8S=muIbb -zKuXDzN8a3!v=hKjAG<$fyz2Y<2(*wwB~1TszO@GHKyV5P(ej%##xQ+xo{czG2;ub? -zgg_HZ0h-p#X^i33rygsKX-I!Tu)<8NP4nj5w{IWDn2OEc`Vlr}pa(1|D5$lL!p!O5 -zy)mU!xlAdAWnKSX%70_GhCmMpArNAXa+o>qh*K2-r4)yreTE-A{-c&iS0Xfp!aPvf -zQJ6XJ*s&%+DaCV#pXKd$-d; -zc<331hITPJGFl!ypU)GCL;~9e^%;cPX|yH+Ysbd02)M4x^o5TY92{hHWRxpcu9OGg -zv> -zGm9Vj@rlC>4i1&yeCfI60Gw@=7%GY&M(a-23O4IPyFnW-kDJ4Fm{LmqNAV -zCw@C#&iP960GUjNOeW(?Qc4+k`8`uYJRWEJz;=H4{l|Iw(92OLZN^Vf-l|sMS2S#Ac~=D$^%L%j=bXszk(?L(*xc--Ck6e>=n -zl^#$^h0YE)3XbD|R#5yxR+B>h3z-mtN5An+&YV5NYsX)ur>AFK8@7!^{a&bniF3Ie -zU-*O4LoGjaFjEap>&qEQ*){>O~|H2~w$43tzIEeYwy^1YvkR4T>KfB6J6GnYciHVfOf8Q6X&0|TF9;P%hf*H_+DuF^^=(&=>7 -z!|8OIbUIBknIw@&aO%`wszeAOn3=i6gAa_<4WzYZYHEu4)Noy0Fbr2N`t)hvwsyxhoJgWY -z`UXs#LLtpU_5vr~II&h$E1-1RnTzd&*v^1n4Q}T(Ru|^T&d+dc@&q9G+QScf^>;st -zW!3LSEug=yG#FYd3hpY`vPh9&^)K~^yN(mwIwh+PwqRX?>FTU}&-d}zFft|5?ZtrNRV`B{Y)vYWpTt#pXUA=wS -z_Vt~}f{@9%96$4cTFERP1EN6G#`_qjKAd{$6)Au6nUDT^`CA&RtM%>;Mk|cgNISxY -zrcn_By^>qJ^rw$cjZXjtU{x4n5JE(NE}*@5C4e@-#S_@tI4yr3ZU_ye0R`lNERX?~ -zfLUXVCjcnzuiNkhwBdzF7aMLSl0_aao`5A_#T1DPzio0+j07;oY}#(E$iu>ms5U-i -deFfY~_&?#hc%)mzygmQ`002ovPDHLkV1i5*a;5+P - -literal 0 -HcmV?d00001 - -diff --git a/data/icons/Makefile.am b/data/icons/Makefile.am +index 00000000..12225ee3 +Binary files /dev/null and b/data/icons/22x22/session-properties.png differ +diff --git a/data/icons/24x24/session-properties.png b/data/icons/24x24/session-properties.png new file mode 100644 -index 00000000..8b6c5491 ---- /dev/null -+++ b/data/icons/Makefile.am -@@ -0,0 +1,3 @@ -+SUBDIRS = 16x16 22x22 24x24 32x32 48x48 scalable symbolic -+ -+-include $(top_srcdir)/git.mk -diff --git a/data/icons/scalable/Makefile.am b/data/icons/scalable/Makefile.am +index 00000000..ac81c7ad +Binary files /dev/null and b/data/icons/24x24/session-properties.png differ +diff --git a/data/icons/32x32/session-properties.png b/data/icons/32x32/session-properties.png new file mode 100644 -index 00000000..4ff67b7b +index 00000000..25df9d36 +Binary files /dev/null and b/data/icons/32x32/session-properties.png differ +diff --git a/data/icons/48x48/session-properties.png b/data/icons/48x48/session-properties.png +new file mode 100644 +index 00000000..32c2358c +Binary files /dev/null and b/data/icons/48x48/session-properties.png differ +diff --git a/data/icons/meson.build b/data/icons/meson.build +new file mode 100644 +index 00000000..e653dfa9 --- /dev/null -+++ b/data/icons/scalable/Makefile.am -@@ -0,0 +1,25 @@ -+size = scalable -+ -+themedir = $(datadir)/icons/hicolor -+iconsdir = $(themedir)/$(size)/apps ++++ b/data/icons/meson.build +@@ -0,0 +1,24 @@ ++icons = [ ++ '16x16', ++ '22x22', ++ '24x24', ++ '32x32', ++ '48x48' ++] + -+icons_DATA = session-properties.svg ++foreach icon: icons ++ install_data( ++ join_paths(icon, 'session-properties.png'), ++ install_dir: join_paths(session_datadir, 'icons', 'hicolor', icon, 'apps') ++ ) ++endforeach + -+gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor ++install_data( ++ 'scalable/session-properties.svg', ++ install_dir: join_paths(session_datadir, 'icons', 'hicolor', 'scalable', 'apps') ++) + -+install-data-hook: -+ @-if test -z "$(DESTDIR)"; then \ -+ echo "Updating Gtk icon cache."; \ -+ $(gtk_update_icon_cache); \ -+ else \ -+ echo "*** Icon cache not updated. After install, run this:"; \ -+ echo "*** $(gtk_update_icon_cache)"; \ -+ fi -+ -+uninstall-hook: -+ @rm -f $(DESTDIR)$(themedir)/icon-theme.cache -+ -+EXTRA_DIST = \ -+ $(icons_DATA) -+ -+-include $(top_srcdir)/git.mk ++install_data( ++ 'symbolic/session-properties-symbolic.svg', ++ install_dir: join_paths(session_datadir, 'icons', 'hicolor', 'symbolic', 'apps') ++) diff --git a/data/icons/scalable/session-properties.svg b/data/icons/scalable/session-properties.svg new file mode 100644 index 00000000..cec2c39e @@ -2375,40 +600,9 @@ index 00000000..cec2c39e + style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:evenodd;stroke:url(#linearGradient5604);stroke-width:1;stroke-linecap:square;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" /> + + -diff --git a/data/icons/symbolic/Makefile.am b/data/icons/symbolic/Makefile.am -new file mode 100644 -index 00000000..670d0a5a ---- /dev/null -+++ b/data/icons/symbolic/Makefile.am -@@ -0,0 +1,25 @@ -+size = symbolic -+ -+themedir = $(datadir)/icons/hicolor -+iconsdir = $(themedir)/$(size)/apps -+ -+icons_DATA = session-properties-symbolic.svg -+ -+gtk_update_icon_cache = gtk-update-icon-cache -f -t $(datadir)/icons/hicolor -+ -+install-data-hook: -+ @-if test -z "$(DESTDIR)"; then \ -+ echo "Updating Gtk icon cache."; \ -+ $(gtk_update_icon_cache); \ -+ else \ -+ echo "*** Icon cache not updated. After install, run this:"; \ -+ echo "*** $(gtk_update_icon_cache)"; \ -+ fi -+ -+uninstall-hook: -+ @rm -f $(DESTDIR)$(themedir)/icon-theme.cache -+ -+EXTRA_DIST = \ -+ $(icons_DATA) -+ -+-include $(top_srcdir)/git.mk diff --git a/data/icons/symbolic/session-properties-symbolic.svg b/data/icons/symbolic/session-properties-symbolic.svg new file mode 100644 -index 00000000..e628ecd1 +index 00000000..497fb9d0 --- /dev/null +++ b/data/icons/symbolic/session-properties-symbolic.svg @@ -0,0 +1,28 @@ @@ -2437,9 +631,99 @@ index 00000000..e628ecd1 + + + -+ ++ + + +diff --git a/data/meson.build b/data/meson.build +index 89af98f8..b79a5fbd 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -1,30 +1,32 @@ ++subdir('icons') ++ + desktop = 'gnome.desktop' + + # FIXME: The same target can not be copied into two directories. + # There is a workaround in meson_post_install.py until proper solution arises: + # https://groups.google.com/forum/#!topic/mesonbuild/3iIoYPrN4P0 + i18n.merge_file( + desktop, + type: 'desktop', + input: desktop + '.in', + output: desktop, + po_dir: po_dir, + install: true, + #install_dir: [ + # join_paths(session_datadir, 'xsessions'), + # join_paths(session_datadir, 'wayland-sessions') + #] + install_dir: join_paths(session_datadir, 'xsessions') + ) + + desktop = 'gnome-xorg.desktop' + + i18n.merge_file( + desktop, + type: 'desktop', + input: desktop + '.in', + output: desktop, + po_dir: po_dir, + install: true, + install_dir: join_paths(session_datadir, 'xsessions') + ) +@@ -48,51 +50,52 @@ foreach session: sessions + + i18n.merge_file( + session, + type: 'desktop', + input: desktop_in, + output: session, + po_dir: po_dir, + install: true, + install_dir: join_paths(session_pkgdatadir, 'sessions') + ) + endforeach + + schema_conf = configuration_data() + + schema = 'org.gnome.SessionManager.gschema.xml' + + configure_file( + input: schema + '.in', + output: schema, + install: true, + install_dir: join_paths(session_datadir, 'glib-2.0', 'schemas'), + configuration: schema_conf + ) + + install_data( + 'gnome-session.convert', + install_dir: join_paths(session_datadir, 'GConf', 'gsettings') + ) + + data = files('hardware-compatibility') ++data += files('session-properties.ui') + + if enable_session_selector + data += files('session-selector.ui') + + desktop = 'gnome-custom-session.desktop' + + i18n.merge_file( + desktop, + type: 'desktop', + input: desktop + '.in', + output: desktop, + po_dir: po_dir, + install: true, + install_dir: join_paths(session_datadir, 'xsessions') + ) + endif + + install_data( + data, + install_dir: session_pkgdatadir + ) diff --git a/data/session-properties.ui b/data/session-properties.ui new file mode 100644 index 00000000..1f0cb9a5 @@ -2823,7 +1107,7 @@ index bf9cf808..35c062c5 100644 +.BR gnome-session-properties(1) .BR gnome-session-quit(1) diff --git a/po/POTFILES.in b/po/POTFILES.in -index cc1170aa..76882645 100644 +index 63faf7d7..f32040fc 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,18 +1,19 @@ @@ -2834,8 +1118,8 @@ index cc1170aa..76882645 100644 data/gnome-xorg.desktop.in data/gnome-dummy.session.desktop.in.in data/gnome.session.desktop.in.in - [type: gettext/glade]data/session-selector.ui -+[type: gettext/glade]data/session-properties.ui + data/session-selector.ui ++data/session-properties.ui gnome-session/gsm-fail-whale-dialog.c gnome-session/gsm-manager.c gnome-session/gsm-process-helper.c @@ -2847,5 +1131,5 @@ index cc1170aa..76882645 100644 tools/gnome-session-selector.c tools/gnome-session-quit.c -- -2.14.2 +2.17.0 diff --git a/SOURCES/0001-main-don-t-call-into-gdbus-before-setting-all-enviro.patch b/SOURCES/0001-main-don-t-call-into-gdbus-before-setting-all-enviro.patch index 8c7dcf1..272af62 100644 --- a/SOURCES/0001-main-don-t-call-into-gdbus-before-setting-all-enviro.patch +++ b/SOURCES/0001-main-don-t-call-into-gdbus-before-setting-all-enviro.patch @@ -1,4 +1,4 @@ -From 2c0087930a188684e61e71d5b5459e4363471196 Mon Sep 17 00:00:00 2001 +From 6294629686aed366210806a911016facd82a7fa7 Mon Sep 17 00:00:00 2001 From: rpm-build Date: Wed, 14 Feb 2018 09:50:56 -0500 Subject: [PATCH] main: don't call into gdbus before setting all environment @@ -12,7 +12,7 @@ doing all our setenv() work. 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/gnome-session/main.c b/gnome-session/main.c -index e2c3efe..e7a1614 100644 +index b1ac385..bfcce83 100644 --- a/gnome-session/main.c +++ b/gnome-session/main.c @@ -244,91 +244,96 @@ initialize_gio (void) @@ -91,7 +91,7 @@ index e2c3efe..e7a1614 100644 debug_string = g_getenv ("GNOME_SESSION_DEBUG"); if (debug_string != NULL) { - debug = rpmatch (debug_string) == TRUE || atoi (debug_string) == 1; + debug = atoi (debug_string) == 1; } error = NULL; @@ -109,7 +109,7 @@ index e2c3efe..e7a1614 100644 * journald picks ups the nicer "gnome-session" as the program * name instead of whatever shell script GDM happened to use. */ - #ifdef HAVE_SYSTEMD + #ifdef ENABLE_SYSTEMD_JOURNAL if (!debug) { int journalfd; diff --git a/SOURCES/0001-save-make-sure-app-state-is-written-into-desktop-fil.patch b/SOURCES/0001-save-make-sure-app-state-is-written-into-desktop-fil.patch deleted file mode 100644 index c23dc01..0000000 --- a/SOURCES/0001-save-make-sure-app-state-is-written-into-desktop-fil.patch +++ /dev/null @@ -1,1186 +0,0 @@ -From 5e8c5967d65f61a58241c6429eb79650870fa7d0 Mon Sep 17 00:00:00 2001 -From: Ray Strode -Date: Mon, 27 Nov 2017 15:40:54 -0500 -Subject: [PATCH 1/2] save: make sure app state is written into desktop file - -There are a number of important bits of app state written into -an applications desktop file that needs to be restored when -the session is saved. For instance, the phase in which the client -should get started. - -That state is currently stored on the GsmApp object, which is -inaccessible, from the client save function. - -This commit adds the neccesary plumbing to route the GsmApp object -associated with a client to the client save function, and also -adds code to allow the app object to augment the client keyfile at -save time. - -https://bugzilla.gnome.org/show_bug.cgi?id=790913 - -https://bugzilla.redhat.com/show_bug.cgi?id=1529175 ---- - gnome-session/gsm-app.c | 9 +++++ - gnome-session/gsm-app.h | 8 +++++ - gnome-session/gsm-autostart-app.c | 70 +++++++++++++++++++++++++++++++++++++++ - gnome-session/gsm-client.c | 3 +- - gnome-session/gsm-client.h | 3 ++ - gnome-session/gsm-dbus-client.c | 1 + - gnome-session/gsm-manager.c | 4 +-- - gnome-session/gsm-session-save.c | 41 +++++++++++++++++------ - gnome-session/gsm-session-save.h | 1 + - gnome-session/gsm-xsmp-client.c | 9 +++++ - 10 files changed, 135 insertions(+), 14 deletions(-) - -diff --git a/gnome-session/gsm-app.c b/gnome-session/gsm-app.c -index 845e067a..d1ef89a8 100644 ---- a/gnome-session/gsm-app.c -+++ b/gnome-session/gsm-app.c -@@ -531,30 +531,39 @@ gsm_app_exited (GsmApp *app, - } - - void - gsm_app_died (GsmApp *app, - int signal) - { - g_return_if_fail (GSM_IS_APP (app)); - - g_signal_emit (app, signals[DIED], 0, signal); - } - - gboolean - gsm_app_get_registered (GsmApp *app) - { - g_return_val_if_fail (GSM_IS_APP (app), FALSE); - - return app->priv->registered; - } - - void - gsm_app_set_registered (GsmApp *app, - gboolean registered) - { - g_return_if_fail (GSM_IS_APP (app)); - - if (app->priv->registered != registered) { - app->priv->registered = registered; - g_object_notify (G_OBJECT (app), "registered"); - } - } -+ -+gboolean -+gsm_app_save_to_keyfile (GsmApp *app, -+ GKeyFile *keyfile, -+ GError **error) -+{ -+ g_debug ("Saving app: %s", app->priv->id); -+ return GSM_APP_GET_CLASS (app)->impl_save_to_keyfile (app, keyfile, error); -+} -diff --git a/gnome-session/gsm-app.h b/gnome-session/gsm-app.h -index 14a9f94b..f38b3be4 100644 ---- a/gnome-session/gsm-app.h -+++ b/gnome-session/gsm-app.h -@@ -47,80 +47,88 @@ struct _GsmApp - }; - - struct _GsmAppClass - { - GObjectClass parent_class; - - /* signals */ - void (*exited) (GsmApp *app, - guchar exit_code); - void (*died) (GsmApp *app, - int signal); - - /* virtual methods */ - gboolean (*impl_start) (GsmApp *app, - GError **error); - gboolean (*impl_restart) (GsmApp *app, - GError **error); - gboolean (*impl_stop) (GsmApp *app, - GError **error); - gboolean (*impl_provides) (GsmApp *app, - const char *service); - char ** (*impl_get_provides) (GsmApp *app); - gboolean (*impl_has_autostart_condition) (GsmApp *app, - const char *service); - gboolean (*impl_is_running) (GsmApp *app); - - gboolean (*impl_get_autorestart) (GsmApp *app); - const char *(*impl_get_app_id) (GsmApp *app); - gboolean (*impl_is_disabled) (GsmApp *app); - gboolean (*impl_is_conditionally_disabled) (GsmApp *app); -+ -+ gboolean (*impl_save_to_keyfile) (GsmApp *app, -+ GKeyFile *keyfile, -+ GError **error); - }; - - typedef enum - { - GSM_APP_ERROR_GENERAL = 0, - GSM_APP_ERROR_RESTART_LIMIT, - GSM_APP_ERROR_START, - GSM_APP_ERROR_STOP, - GSM_APP_NUM_ERRORS - } GsmAppError; - - #define GSM_APP_ERROR gsm_app_error_quark () - - GQuark gsm_app_error_quark (void); - GType gsm_app_get_type (void) G_GNUC_CONST; - - gboolean gsm_app_peek_autorestart (GsmApp *app); - - const char *gsm_app_peek_id (GsmApp *app); - const char *gsm_app_peek_app_id (GsmApp *app); - const char *gsm_app_peek_startup_id (GsmApp *app); - GsmManagerPhase gsm_app_peek_phase (GsmApp *app); - gboolean gsm_app_peek_is_disabled (GsmApp *app); - gboolean gsm_app_peek_is_conditionally_disabled (GsmApp *app); - - gboolean gsm_app_start (GsmApp *app, - GError **error); - gboolean gsm_app_restart (GsmApp *app, - GError **error); - gboolean gsm_app_stop (GsmApp *app, - GError **error); - gboolean gsm_app_is_running (GsmApp *app); - - void gsm_app_exited (GsmApp *app, - guchar exit_code); - void gsm_app_died (GsmApp *app, - int signal); - - gboolean gsm_app_provides (GsmApp *app, - const char *service); - char **gsm_app_get_provides (GsmApp *app); - gboolean gsm_app_has_autostart_condition (GsmApp *app, - const char *condition); - gboolean gsm_app_get_registered (GsmApp *app); - void gsm_app_set_registered (GsmApp *app, - gboolean registered); - -+gboolean gsm_app_save_to_keyfile (GsmApp *app, -+ GKeyFile *keyfile, -+ GError **error); -+ - G_END_DECLS - - #endif /* __GSM_APP_H__ */ -diff --git a/gnome-session/gsm-autostart-app.c b/gnome-session/gsm-autostart-app.c -index 870b1516..9eb1db5b 100644 ---- a/gnome-session/gsm-autostart-app.c -+++ b/gnome-session/gsm-autostart-app.c -@@ -1400,86 +1400,156 @@ gsm_autostart_app_get_autorestart (GsmApp *app) - static const char * - gsm_autostart_app_get_app_id (GsmApp *app) - { - if (GSM_AUTOSTART_APP (app)->priv->app_info == NULL) { - return NULL; - } - - return g_app_info_get_id (G_APP_INFO (GSM_AUTOSTART_APP (app)->priv->app_info)); - } - - static gboolean - gsm_autostart_app_initable_init (GInitable *initable, - GCancellable *cancellable, - GError **error) - { - GsmAutostartApp *app = GSM_AUTOSTART_APP (initable); - - g_assert (app->priv->desktop_filename != NULL); - app->priv->app_info = g_desktop_app_info_new_from_filename (app->priv->desktop_filename); - if (app->priv->app_info == NULL) { - g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED, - "Could not parse desktop file %s or it references a not found TryExec binary", app->priv->desktop_id); - return FALSE; - } - - load_desktop_file (app); - - return TRUE; - } - -+static gboolean -+gsm_autostart_app_save_to_keyfile (GsmApp *base_app, -+ GKeyFile *keyfile, -+ GError **error) -+{ -+ GsmAutostartApp *app = GSM_AUTOSTART_APP (base_app); -+ char **provides = NULL; -+ char *dbus_name; -+ char *phase; -+ gboolean res; -+ -+ provides = gsm_app_get_provides (base_app); -+ if (provides != NULL) { -+ g_key_file_set_string_list (keyfile, -+ G_KEY_FILE_DESKTOP_GROUP, -+ GSM_AUTOSTART_APP_PROVIDES_KEY, -+ (const char * const *) -+ provides, -+ g_strv_length (provides)); -+ g_strfreev (provides); -+ } -+ -+ phase = g_desktop_app_info_get_string (app->priv->app_info, -+ GSM_AUTOSTART_APP_PHASE_KEY); -+ if (phase != NULL) { -+ g_key_file_set_string (keyfile, -+ G_KEY_FILE_DESKTOP_GROUP, -+ GSM_AUTOSTART_APP_PHASE_KEY, -+ phase); -+ g_free (phase); -+ } -+ -+ dbus_name = g_desktop_app_info_get_string (app->priv->app_info, -+ GSM_AUTOSTART_APP_DBUS_NAME_KEY); -+ if (dbus_name != NULL) { -+ g_key_file_set_string (keyfile, -+ G_KEY_FILE_DESKTOP_GROUP, -+ GSM_AUTOSTART_APP_DBUS_NAME_KEY, -+ dbus_name); -+ g_free (dbus_name); -+ } -+ -+ res = g_desktop_app_info_has_key (app->priv->app_info, -+ GSM_AUTOSTART_APP_AUTORESTART_KEY); -+ if (res) { -+ g_key_file_set_boolean (keyfile, -+ G_KEY_FILE_DESKTOP_GROUP, -+ GSM_AUTOSTART_APP_AUTORESTART_KEY, -+ g_desktop_app_info_get_boolean (app->priv->app_info, -+ GSM_AUTOSTART_APP_AUTORESTART_KEY)); -+ } -+ -+ res = g_desktop_app_info_has_key (app->priv->app_info, -+ GSM_AUTOSTART_APP_AUTORESTART_KEY); -+ if (res) { -+ char *autostart_condition; -+ -+ autostart_condition = g_desktop_app_info_get_string (app->priv->app_info, "AutostartCondition"); -+ -+ g_key_file_set_string (keyfile, -+ G_KEY_FILE_DESKTOP_GROUP, -+ "AutostartCondition", -+ autostart_condition); -+ g_free (autostart_condition); -+ } -+ -+ return TRUE; -+} -+ - static void - gsm_autostart_app_initable_iface_init (GInitableIface *iface) - { - iface->init = gsm_autostart_app_initable_init; - } - - static void - gsm_autostart_app_class_init (GsmAutostartAppClass *klass) - { - GObjectClass *object_class = G_OBJECT_CLASS (klass); - GsmAppClass *app_class = GSM_APP_CLASS (klass); - - object_class->set_property = gsm_autostart_app_set_property; - object_class->get_property = gsm_autostart_app_get_property; - object_class->dispose = gsm_autostart_app_dispose; - - app_class->impl_is_disabled = is_disabled; - app_class->impl_is_conditionally_disabled = is_conditionally_disabled; - app_class->impl_is_running = is_running; - app_class->impl_start = gsm_autostart_app_start; - app_class->impl_restart = gsm_autostart_app_restart; - app_class->impl_stop = gsm_autostart_app_stop; - app_class->impl_provides = gsm_autostart_app_provides; - app_class->impl_get_provides = gsm_autostart_app_get_provides; - app_class->impl_has_autostart_condition = gsm_autostart_app_has_autostart_condition; - app_class->impl_get_app_id = gsm_autostart_app_get_app_id; - app_class->impl_get_autorestart = gsm_autostart_app_get_autorestart; -+ app_class->impl_save_to_keyfile = gsm_autostart_app_save_to_keyfile; - - g_object_class_install_property (object_class, - PROP_DESKTOP_FILENAME, - g_param_spec_string ("desktop-filename", - "Desktop filename", - "Freedesktop .desktop file", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - signals[CONDITION_CHANGED] = - g_signal_new ("condition-changed", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (GsmAutostartAppClass, condition_changed), - NULL, NULL, NULL, - G_TYPE_NONE, - 1, - G_TYPE_BOOLEAN); - - g_type_class_add_private (object_class, sizeof (GsmAutostartAppPrivate)); - } - - GsmApp * - gsm_autostart_app_new (const char *desktop_file, - GError **error) - { - return (GsmApp*) g_initable_new (GSM_TYPE_AUTOSTART_APP, NULL, error, - "desktop-filename", desktop_file, - NULL); - } -diff --git a/gnome-session/gsm-client.c b/gnome-session/gsm-client.c -index 7b78d9e1..3f216b22 100644 ---- a/gnome-session/gsm-client.c -+++ b/gnome-session/gsm-client.c -@@ -526,47 +526,48 @@ gsm_client_end_session (GsmClient *client, - return GSM_CLIENT_GET_CLASS (client)->impl_end_session (client, flags, error); - } - - gboolean - gsm_client_stop (GsmClient *client, - GError **error) - { - g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE); - - return GSM_CLIENT_GET_CLASS (client)->impl_stop (client, error); - } - - void - gsm_client_disconnected (GsmClient *client) - { - g_signal_emit (client, signals[DISCONNECTED], 0); - } - - gboolean - gsm_client_request_save (GsmClient *client, - guint flags, - GError **error) - { - g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE); - - return GSM_CLIENT_GET_CLASS (client)->impl_request_save (client, flags, error); - } - - GKeyFile * - gsm_client_save (GsmClient *client, -+ GsmApp *app, - GError **error) - { - g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE); - -- return GSM_CLIENT_GET_CLASS (client)->impl_save (client, error); -+ return GSM_CLIENT_GET_CLASS (client)->impl_save (client, app, error); - } - - void - gsm_client_end_session_response (GsmClient *client, - gboolean is_ok, - gboolean do_last, - gboolean cancel, - const char *reason) - { - g_signal_emit (client, signals[END_SESSION_RESPONSE], 0, - is_ok, do_last, cancel, reason); - } -diff --git a/gnome-session/gsm-client.h b/gnome-session/gsm-client.h -index f79896b3..19c9cd8d 100644 ---- a/gnome-session/gsm-client.h -+++ b/gnome-session/gsm-client.h -@@ -6,60 +6,61 @@ - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see . - */ - - #ifndef __GSM_CLIENT_H__ - #define __GSM_CLIENT_H__ - - #include - #include - #include - - G_BEGIN_DECLS - - #define GSM_TYPE_CLIENT (gsm_client_get_type ()) - #define GSM_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GSM_TYPE_CLIENT, GsmClient)) - #define GSM_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GSM_TYPE_CLIENT, GsmClientClass)) - #define GSM_IS_CLIENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GSM_TYPE_CLIENT)) - #define GSM_IS_CLIENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GSM_TYPE_CLIENT)) - #define GSM_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GSM_TYPE_CLIENT, GsmClientClass)) - -+typedef struct _GsmApp GsmApp; - typedef struct _GsmClient GsmClient; - typedef struct _GsmClientClass GsmClientClass; - - typedef struct GsmClientPrivate GsmClientPrivate; - - typedef enum { - GSM_CLIENT_UNREGISTERED = 0, - GSM_CLIENT_REGISTERED, - GSM_CLIENT_FINISHED, - GSM_CLIENT_FAILED - } GsmClientStatus; - - typedef enum { - GSM_CLIENT_RESTART_NEVER = 0, - GSM_CLIENT_RESTART_IF_RUNNING, - GSM_CLIENT_RESTART_ANYWAY, - GSM_CLIENT_RESTART_IMMEDIATELY - } GsmClientRestartStyle; - - typedef enum { - GSM_CLIENT_END_SESSION_FLAG_FORCEFUL = 1 << 0, - GSM_CLIENT_END_SESSION_FLAG_SAVE = 1 << 1, - GSM_CLIENT_END_SESSION_FLAG_LAST = 1 << 2 - } GsmClientEndSessionFlag; - - struct _GsmClient - { - GObject parent; - GsmClientPrivate *priv; - }; -@@ -67,91 +68,93 @@ struct _GsmClient - struct _GsmClientClass - { - GObjectClass parent_class; - - /* signals */ - void (*disconnected) (GsmClient *client); - void (*end_session_response) (GsmClient *client, - gboolean ok, - gboolean do_last, - gboolean cancel, - const char *reason); - - /* virtual methods */ - char * (*impl_get_app_name) (GsmClient *client); - GsmClientRestartStyle (*impl_get_restart_style_hint) (GsmClient *client); - guint (*impl_get_unix_process_id) (GsmClient *client); - gboolean (*impl_query_end_session) (GsmClient *client, - GsmClientEndSessionFlag flags, - GError **error); - gboolean (*impl_end_session) (GsmClient *client, - GsmClientEndSessionFlag flags, - GError **error); - gboolean (*impl_cancel_end_session) (GsmClient *client, - GError **error); - gboolean (*impl_stop) (GsmClient *client, - GError **error); - gboolean (*impl_request_save) (GsmClient *client, - guint flags, - GError **error); - GKeyFile * (*impl_save) (GsmClient *client, -+ GsmApp *app, - GError **error); - }; - - typedef enum - { - GSM_CLIENT_ERROR_GENERAL = 0, - GSM_CLIENT_ERROR_NOT_REGISTERED, - GSM_CLIENT_NUM_ERRORS - } GsmClientError; - - #define GSM_CLIENT_ERROR gsm_client_error_quark () - GQuark gsm_client_error_quark (void); - - GType gsm_client_get_type (void) G_GNUC_CONST; - - const char *gsm_client_peek_id (GsmClient *client); - - - const char * gsm_client_peek_startup_id (GsmClient *client); - const char * gsm_client_peek_app_id (GsmClient *client); - guint gsm_client_peek_restart_style_hint (GsmClient *client); - guint gsm_client_peek_status (GsmClient *client); - - - char *gsm_client_get_app_name (GsmClient *client); - void gsm_client_set_app_id (GsmClient *client, - const char *app_id); - void gsm_client_set_status (GsmClient *client, - guint status); - - gboolean gsm_client_end_session (GsmClient *client, - guint flags, - GError **error); - gboolean gsm_client_query_end_session (GsmClient *client, - guint flags, - GError **error); - gboolean gsm_client_cancel_end_session (GsmClient *client, - GError **error); - - void gsm_client_disconnected (GsmClient *client); - - gboolean gsm_client_request_save (GsmClient *client, - guint flags, - GError **error); - GKeyFile *gsm_client_save (GsmClient *client, -+ GsmApp *app, - GError **error); - - gboolean gsm_client_stop (GsmClient *client, - GError **error); - - /* private */ - - void gsm_client_end_session_response (GsmClient *client, - gboolean is_ok, - gboolean do_last, - gboolean cancel, - const char *reason); - - G_END_DECLS - - #endif /* __GSM_CLIENT_H__ */ -diff --git a/gnome-session/gsm-dbus-client.c b/gnome-session/gsm-dbus-client.c -index 050ea18f..5793f830 100644 ---- a/gnome-session/gsm-dbus-client.c -+++ b/gnome-session/gsm-dbus-client.c -@@ -315,60 +315,61 @@ gsm_dbus_client_finalize (GObject *object) - - if (client->priv->skeleton != NULL) { - g_dbus_interface_skeleton_unexport_from_connection (G_DBUS_INTERFACE_SKELETON (client->priv->skeleton), - client->priv->connection); - g_clear_object (&client->priv->skeleton); - } - - g_clear_object (&client->priv->connection); - - if (client->priv->watch_id != 0) - g_bus_unwatch_name (client->priv->watch_id); - - G_OBJECT_CLASS (gsm_dbus_client_parent_class)->finalize (object); - } - - static gboolean - dbus_client_request_save (GsmClient *client, - guint flags, - GError **error) - { - g_debug ("GsmDBusClient: sending save request to client with id %s", - gsm_client_peek_id (client)); - - /* FIXME: The protocol does not support this */ - - return FALSE; - } - - static GKeyFile * - dbus_client_save (GsmClient *client, -+ GsmApp *app, - GError **error) - { - g_debug ("GsmDBusClient: saving client with id %s", - gsm_client_peek_id (client)); - - /* FIXME: We still don't support client saving for D-Bus - * session clients */ - - return NULL; - } - - static gboolean - dbus_client_stop (GsmClient *client, - GError **error) - { - GsmDBusClient *dbus_client = (GsmDBusClient *) client; - gsm_exported_client_private_emit_stop (dbus_client->priv->skeleton); - return TRUE; - } - - static char * - dbus_client_get_app_name (GsmClient *client) - { - /* Always use app-id instead */ - return NULL; - } - - static GsmClientRestartStyle - dbus_client_get_restart_style_hint (GsmClient *client) - { -diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c -index 29c3054d..e7f0d7f8 100644 ---- a/gnome-session/gsm-manager.c -+++ b/gnome-session/gsm-manager.c -@@ -1260,61 +1260,61 @@ finish_pending_save_invocations (GsmManager *manager) - g_slist_free (manager->priv->pending_save_invocations); - manager->priv->pending_save_invocations = NULL; - } - - static void - query_save_session_complete (GsmManager *manager) - { - GError *error = NULL; - - if (g_slist_length (manager->priv->next_query_clients) > 0) { - ClientEndSessionData data; - - data.manager = manager; - data.flags = GSM_CLIENT_END_SESSION_FLAG_LAST; - - g_slist_foreach (manager->priv->next_query_clients, - (GFunc)_client_request_save, - &data); - - g_slist_free (manager->priv->next_query_clients); - manager->priv->next_query_clients = NULL; - - return; - } - - if (manager->priv->query_timeout_id > 0) { - g_source_remove (manager->priv->query_timeout_id); - manager->priv->query_timeout_id = 0; - } - -- gsm_session_save (manager->priv->clients, manager->priv->session_name, &error); -+ gsm_session_save (manager->priv->clients, manager->priv->apps, manager->priv->session_name, &error); - - if (error) { - g_warning ("Error saving session: %s", error->message); - fail_pending_save_invocations (manager, error); - g_error_free (error); - } else { - finish_pending_save_invocations (manager); - } - } - - static guint32 - generate_cookie (void) - { - guint32 cookie; - - cookie = (guint32)g_random_int_range (1, G_MAXINT32); - - return cookie; - } - - static guint32 - _generate_unique_cookie (GsmManager *manager) - { - guint32 cookie; - - do { - cookie = generate_cookie (); - } while (gsm_store_find (manager->priv->inhibitors, (GsmStoreFunc)_find_by_cookie, &cookie) != NULL); - - return cookie; -@@ -1963,61 +1963,61 @@ on_xsmp_client_register_confirmed (GsmXSMPClient *client, - } - } - - static gboolean - auto_save_is_enabled (GsmManager *manager) - { - return g_settings_get_boolean (manager->priv->settings, KEY_AUTOSAVE_ONE_SHOT) - || g_settings_get_boolean (manager->priv->settings, KEY_AUTOSAVE); - } - - static void - maybe_save_session (GsmManager *manager) - { - GError *error; - - if (gsm_system_is_login_session (manager->priv->system)) - return; - - /* We only allow session saving when session is running or when - * logging out */ - if (manager->priv->phase != GSM_MANAGER_PHASE_RUNNING && - manager->priv->phase != GSM_MANAGER_PHASE_END_SESSION) { - return; - } - - if (!auto_save_is_enabled (manager)) { - return; - } - - error = NULL; -- gsm_session_save (manager->priv->clients, manager->priv->session_name, &error); -+ gsm_session_save (manager->priv->clients, manager->priv->apps, manager->priv->session_name, &error); - - if (error) { - g_warning ("Error saving session: %s", error->message); - g_error_free (error); - } - } - - static void - _handle_client_end_session_response (GsmManager *manager, - GsmClient *client, - gboolean is_ok, - gboolean do_last, - gboolean cancel, - const char *reason) - { - /* just ignore if we are not yet running */ - if (manager->priv->phase < GSM_MANAGER_PHASE_RUNNING) { - return; - } - - g_debug ("GsmManager: Response from end session request: is-ok=%d do-last=%d cancel=%d reason=%s", is_ok, do_last, cancel, reason ? reason :""); - - if (manager->priv->phase == GSM_MANAGER_PHASE_RUNNING) { - /* Ignore responses when no requests were sent */ - if (manager->priv->query_clients == NULL) { - return; - } - - manager->priv->query_clients = g_slist_remove (manager->priv->query_clients, client); - -diff --git a/gnome-session/gsm-session-save.c b/gnome-session/gsm-session-save.c -index 78b64197..35ffaae0 100644 ---- a/gnome-session/gsm-session-save.c -+++ b/gnome-session/gsm-session-save.c -@@ -1,234 +1,253 @@ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- - * gsm-session-save.c - * Copyright (C) 2008 Lucas Rocha. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see . - */ - - #include - - #include - - #include - #include - #include - -+#include "gsm-app.h" - #include "gsm-util.h" - #include "gsm-autostart-app.h" - #include "gsm-client.h" - - #include "gsm-session-save.h" - - #define GSM_MANAGER_SCHEMA "org.gnome.SessionManager" - #define KEY_AUTOSAVE_ONE_SHOT "auto-save-session-one-shot" - - - static gboolean gsm_session_clear_saved_session (const char *directory, - GHashTable *discard_hash); - - typedef struct { - char *dir; - GHashTable *discard_hash; -+ GsmStore *app_store; - GError **error; - } SessionSaveData; - - static void - clear_session_type (const char *save_dir) - { - char *file; - - file = g_build_filename (save_dir, "type", NULL); - - g_unlink (file); - - g_free (file); - } - - static void - set_session_type (const char *save_dir, - const char *type) - { - char *file; - GError *error; - - file = g_build_filename (save_dir, "type", NULL); - - error = NULL; - g_file_set_contents (file, type, strlen (type), &error); - if (error != NULL) - g_warning ("couldn't save session type to %s: %s", - type, error->message); - - g_free (file); - } - -+static gboolean -+_app_has_app_id (const char *id, -+ GsmApp *app, -+ const char *app_id_a) -+{ -+ const char *app_id_b; -+ -+ app_id_b = gsm_app_peek_app_id (app); -+ return g_strcmp0 (app_id_a, app_id_b) == 0; -+} -+ - static gboolean - save_one_client (char *id, - GObject *object, - SessionSaveData *data) - { - GsmClient *client; - GKeyFile *keyfile; -+ GsmApp *app = NULL; - const char *app_id; - char *path = NULL; - char *filename = NULL; - char *contents = NULL; - gsize length = 0; - char *discard_exec; - GError *local_error; - - client = GSM_CLIENT (object); - - local_error = NULL; - -- keyfile = gsm_client_save (client, &local_error); -+ app_id = gsm_client_peek_app_id (client); -+ if (!IS_STRING_EMPTY (app_id)) { -+ if (g_str_has_suffix (app_id, ".desktop")) -+ filename = g_strdup (app_id); -+ else -+ filename = g_strdup_printf ("%s.desktop", app_id); -+ -+ path = g_build_filename (data->dir, filename, NULL); -+ -+ app = (GsmApp *)gsm_store_find (data->app_store, -+ (GsmStoreFunc)_app_has_app_id, -+ (char *)app_id); -+ } -+ keyfile = gsm_client_save (client, app, &local_error); - - if (keyfile == NULL || local_error) { - goto out; - } - - contents = g_key_file_to_data (keyfile, &length, &local_error); - - if (local_error) { - goto out; - } - -- app_id = gsm_client_peek_app_id (client); -- if (!IS_STRING_EMPTY (app_id)) { -- if (g_str_has_suffix (app_id, ".desktop")) -- filename = g_strdup (app_id); -- else -- filename = g_strdup_printf ("%s.desktop", app_id); -- -- path = g_build_filename (data->dir, filename, NULL); -- } -- - if (!path || g_file_test (path, G_FILE_TEST_EXISTS)) { - if (filename) - g_free (filename); - if (path) - g_free (path); - - filename = g_strdup_printf ("%s.desktop", - gsm_client_peek_startup_id (client)); - path = g_build_filename (data->dir, filename, NULL); - } - - g_file_set_contents (path, - contents, - length, - &local_error); - - if (local_error) { - goto out; - } - - discard_exec = g_key_file_get_string (keyfile, - G_KEY_FILE_DESKTOP_GROUP, - GSM_AUTOSTART_APP_DISCARD_KEY, - NULL); - if (discard_exec) { - g_hash_table_insert (data->discard_hash, - discard_exec, discard_exec); - } - - g_debug ("GsmSessionSave: saved client %s to %s", id, filename); - - out: - if (keyfile != NULL) { - g_key_file_free (keyfile); - } - - g_free (contents); - g_free (filename); - g_free (path); - - /* in case of any error, stop saving session */ - if (local_error) { - g_propagate_error (data->error, local_error); - g_error_free (local_error); - - return TRUE; - } - - return FALSE; - } - - void - gsm_session_save (GsmStore *client_store, -+ GsmStore *app_store, - const char *type, - GError **error) - { - GSettings *settings; - const char *save_dir; - char *tmp_dir; - SessionSaveData data; - - g_debug ("GsmSessionSave: Saving session"); - - /* Clear one shot key autosave in the event its set (so that it's actually - * one shot only) - */ - settings = g_settings_new (GSM_MANAGER_SCHEMA); - g_settings_set_boolean (settings, KEY_AUTOSAVE_ONE_SHOT, FALSE); - g_object_unref (settings); - - save_dir = gsm_util_get_saved_session_dir (); - if (save_dir == NULL) { - g_warning ("GsmSessionSave: cannot create saved session directory"); - return; - } - - tmp_dir = gsm_util_get_empty_tmp_session_dir (); - if (tmp_dir == NULL) { - g_warning ("GsmSessionSave: cannot create new saved session directory"); - return; - } - - /* save the session in a temp directory, and remember the discard - * commands */ - data.dir = tmp_dir; - data.discard_hash = g_hash_table_new_full (g_str_hash, g_str_equal, - g_free, NULL); - data.error = error; -+ data.app_store = app_store; - - gsm_store_foreach (client_store, - (GsmStoreFunc) save_one_client, - &data); - - if (!*error) { - char *session_dir; - - if (g_file_test (save_dir, G_FILE_TEST_IS_SYMLINK)) - session_dir = g_file_read_link (save_dir, error); - else - session_dir = g_strdup (save_dir); - - if (session_dir != NULL) { - char *absolute_session_dir; - - set_session_type (tmp_dir, type); - - if (g_path_is_absolute (session_dir)) { - absolute_session_dir = g_strdup (session_dir); - } else { - char *parent_dir; - - parent_dir = g_path_get_dirname (save_dir); - absolute_session_dir = g_build_filename (parent_dir, session_dir, NULL); - g_free (parent_dir); - } - g_free (session_dir); - - /* remove the old saved session */ -diff --git a/gnome-session/gsm-session-save.h b/gnome-session/gsm-session-save.h -index c91b5615..b32673c4 100644 ---- a/gnome-session/gsm-session-save.h -+++ b/gnome-session/gsm-session-save.h -@@ -1,34 +1,35 @@ - /* gsm-session-save.h - * Copyright (C) 2008 Lucas Rocha. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License as - * published by the Free Software Foundation; either version 2 of the - * License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, see . - */ - - #ifndef __GSM_SESSION_SAVE_H__ - #define __GSM_SESSION_SAVE_H__ - - #include - - #include "gsm-store.h" - - G_BEGIN_DECLS - - void gsm_session_save (GsmStore *client_store, -+ GsmStore *app_store, - const char *type, - GError **error); - void gsm_session_save_clear (void); - - G_END_DECLS - - #endif /* __GSM_SESSION_SAVE_H__ */ -diff --git a/gnome-session/gsm-xsmp-client.c b/gnome-session/gsm-xsmp-client.c -index 2846d9b3..cbecd68c 100644 ---- a/gnome-session/gsm-xsmp-client.c -+++ b/gnome-session/gsm-xsmp-client.c -@@ -612,118 +612,127 @@ set_desktop_file_keys_from_client (GsmClient *client, - - g_free (comment); - } - - static GKeyFile * - create_client_key_file (GsmClient *client, - const char *desktop_file_path, - GError **error) { - GKeyFile *keyfile; - - keyfile = g_key_file_new (); - - if (desktop_file_path != NULL) { - g_key_file_load_from_file (keyfile, - desktop_file_path, - G_KEY_FILE_KEEP_COMMENTS | - G_KEY_FILE_KEEP_TRANSLATIONS, - error); - } else { - set_desktop_file_keys_from_client (client, keyfile); - } - - return keyfile; - } - - static GsmClientRestartStyle - xsmp_get_restart_style_hint (GsmClient *client); - - static GKeyFile * - xsmp_save (GsmClient *client, -+ GsmApp *app, - GError **error) - { - GsmClientRestartStyle restart_style; - - GKeyFile *keyfile = NULL; - char *desktop_file_path = NULL; - char *exec_program = NULL; - char *exec_discard = NULL; - char *startup_id = NULL; - GError *local_error; - - g_debug ("GsmXSMPClient: saving client with id %s", - gsm_client_peek_id (client)); - - local_error = NULL; - - restart_style = xsmp_get_restart_style_hint (client); - if (restart_style == GSM_CLIENT_RESTART_NEVER) { - goto out; - } - - exec_program = xsmp_get_restart_command (client); - if (!exec_program) { - goto out; - } - - desktop_file_path = get_desktop_file_path (GSM_XSMP_CLIENT (client)); - - /* this can accept desktop_file_path == NULL */ - keyfile = create_client_key_file (client, - desktop_file_path, - &local_error); - - if (local_error) { - goto out; - } - - g_object_get (client, - "startup-id", &startup_id, - NULL); - - g_key_file_set_string (keyfile, - G_KEY_FILE_DESKTOP_GROUP, - GSM_AUTOSTART_APP_STARTUP_ID_KEY, - startup_id); - - g_key_file_set_string (keyfile, - G_KEY_FILE_DESKTOP_GROUP, - G_KEY_FILE_DESKTOP_KEY_EXEC, - exec_program); - - exec_discard = xsmp_get_discard_command (client); - if (exec_discard) - g_key_file_set_string (keyfile, - G_KEY_FILE_DESKTOP_GROUP, - GSM_AUTOSTART_APP_DISCARD_KEY, - exec_discard); - -+ if (app != NULL) { -+ gsm_app_save_to_keyfile (app, keyfile, &local_error); -+ -+ if (local_error) { -+ goto out; -+ } -+ } -+ - out: - g_free (desktop_file_path); - g_free (exec_program); - g_free (exec_discard); - g_free (startup_id); - - if (local_error != NULL) { - g_propagate_error (error, local_error); - g_key_file_free (keyfile); - - return NULL; - } - - return keyfile; - } - - static gboolean - xsmp_stop (GsmClient *client, - GError **error) - { - GsmXSMPClient *xsmp = (GsmXSMPClient *) client; - - g_debug ("GsmXSMPClient: xsmp_stop ('%s')", xsmp->priv->description); - - if (xsmp->priv->conn == NULL) { - g_set_error (error, - GSM_CLIENT_ERROR, - GSM_CLIENT_ERROR_NOT_REGISTERED, - "Client is not registered"); - return FALSE; --- -2.14.3 - diff --git a/SOURCES/0002-Revert-Remove-gnome-session-properties.patch b/SOURCES/0002-Revert-Remove-gnome-session-properties.patch index 05d282b..6a4f630 100644 --- a/SOURCES/0002-Revert-Remove-gnome-session-properties.patch +++ b/SOURCES/0002-Revert-Remove-gnome-session-properties.patch @@ -1,31 +1,28 @@ -From e18747f7c52f7d7d56f7d9490f934d59d84f8af9 Mon Sep 17 00:00:00 2001 +From e799dc8f049da855bf05edd6f994d802cd59668f Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 8 May 2015 16:24:59 -0400 Subject: [PATCH 02/19] Revert "Remove gnome-session-properties" This reverts commit ea285af9962313ee2675fff27d3a852bb61e936a. --- - Makefile.am | 1 + - capplet/Makefile.am | 31 + - capplet/gsm-app-dialog.c | 540 +++++++++++++ + capplet/gsm-app-dialog.c | 540 +++++++++ capplet/gsm-app-dialog.h | 66 ++ - capplet/gsm-properties-dialog.c | 774 +++++++++++++++++++ - capplet/gsm-properties-dialog.h | 57 ++ - capplet/gsp-app-manager.c | 593 ++++++++++++++ + capplet/gsm-properties-dialog.c | 774 +++++++++++++ + capplet/gsm-properties-dialog.h | 57 + + capplet/gsp-app-manager.c | 593 ++++++++++ capplet/gsp-app-manager.h | 81 ++ - capplet/gsp-app.c | 1102 +++++++++++++++++++++++++++ - capplet/gsp-app.h | 108 +++ - capplet/gsp-keyfile.c | 201 +++++ + capplet/gsp-app.c | 1102 +++++++++++++++++++ + capplet/gsp-app.h | 108 ++ + capplet/gsp-keyfile.c | 201 ++++ capplet/gsp-keyfile.h | 65 ++ - capplet/main.c | 108 +++ - configure.ac | 2 + - data/Makefile.am | 8 +- + capplet/main.c | 108 ++ + capplet/meson.build | 36 + data/gnome-session-properties.desktop.in.in | 15 + - doc/man/Makefile.am | 1 + + data/meson.build | 13 + doc/man/gnome-session-properties.1 | 24 + + meson.build | 1 + po/POTFILES.in | 5 + - 19 files changed, 3781 insertions(+), 1 deletion(-) - create mode 100644 capplet/Makefile.am + 17 files changed, 3789 insertions(+) create mode 100644 capplet/gsm-app-dialog.c create mode 100644 capplet/gsm-app-dialog.h create mode 100644 capplet/gsm-properties-dialog.c @@ -37,84 +34,10 @@ This reverts commit ea285af9962313ee2675fff27d3a852bb61e936a. create mode 100644 capplet/gsp-keyfile.c create mode 100644 capplet/gsp-keyfile.h create mode 100644 capplet/main.c + create mode 100644 capplet/meson.build create mode 100644 data/gnome-session-properties.desktop.in.in create mode 100644 doc/man/gnome-session-properties.1 -diff --git a/Makefile.am b/Makefile.am -index 6560a4ec..6b6a47bf 100644 ---- a/Makefile.am -+++ b/Makefile.am -@@ -1,32 +1,33 @@ - SUBDIRS = \ - gnome-session \ -+ capplet \ - tools \ - data \ - doc \ - po - - ACLOCAL_AMFLAGS = -I m4 ${ACLOCAL_FLAGS} - - EXTRA_DIST = \ - HACKING \ - MAINTAINERS - - MAINTAINERCLEANFILES = \ - $(srcdir)/INSTALL \ - $(srcdir)/aclocal.m4 \ - $(srcdir)/config.guess \ - $(srcdir)/config.h.in \ - $(srcdir)/config.sub \ - $(srcdir)/depcomp \ - $(srcdir)/install-sh \ - $(srcdir)/ltmain.sh \ - $(srcdir)/missing \ - $(srcdir)/mkinstalldirs \ - $(srcdir)/configure \ - $(srcdir)/m4/intltool.m4 \ - `find "$(srcdir)" -type f -name Makefile.in -print` - - CHANGELOG_GIT_RANGE = GNOME_SESSION_2_26_1.. - dist-hook: - $(AM_V_GEN)if test -d "$(srcdir)/.git"; then \ - ( echo '# Generated by Makefile. Do not edit.'; echo; \ -diff --git a/capplet/Makefile.am b/capplet/Makefile.am -new file mode 100644 -index 00000000..c2e563cf ---- /dev/null -+++ b/capplet/Makefile.am -@@ -0,0 +1,31 @@ -+bin_PROGRAMS = gnome-session-properties -+ -+AM_CPPFLAGS = \ -+ $(SESSION_PROPERTIES_CFLAGS) \ -+ $(GCONF_CFLAGS) \ -+ -I$(top_srcdir)/gnome-session \ -+ -DLOCALE_DIR=\""$(datadir)/locale"\" \ -+ -DGTKBUILDER_DIR=\""$(pkgdatadir)"\" \ -+ $(DISABLE_DEPRECATED_CFLAGS) -+ -+AM_CFLAGS = $(WARN_CFLAGS) -+ -+gnome_session_properties_SOURCES = \ -+ main.c \ -+ gsm-properties-dialog.h \ -+ gsm-properties-dialog.c \ -+ gsm-app-dialog.h \ -+ gsm-app-dialog.c \ -+ gsp-app.h \ -+ gsp-app.c \ -+ gsp-app-manager.h \ -+ gsp-app-manager.c \ -+ gsp-keyfile.h \ -+ gsp-keyfile.c -+ -+gnome_session_properties_LDADD = \ -+ $(SESSION_PROPERTIES_LIBS) \ -+ $(top_builddir)/gnome-session/libgsmutil.la \ -+ $(GCONF_LIBS) -+ -+-include $(top_srcdir)/git.mk diff --git a/capplet/gsm-app-dialog.c b/capplet/gsm-app-dialog.c new file mode 100644 index 00000000..e7369dda @@ -3876,157 +3799,48 @@ index 00000000..3c7177bc + + return 0; +} -diff --git a/configure.ac b/configure.ac -index f57dcf3d..b3f285ed 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -337,65 +337,67 @@ if test $enable_ipv6 = yes; then - ]])], - [have_ipv6=yes], - [have_ipv6=no] - ) - AC_MSG_RESULT($have_ipv6) - - dnl ================================================================= - dnl Now we would check for specific function like getaddrinfo. - dnl ================================================================= - have_getaddrinfo=no - if test $have_ipv6=yes; then - AC_CHECK_FUNC(getaddrinfo, have_getaddrinfo=yes) - if test $have_getaddrinfo != yes; then - # getaddrinfo is not in the default libraries. See if it's in some other. - for lib in bsd socket inet; do - AC_CHECK_LIB($lib, getaddrinfo, [LIBS="$LIBS -l$lib";have_getaddrinfo=yes; break]) - done - fi - if test $have_getaddrinfo=yes; then - AC_DEFINE(ENABLE_IPV6, 1, [Define if IPV6 is supported]) - have_full_ipv6=yes - fi - fi - fi - dnl ============================================================================== - dnl End of IPv6 checks - dnl ============================================================================== - - AC_CONFIG_FILES([ - Makefile -+capplet/Makefile - doc/Makefile - doc/dbus/Makefile - doc/dbus/gnome-session.xml - doc/man/Makefile - data/Makefile -+data/gnome-session-properties.desktop.in - data/org.gnome.SessionManager.gschema.xml - data/icons/Makefile - data/icons/16x16/Makefile - data/icons/22x22/Makefile - data/icons/24x24/Makefile - data/icons/32x32/Makefile - data/icons/48x48/Makefile - data/icons/scalable/Makefile - data/icons/symbolic/Makefile - gnome-session/Makefile - tools/Makefile - po/Makefile.in - ]) - AC_OUTPUT - - dnl --------------------------------------------------------------------------- - dnl - Show summary - dnl --------------------------------------------------------------------------- - - echo " - gnome-session $VERSION - `echo gnome-session $VERSION | sed "s/./=/g"` - - prefix: ${prefix} - exec_prefix: ${exec_prefix} - libdir: ${libdir} - bindir: ${bindir} - sbindir: ${sbindir} - sysconfdir: ${sysconfdir} - localstatedir: ${localstatedir} -diff --git a/data/Makefile.am b/data/Makefile.am -index 413279a2..b5c3f5ec 100644 ---- a/data/Makefile.am -+++ b/data/Makefile.am -@@ -1,67 +1,73 @@ - SUBDIRS = icons - - uidir = $(pkgdatadir) - ui_DATA = \ - session-properties.ui - - if BUILD_SESSION_SELECTOR - ui_DATA += session-selector.ui - endif - - hwcompatdir = $(pkgdatadir) - hwcompat_DATA = hardware-compatibility - - xsessiondir = $(datadir)/xsessions - xsession_in_files = gnome.desktop.in gnome-xorg.desktop.in - - if BUILD_SESSION_SELECTOR - xsession_in_files += gnome-custom-session.desktop.in - endif - - xsession_DATA = $(xsession_in_files:.desktop.in=.desktop) - - wayland_sessiondir = $(datadir)/wayland-sessions - wayland_session_in_files = gnome.desktop.in - wayland_session_DATA = $(wayland_session_in_files:.desktop.in=.desktop) - -+desktopdir = $(datadir)/applications -+desktop_in_files = gnome-session-properties.desktop.in -+desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) -+ - sessiondir = $(datadir)/gnome-session/sessions - session_in_in_files = gnome.session.desktop.in.in gnome-dummy.session.desktop.in.in - session_in_files = $(session_in_in_files:.session.desktop.in.in=.session.desktop.in) - session_DATA = $(session_in_files:.session.desktop.in=.session) - - %.session.desktop.in: %.session.desktop.in.in Makefile - $(AM_V_GEN)sed \ - -e "s|\@LIBEXECDIR\@|$(libexecdir)|" \ - $< > $@ - - %.session: %.session.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ - - @INTLTOOL_DESKTOP_RULE@ - @INTLTOOL_XML_NOMERGE_RULE@ - - gsettings_SCHEMAS = org.gnome.SessionManager.gschema.xml - @GSETTINGS_RULES@ - - migrationdir = $(datadir)/GConf/gsettings - dist_migration_DATA = gnome-session.convert - - EXTRA_DIST = \ - $(xsession_in_files) \ - $(session_in_in_files) \ - $(wayland_session_in_files) \ - $(gsettings_SCHEMAS:.xml=.xml.in) \ - session-selector.ui \ - gnome-custom-session.desktop.in \ - $(ui_DATA) \ - $(hwcompat_DATA) - - CLEANFILES = \ - $(gsettings_SCHEMAS) \ - $(xsession_DATA) \ - $(wayland_session_DATA) \ -+ $(desktop_DATA) \ - $(session_DATA) - - DISTCLEANFILES = \ -- $(gsettings_SCHEMAS) -+ $(gsettings_SCHEMAS) \ -+ $(desktop_in_files) - - -include $(top_srcdir)/git.mk +diff --git a/capplet/meson.build b/capplet/meson.build +new file mode 100644 +index 00000000..8dad9c80 +--- /dev/null ++++ b/capplet/meson.build +@@ -0,0 +1,36 @@ ++install_data( ++ install_dir: session_bindir ++) ++ ++deps = session_deps + [ ++ glib_dep, ++ gtk_dep, ++ x11_dep, ++ sm_dep, ++ ice_dep ++] ++ ++cflags = [ ++ '-DLOCALE_DIR="@0@"'.format(session_localedir), ++ '-DGTKBUILDER_DIR="@0@"'.format(session_pkgdatadir) ++] ++ ++sources = files( ++ '../gnome-session/gsm-util.c', ++ 'gsm-app-dialog.c', ++ 'gsm-properties-dialog.c', ++ 'gsp-app.c', ++ 'gsp-app-manager.c', ++ 'gsp-keyfile.c', ++ 'main.c' ++) ++ ++executable( ++ 'gnome-session-properties', ++ sources, ++ include_directories: [ top_inc, include_directories('../gnome-session') ], ++ dependencies: deps, ++ c_args: cflags, ++ install: true, ++ install_dir: session_bindir ++) diff --git a/data/gnome-session-properties.desktop.in.in b/data/gnome-session-properties.desktop.in.in new file mode 100644 index 00000000..3dc7b033 @@ -4048,41 +3862,54 @@ index 00000000..3dc7b033 +X-GNOME-Bugzilla-Product=gnome-session +X-GNOME-Bugzilla-Component=gnome-session-properties +X-GNOME-Bugzilla-Version=@VERSION@ -diff --git a/doc/man/Makefile.am b/doc/man/Makefile.am -index 02e5c62a..28794233 100644 ---- a/doc/man/Makefile.am -+++ b/doc/man/Makefile.am -@@ -1,29 +1,30 @@ - XSLTPROC_FLAGS = \ - --nonet \ - --stringparam man.output.quietly 1 \ - --stringparam funcsynopsis.style ansi \ - --stringparam man.th.extra1.suppress 1 \ - --stringparam man.authors.section.enabled 0 \ - --stringparam man.copyright.section.enabled 0 +diff --git a/data/meson.build b/data/meson.build +index b79a5fbd..c5b2b0f7 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -72,30 +72,43 @@ configure_file( + ) - .xml.1: - $(AM_V_GEN) $(XSLTPROC) $(XSLTPROC_FLAGS) http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl $< + install_data( + 'gnome-session.convert', + install_dir: join_paths(session_datadir, 'GConf', 'gsettings') + ) - man_MANS = \ - gnome-session.1 \ -+ gnome-session-properties.1 \ - gnome-session-quit.1 \ - gnome-session-inhibit.1 + data = files('hardware-compatibility') + data += files('session-properties.ui') - if BUILD_SESSION_SELECTOR - man_MANS += gnome-session-selector.1 - endif + if enable_session_selector + data += files('session-selector.ui') - EXTRA_DIST = \ - gnome-session-inhibit.xml \ - gnome-session-selector.xml \ - $(man_MANS) + desktop = 'gnome-custom-session.desktop' - CLEANFILES = \ - gnome-session-inhibit.1 + i18n.merge_file( + desktop, + type: 'desktop', + input: desktop + '.in', + output: desktop, + po_dir: po_dir, + install: true, + install_dir: join_paths(session_datadir, 'xsessions') + ) + endif - -include $(top_srcdir)/git.mk + install_data( + data, + install_dir: session_pkgdatadir + ) ++ ++desktop = 'gnome-session-properties.desktop' ++ ++i18n.merge_file( ++ desktop, ++ type: 'desktop', ++ input: desktop + '.in', ++ output: desktop, ++ po_dir: po_dir, ++ install: true, ++ install_dir: join_paths(session_datadir, 'applications') ++) ++ diff --git a/doc/man/gnome-session-properties.1 b/doc/man/gnome-session-properties.1 new file mode 100644 index 00000000..c7ef1af3 @@ -4113,8 +3940,74 @@ index 00000000..c7ef1af3 +.SH SEE ALSO +.BR gnome-session(1) +.BR gnome-session-quit(1) +diff --git a/meson.build b/meson.build +index 0231360b..9a16d5b1 100644 +--- a/meson.build ++++ b/meson.build +@@ -152,60 +152,61 @@ if enable_systemd or enable_consolekit + dbus_glib_dep = dependency('dbus-glib-1', version: '>= 0.76') + assert(dbus_glib_dep.found(), 'ConsoleKit support explicitly required, but dbus-glib not found') + + session_bin_deps += dbus_glib_dep + + if enable_systemd + session_tracking += ' (with fallback to ConsoleKit)' + else + session_tracking = 'ConsoleKit' + endif + endif + endif + config_h.set('HAVE_SYSTEMD', enable_systemd) + config_h.set('ENABLE_SYSTEMD_JOURNAL', enable_systemd_journal) + config_h.set('HAVE_CONSOLEKIT', enable_consolekit) + + configure_file( + output: 'config.h', + configuration: config_h + ) + + gnome = import('gnome') + i18n = import('i18n') + pkg = import('pkgconfig') + + po_dir = join_paths(meson.source_root(), 'po') + + top_inc = include_directories('.') + + subdir('gnome-session') ++subdir('capplet') + subdir('tools') + subdir('data') + + enable_docbook = get_option('docbook') + enable_man = get_option('man') + if enable_docbook or enable_man + subdir('doc') + endif + + subdir('po') + + meson.add_install_script( + 'meson_post_install.py', + session_datadir + ) + + output = '\n gnome-session ' + session_version + '\n' + output += ' ====================\n\n' + output += ' prefix: ' + session_prefix + '\n' + output += ' exec_prefix: ' + session_libexecdir + '\n' + output += ' libdir: ' + session_libdir + '\n' + output += ' bindir: ' + session_bindir + '\n' + output += ' sbindir: ' + session_sbindir + '\n' + output += ' sysconfdir: ' + session_sysconfdir + '\n' + output += ' localstatedir: ' + session_localstatedir + '\n' + output += ' datadir: ' + session_datadir + '\n' + output += ' source code location: ' + meson.source_root() + '\n' + output += ' compiler: ' + cc.get_id() + '\n' + output += ' cflags: ' + ' '.join(compiler_flags) + '\n' + output += ' Debug mode: ' + session_debug.to_string() + '\n' diff --git a/po/POTFILES.in b/po/POTFILES.in -index 76882645..5cb5123d 100644 +index f32040fc..87555685 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -1,19 +1,24 @@ @@ -4130,8 +4023,8 @@ index 76882645..5cb5123d 100644 data/gnome-dummy.session.desktop.in.in data/gnome.session.desktop.in.in +data/gnome-session-properties.desktop.in.in - [type: gettext/glade]data/session-selector.ui - [type: gettext/glade]data/session-properties.ui + data/session-selector.ui + data/session-properties.ui gnome-session/gsm-fail-whale-dialog.c gnome-session/gsm-manager.c gnome-session/gsm-process-helper.c @@ -4143,5 +4036,5 @@ index 76882645..5cb5123d 100644 tools/gnome-session-selector.c tools/gnome-session-quit.c -- -2.14.2 +2.17.0 diff --git a/SOURCES/0002-autostart-ensure-gnome-shell-and-mutter-get-right-au.patch b/SOURCES/0002-autostart-ensure-gnome-shell-and-mutter-get-right-au.patch index 6784c45..62f6322 100644 --- a/SOURCES/0002-autostart-ensure-gnome-shell-and-mutter-get-right-au.patch +++ b/SOURCES/0002-autostart-ensure-gnome-shell-and-mutter-get-right-au.patch @@ -1,4 +1,4 @@ -From 622e54d54c65eba7c5d8e4172f8aae8a970126f9 Mon Sep 17 00:00:00 2001 +From 625609b907e37e30fa29eaf7beb9426fd2405eaa Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Thu, 18 Jan 2018 10:09:36 -0500 Subject: [PATCH 2/2] autostart: ensure gnome-shell and mutter get right @@ -15,10 +15,10 @@ are important for a functioning GNOME desktop. 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/gnome-session/gsm-autostart-app.c b/gnome-session/gsm-autostart-app.c -index 9eb1db5b..5617e549 100644 +index 2332b039..584a9105 100644 --- a/gnome-session/gsm-autostart-app.c +++ b/gnome-session/gsm-autostart-app.c -@@ -621,61 +621,71 @@ load_desktop_file (GsmAutostartApp *app) +@@ -545,61 +545,71 @@ load_desktop_file (GsmAutostartApp *app) char *startup_id; char *phase_str; int phase; @@ -57,7 +57,7 @@ index 9eb1db5b..5617e549 100644 + /* These hardcoded checks are to keep upgrades working */ + if (app_id != NULL && g_str_has_prefix (app_id, "org.gnome.Shell")) + phase = GSM_MANAGER_PHASE_DISPLAY_SERVER; -+ else if (app_id != NULL && g_str_has_prefix (app_id, "org.gnome.SettingsDaemon")) ++ else if (app_id != NULL && g_str_equal (app_id, "org.gnome.SettingsDaemon.desktop")) + phase = GSM_MANAGER_PHASE_INITIALIZATION; + else + phase = GSM_MANAGER_PHASE_APPLICATION; diff --git a/SOURCES/0003-Revert-Rename-the-desktop-file-to-gnome-session-prop.patch b/SOURCES/0003-Revert-Rename-the-desktop-file-to-gnome-session-prop.patch index d52b1be..a96b646 100644 --- a/SOURCES/0003-Revert-Rename-the-desktop-file-to-gnome-session-prop.patch +++ b/SOURCES/0003-Revert-Rename-the-desktop-file-to-gnome-session-prop.patch @@ -1,4 +1,4 @@ -From 808e1598dc50484f62998b4a9e94e956f028d362 Mon Sep 17 00:00:00 2001 +From 3e893278df0743bb1682f7bca88d16c90b8c0341 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 8 May 2015 16:27:15 -0400 Subject: [PATCH 03/19] Revert "Rename the desktop file to @@ -6,154 +6,91 @@ Subject: [PATCH 03/19] Revert "Rename the desktop file to This reverts commit ac9fd0dc97a17674cb082f80df0b1fcc45bc92bf. --- - configure.ac | 2 +- - data/Makefile.am | 2 +- - ...ession-properties.desktop.in.in => session-properties.desktop.in.in} | 0 - po/POTFILES.in | 1 + - po/POTFILES.skip | 1 + - 5 files changed, 4 insertions(+), 2 deletions(-) - rename data/{gnome-session-properties.desktop.in.in => session-properties.desktop.in.in} (100%) + data/meson.build | 2 +- + ...properties.desktop.in.in => session-properties.desktop.in} | 4 ++-- + po/POTFILES.in | 2 +- + po/POTFILES.skip | 1 + + 4 files changed, 5 insertions(+), 4 deletions(-) + rename data/{gnome-session-properties.desktop.in.in => session-properties.desktop.in} (81%) -diff --git a/configure.ac b/configure.ac -index b3f285ed..5182c09e 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -343,61 +343,61 @@ if test $enable_ipv6 = yes; then - dnl ================================================================= - dnl Now we would check for specific function like getaddrinfo. - dnl ================================================================= - have_getaddrinfo=no - if test $have_ipv6=yes; then - AC_CHECK_FUNC(getaddrinfo, have_getaddrinfo=yes) - if test $have_getaddrinfo != yes; then - # getaddrinfo is not in the default libraries. See if it's in some other. - for lib in bsd socket inet; do - AC_CHECK_LIB($lib, getaddrinfo, [LIBS="$LIBS -l$lib";have_getaddrinfo=yes; break]) - done - fi - if test $have_getaddrinfo=yes; then - AC_DEFINE(ENABLE_IPV6, 1, [Define if IPV6 is supported]) - have_full_ipv6=yes - fi - fi - fi - dnl ============================================================================== - dnl End of IPv6 checks - dnl ============================================================================== - - AC_CONFIG_FILES([ - Makefile - capplet/Makefile - doc/Makefile - doc/dbus/Makefile - doc/dbus/gnome-session.xml - doc/man/Makefile - data/Makefile --data/gnome-session-properties.desktop.in -+data/session-properties.desktop.in - data/org.gnome.SessionManager.gschema.xml - data/icons/Makefile - data/icons/16x16/Makefile - data/icons/22x22/Makefile - data/icons/24x24/Makefile - data/icons/32x32/Makefile - data/icons/48x48/Makefile - data/icons/scalable/Makefile - data/icons/symbolic/Makefile - gnome-session/Makefile - tools/Makefile - po/Makefile.in - ]) - AC_OUTPUT - - dnl --------------------------------------------------------------------------- - dnl - Show summary - dnl --------------------------------------------------------------------------- - - echo " - gnome-session $VERSION - `echo gnome-session $VERSION | sed "s/./=/g"` - - prefix: ${prefix} - exec_prefix: ${exec_prefix} - libdir: ${libdir} - bindir: ${bindir} - sbindir: ${sbindir} - sysconfdir: ${sysconfdir} - localstatedir: ${localstatedir} -diff --git a/data/Makefile.am b/data/Makefile.am -index b5c3f5ec..0bb25c06 100644 ---- a/data/Makefile.am -+++ b/data/Makefile.am -@@ -1,58 +1,58 @@ - SUBDIRS = icons - - uidir = $(pkgdatadir) - ui_DATA = \ - session-properties.ui - - if BUILD_SESSION_SELECTOR - ui_DATA += session-selector.ui - endif - - hwcompatdir = $(pkgdatadir) - hwcompat_DATA = hardware-compatibility - - xsessiondir = $(datadir)/xsessions - xsession_in_files = gnome.desktop.in gnome-xorg.desktop.in - - if BUILD_SESSION_SELECTOR - xsession_in_files += gnome-custom-session.desktop.in +diff --git a/data/meson.build b/data/meson.build +index c5b2b0f7..3077b19e 100644 +--- a/data/meson.build ++++ b/data/meson.build +@@ -73,42 +73,42 @@ configure_file( + + install_data( + 'gnome-session.convert', + install_dir: join_paths(session_datadir, 'GConf', 'gsettings') + ) + + data = files('hardware-compatibility') + data += files('session-properties.ui') + + if enable_session_selector + data += files('session-selector.ui') + + desktop = 'gnome-custom-session.desktop' + + i18n.merge_file( + desktop, + type: 'desktop', + input: desktop + '.in', + output: desktop, + po_dir: po_dir, + install: true, + install_dir: join_paths(session_datadir, 'xsessions') + ) endif - xsession_DATA = $(xsession_in_files:.desktop.in=.desktop) - - wayland_sessiondir = $(datadir)/wayland-sessions - wayland_session_in_files = gnome.desktop.in - wayland_session_DATA = $(wayland_session_in_files:.desktop.in=.desktop) - - desktopdir = $(datadir)/applications --desktop_in_files = gnome-session-properties.desktop.in -+desktop_in_files = session-properties.desktop.in - desktop_DATA = $(desktop_in_files:.desktop.in=.desktop) - - sessiondir = $(datadir)/gnome-session/sessions - session_in_in_files = gnome.session.desktop.in.in gnome-dummy.session.desktop.in.in - session_in_files = $(session_in_in_files:.session.desktop.in.in=.session.desktop.in) - session_DATA = $(session_in_files:.session.desktop.in=.session) - - %.session.desktop.in: %.session.desktop.in.in Makefile - $(AM_V_GEN)sed \ - -e "s|\@LIBEXECDIR\@|$(libexecdir)|" \ - $< > $@ - - %.session: %.session.desktop.in $(INTLTOOL_MERGE) $(wildcard $(top_srcdir)/po/*.po) ; LC_ALL=C $(INTLTOOL_MERGE) -d -u -c $(top_builddir)/po/.intltool-merge-cache $(top_srcdir)/po $< $@ - - @INTLTOOL_DESKTOP_RULE@ - @INTLTOOL_XML_NOMERGE_RULE@ - - gsettings_SCHEMAS = org.gnome.SessionManager.gschema.xml - @GSETTINGS_RULES@ - - migrationdir = $(datadir)/GConf/gsettings - dist_migration_DATA = gnome-session.convert - - EXTRA_DIST = \ - $(xsession_in_files) \ - $(session_in_in_files) \ - $(wayland_session_in_files) \ - $(gsettings_SCHEMAS:.xml=.xml.in) \ - session-selector.ui \ - gnome-custom-session.desktop.in \ -diff --git a/data/gnome-session-properties.desktop.in.in b/data/session-properties.desktop.in.in -similarity index 100% + install_data( + data, + install_dir: session_pkgdatadir + ) + +-desktop = 'gnome-session-properties.desktop' ++desktop = 'session-properties.desktop' + + i18n.merge_file( + desktop, + type: 'desktop', + input: desktop + '.in', + output: desktop, + po_dir: po_dir, + install: true, + install_dir: join_paths(session_datadir, 'applications') + ) + +diff --git a/data/gnome-session-properties.desktop.in.in b/data/session-properties.desktop.in +similarity index 81% rename from data/gnome-session-properties.desktop.in.in -rename to data/session-properties.desktop.in.in +rename to data/session-properties.desktop.in +index 3dc7b033..dcd39ca5 100644 +--- a/data/gnome-session-properties.desktop.in.in ++++ b/data/session-properties.desktop.in +@@ -1,15 +1,15 @@ + [Desktop Entry] +-_Name=Startup Applications +-_Comment=Choose what applications to start when you log in ++Name=Startup Applications ++Comment=Choose what applications to start when you log in + Exec=gnome-session-properties + Icon=session-properties + Terminal=false + Type=Application + StartupNotify=true + Categories=GTK;GNOME;Settings;X-GNOME-PersonalSettings; + OnlyShowIn=GNOME;Unity; + NoDisplay=true + X-GNOME-Bugzilla-Bugzilla=GNOME + X-GNOME-Bugzilla-Product=gnome-session + X-GNOME-Bugzilla-Component=gnome-session-properties + X-GNOME-Bugzilla-Version=@VERSION@ diff --git a/po/POTFILES.in b/po/POTFILES.in -index 5cb5123d..08d2eb06 100644 +index 87555685..e8f0e6eb 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in -@@ -1,24 +1,25 @@ +@@ -1,24 +1,24 @@ # List of source files containing translatable strings. # Please keep this file sorted alphabetically. capplet/gsm-app-dialog.c @@ -165,10 +102,10 @@ index 5cb5123d..08d2eb06 100644 data/gnome-xorg.desktop.in data/gnome-dummy.session.desktop.in.in data/gnome.session.desktop.in.in - data/gnome-session-properties.desktop.in.in - [type: gettext/glade]data/session-selector.ui -+data/session-properties.desktop.in.in - [type: gettext/glade]data/session-properties.ui +-data/gnome-session-properties.desktop.in.in ++data/session-properties.desktop.in + data/session-selector.ui + data/session-properties.ui gnome-session/gsm-fail-whale-dialog.c gnome-session/gsm-manager.c gnome-session/gsm-process-helper.c @@ -179,17 +116,3 @@ index 5cb5123d..08d2eb06 100644 tools/gnome-session-inhibit.c tools/gnome-session-selector.c tools/gnome-session-quit.c -diff --git a/po/POTFILES.skip b/po/POTFILES.skip -index 91b41569..e6470914 100644 ---- a/po/POTFILES.skip -+++ b/po/POTFILES.skip -@@ -1,5 +1,6 @@ - # List of source files containing translatable strings that should not be - # translated. - # Please keep this file sorted alphabetically. - data/gnome-dummy.session.desktop.in - data/gnome.session.desktop.in -+data/session-properties.desktop.in --- -2.14.2 - diff --git a/SOURCES/0004-stop-using-gsm_util_get_current_desktop.patch b/SOURCES/0004-stop-using-gsm_util_get_current_desktop.patch index 67eb7e8..c48fdcd 100644 --- a/SOURCES/0004-stop-using-gsm_util_get_current_desktop.patch +++ b/SOURCES/0004-stop-using-gsm_util_get_current_desktop.patch @@ -1,11 +1,11 @@ -From 2a087ede1b20e8dcac1c37c0b280f9bf6be7c93b Mon Sep 17 00:00:00 2001 +From 6bb533cf0a1bd0eb8b60f26ad022753608e519e8 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 13 May 2015 10:56:09 -0400 Subject: [PATCH 04/19] stop using gsm_util_get_current_desktop It no longer exists. --- - capplet/gsp-app.c | 111 +++++++++++++++++++++++++++++------------------------- + capplet/gsp-app.c | 111 +++++++++++++++++++++++++--------------------- 1 file changed, 60 insertions(+), 51 deletions(-) diff --git a/capplet/gsp-app.c b/capplet/gsp-app.c @@ -437,5 +437,5 @@ index c92b8dad..123ab217 100644 char *filename; char *basename; -- -2.14.2 +2.17.0 diff --git a/SOURCES/0005-session-properties-get-out-of-Other.patch b/SOURCES/0005-session-properties-get-out-of-Other.patch index cc10d03..8f48797 100644 --- a/SOURCES/0005-session-properties-get-out-of-Other.patch +++ b/SOURCES/0005-session-properties-get-out-of-Other.patch @@ -1,21 +1,21 @@ -From 119ac97cea3b362e53aaa236f643f9bb916a03cb Mon Sep 17 00:00:00 2001 +From 430d26885e3f42e5eb9807fc62265f03eb72ed60 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Dec 2013 15:07:35 -0500 Subject: [PATCH 05/19] session-properties: get out of Other Put it in the menus next to Settings and Software --- - data/session-properties.desktop.in.in | 2 +- + data/session-properties.desktop.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) -diff --git a/data/session-properties.desktop.in.in b/data/session-properties.desktop.in.in -index 3dc7b033..dcfe2f84 100644 ---- a/data/session-properties.desktop.in.in -+++ b/data/session-properties.desktop.in.in +diff --git a/data/session-properties.desktop.in b/data/session-properties.desktop.in +index dcd39ca5..2c86b6b6 100644 +--- a/data/session-properties.desktop.in ++++ b/data/session-properties.desktop.in @@ -1,15 +1,15 @@ [Desktop Entry] - _Name=Startup Applications - _Comment=Choose what applications to start when you log in + Name=Startup Applications + Comment=Choose what applications to start when you log in Exec=gnome-session-properties Icon=session-properties Terminal=false @@ -30,5 +30,5 @@ index 3dc7b033..dcfe2f84 100644 X-GNOME-Bugzilla-Component=gnome-session-properties X-GNOME-Bugzilla-Version=@VERSION@ -- -2.14.2 +2.17.0 diff --git a/SOURCES/0006-session-properties-refresh-from-recent-glade.patch b/SOURCES/0006-session-properties-refresh-from-recent-glade.patch index 036e50b..bd52249 100644 --- a/SOURCES/0006-session-properties-refresh-from-recent-glade.patch +++ b/SOURCES/0006-session-properties-refresh-from-recent-glade.patch @@ -1,4 +1,4 @@ -From 805c9f995da83c173f9323f55a3f26b627410553 Mon Sep 17 00:00:00 2001 +From 625f6e779a23739b1c8e04c810a17b608df129c6 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Dec 2013 10:53:33 -0500 Subject: [PATCH 06/19] session-properties: refresh from recent glade @@ -7,7 +7,7 @@ The ui file is rather old. This commit just opens it up in a recent glade and resaves it, so we have a fresh starting point to make changes. --- - data/session-properties.ui | 43 ++++++++++++++++++++++++++++++++++--------- + data/session-properties.ui | 43 ++++++++++++++++++++++++++++++-------- 1 file changed, 34 insertions(+), 9 deletions(-) diff --git a/data/session-properties.ui b/data/session-properties.ui @@ -373,5 +373,5 @@ index 1f0cb9a5..47a30f78 100644 -- -2.14.2 +2.17.0 diff --git a/SOURCES/0007-manager-Don-t-clear-saved-session-if-autosaving-is-d.patch b/SOURCES/0007-manager-Don-t-clear-saved-session-if-autosaving-is-d.patch index a2cd28a..aa9da43 100644 --- a/SOURCES/0007-manager-Don-t-clear-saved-session-if-autosaving-is-d.patch +++ b/SOURCES/0007-manager-Don-t-clear-saved-session-if-autosaving-is-d.patch @@ -1,4 +1,4 @@ -From eb9b29eeb55c47d691b65b046e31ede815e3d22c Mon Sep 17 00:00:00 2001 +From 89ae27922b1a07f310ca51957294bedca47e54d9 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Dec 2013 16:14:16 -0500 Subject: [PATCH 07/19] manager: Don't clear saved session if autosaving is @@ -11,7 +11,7 @@ we don't wipe that away at log out. 1 file changed, 1 deletion(-) diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c -index bdba38e8..e2fad3b1 100644 +index 3cf421cd..4bb81e04 100644 --- a/gnome-session/gsm-manager.c +++ b/gnome-session/gsm-manager.c @@ -1828,61 +1828,60 @@ on_xsmp_client_register_confirmed (GsmXSMPClient *client, @@ -50,7 +50,7 @@ index bdba38e8..e2fad3b1 100644 } error = NULL; - gsm_session_save (manager->priv->clients, &error); + gsm_session_save (manager->priv->clients, manager->priv->apps, &error); if (error) { g_warning ("Error saving session: %s", error->message); @@ -77,5 +77,5 @@ index bdba38e8..e2fad3b1 100644 cancel_end_session (manager); return; -- -2.14.2 +2.17.0 diff --git a/SOURCES/0008-Add-Remember-Currently-Running-Applications-button.patch b/SOURCES/0008-Add-Remember-Currently-Running-Applications-button.patch index c9ec2ac..3a886fc 100644 --- a/SOURCES/0008-Add-Remember-Currently-Running-Applications-button.patch +++ b/SOURCES/0008-Add-Remember-Currently-Running-Applications-button.patch @@ -1,22 +1,23 @@ -From cae19300c8035b84c71f6ba5fb17d86add2465dd Mon Sep 17 00:00:00 2001 +From ade647861a671eca584d25432722ac2661854748 Mon Sep 17 00:00:00 2001 From: Josselin Mouette Date: Mon, 21 Jun 2010 15:22:23 -0400 Subject: [PATCH 08/19] Add "Remember Currently Running Applications" button This adds back session saving that's not at logout. --- - capplet/gsm-properties-dialog.c | 63 +++++++++++- - configure.ac | 1 + - data/session-properties.ui | 12 +++ + capplet/gsm-properties-dialog.c | 63 ++++++++- + capplet/meson.build | 3 +- + data/session-properties.ui | 12 ++ gnome-session/gsm-client.c | 10 ++ - gnome-session/gsm-client.h | 6 ++ - gnome-session/gsm-dbus-client.c | 14 +++ - gnome-session/gsm-manager.c | 150 ++++++++++++++++++++++++++++- + gnome-session/gsm-client.h | 6 + + gnome-session/gsm-dbus-client.c | 14 ++ + gnome-session/gsm-manager.c | 150 ++++++++++++++++++++- gnome-session/gsm-manager.h | 3 + - gnome-session/gsm-xsmp-client.c | 37 +++++++ + gnome-session/gsm-xsmp-client.c | 37 +++++ gnome-session/gsm-xsmp-client.h | 3 +- gnome-session/org.gnome.SessionManager.xml | 8 ++ - 11 files changed, 303 insertions(+), 4 deletions(-) + meson.build | 1 + + 12 files changed, 305 insertions(+), 5 deletions(-) diff --git a/capplet/gsm-properties-dialog.c b/capplet/gsm-properties-dialog.c index 33812b8b..d2be778b 100644 @@ -221,72 +222,49 @@ index 33812b8b..d2be778b 100644 dialog->priv->tree_filter = tree_filter; gtk_tree_model_filter_set_visible_column (GTK_TREE_MODEL_FILTER (tree_filter), -diff --git a/configure.ac b/configure.ac -index 5182c09e..73e69bc7 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -51,60 +51,61 @@ if test "$enable_session_selector" = yes; then - PKG_CHECK_MODULES(SESSION_SELECTOR, gtk+-3.0 gio-2.0) - fi - - dnl ==================================================================== - dnl Dependency Checks - dnl ==================================================================== - - dnl Standard vertical stacks - PKG_CHECK_MODULES(GIO, gio-2.0) - PKG_CHECK_MODULES(GIOUNIX, gio-unix-2.0 >= $GLIB_REQUIRED) - PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= $GTK3_REQUIRED) - - PKG_CHECK_MODULES(GNOME_SESSION, - glib-2.0 >= $GLIB_REQUIRED - gio-2.0 >= $GLIB_REQUIRED - json-glib-1.0 >= $JSON_GLIB_REQUIRED - gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED +diff --git a/capplet/meson.build b/capplet/meson.build +index 8dad9c80..ae6cb6b9 100644 +--- a/capplet/meson.build ++++ b/capplet/meson.build +@@ -1,36 +1,37 @@ + install_data( + install_dir: session_bindir ) - dnl We can only support old upower - dnl https://bugzilla.gnome.org/show_bug.cgi?id=710383 - PKG_CHECK_MODULES(UPOWER, upower-glib < 0.99.0, have_old_upower=yes, have_old_upower=no) - AS_IF([test x$have_old_upower = xyes], [ - AC_DEFINE([HAVE_OLD_UPOWER], [1], [Define if we have an older upower]) - ]) - AM_CONDITIONAL(HAVE_OLD_UPOWER, test x$have_old_upower = xyes) - - PKG_CHECK_MODULES(SESSION_PROPERTIES, - glib-2.0 >= $GLIB_REQUIRED - gtk+-3.0 >= $GTK3_REQUIRED -+ dbus-glib-1 >= $DBUS_GLIB_REQUIRED + deps = session_deps + [ + glib_dep, + gtk_dep, + x11_dep, + sm_dep, +- ice_dep ++ ice_dep, ++ dbus_glib_dep + ] + + cflags = [ + '-DLOCALE_DIR="@0@"'.format(session_localedir), + '-DGTKBUILDER_DIR="@0@"'.format(session_pkgdatadir) + ] + + sources = files( + '../gnome-session/gsm-util.c', + 'gsm-app-dialog.c', + 'gsm-properties-dialog.c', + 'gsp-app.c', + 'gsp-app-manager.c', + 'gsp-keyfile.c', + 'main.c' ) - PKG_CHECK_MODULES(X11, x11) - PKG_CHECK_MODULES(SM, sm) - PKG_CHECK_MODULES(ICE, ice) - PKG_CHECK_MODULES(XEXT, xext xau) - - PKG_CHECK_MODULES(GL_TEST, xcomposite gl glib-2.0 epoxy) - PKG_CHECK_MODULES(GLES_TEST, egl glesv2) - - dnl ==================================================================== - dnl Check for gconf - dnl ==================================================================== - AC_ARG_ENABLE([gconf], - AS_HELP_STRING([--enable-gconf], [Support gconf-based autostart]), - [enable_gconf=$enableval], - [enable_gconf=auto]) - - if test x$enable_gconf != xno ; then - PKG_CHECK_MODULES(GCONF, gconf-2.0, [have_gconf=yes], [have_gconf=no]) - - if test x$enable_gconf = xyes -a x$have_gconf = xno ; then - AC_MSG_ERROR([GConf support explicitly required, but gconf not found]) - fi - - if test x$have_gconf = xyes ; then - AC_DEFINE([HAVE_GCONF], [1], [Define if we support gconf-based autostart]) - fi - fi - + executable( + 'gnome-session-properties', + sources, + include_directories: [ top_inc, include_directories('../gnome-session') ], + dependencies: deps, + c_args: cflags, + install: true, + install_dir: session_bindir + ) diff --git a/data/session-properties.ui b/data/session-properties.ui index 47a30f78..b43759ff 100644 --- a/data/session-properties.ui @@ -413,10 +391,10 @@ index 47a30f78..b43759ff 100644 False 12 diff --git a/gnome-session/gsm-client.c b/gnome-session/gsm-client.c -index 75edbbff..7b78d9e1 100644 +index 6828ad44..3f216b22 100644 --- a/gnome-session/gsm-client.c +++ b/gnome-session/gsm-client.c -@@ -514,49 +514,59 @@ gsm_client_query_end_session (GsmClient *client, +@@ -514,50 +514,60 @@ gsm_client_query_end_session (GsmClient *client, g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE); return GSM_CLIENT_GET_CLASS (client)->impl_query_end_session (client, flags, error); @@ -459,11 +437,12 @@ index 75edbbff..7b78d9e1 100644 + GKeyFile * gsm_client_save (GsmClient *client, + GsmApp *app, GError **error) { g_return_val_if_fail (GSM_IS_CLIENT (client), FALSE); - return GSM_CLIENT_GET_CLASS (client)->impl_save (client, error); + return GSM_CLIENT_GET_CLASS (client)->impl_save (client, app, error); } void @@ -477,10 +456,10 @@ index 75edbbff..7b78d9e1 100644 is_ok, do_last, cancel, reason); } diff --git a/gnome-session/gsm-client.h b/gnome-session/gsm-client.h -index cd7c06d8..f79896b3 100644 +index 78cb15d8..19c9cd8d 100644 --- a/gnome-session/gsm-client.h +++ b/gnome-session/gsm-client.h -@@ -63,89 +63,95 @@ struct _GsmClient +@@ -64,91 +64,97 @@ struct _GsmClient GObject parent; GsmClientPrivate *priv; }; @@ -515,6 +494,7 @@ index cd7c06d8..f79896b3 100644 + guint flags, + GError **error); GKeyFile * (*impl_save) (GsmClient *client, + GsmApp *app, GError **error); }; @@ -560,6 +540,7 @@ index cd7c06d8..f79896b3 100644 + guint flags, + GError **error); GKeyFile *gsm_client_save (GsmClient *client, + GsmApp *app, GError **error); gboolean gsm_client_stop (GsmClient *client, @@ -577,7 +558,7 @@ index cd7c06d8..f79896b3 100644 #endif /* __GSM_CLIENT_H__ */ diff --git a/gnome-session/gsm-dbus-client.c b/gnome-session/gsm-dbus-client.c -index dcf96f0b..050ea18f 100644 +index 6e9b002b..5793f830 100644 --- a/gnome-session/gsm-dbus-client.c +++ b/gnome-session/gsm-dbus-client.c @@ -300,60 +300,73 @@ gsm_dbus_client_get_property (GObject *object, @@ -626,6 +607,7 @@ index dcf96f0b..050ea18f 100644 + static GKeyFile * dbus_client_save (GsmClient *client, + GsmApp *app, GError **error) { g_debug ("GsmDBusClient: saving client with id %s", @@ -653,8 +635,7 @@ index dcf96f0b..050ea18f 100644 return NULL; } - static GsmClientRestartStyle -@@ -393,60 +406,61 @@ static gboolean +@@ -394,60 +407,61 @@ static gboolean dbus_client_end_session (GsmClient *client, GsmClientEndSessionFlag flags, GError **error) @@ -717,7 +698,7 @@ index dcf96f0b..050ea18f 100644 "bus-name", bus_name, NULL); diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c -index e2fad3b1..825a6846 100644 +index 4bb81e04..ede4186a 100644 --- a/gnome-session/gsm-manager.c +++ b/gnome-session/gsm-manager.c @@ -54,60 +54,61 @@ @@ -997,7 +978,7 @@ index e2fad3b1..825a6846 100644 } error = NULL; - gsm_session_save (manager->priv->clients, &error); + gsm_session_save (manager->priv->clients, manager->priv->apps, &error); if (error) { g_warning ("Error saving session: %s", error->message); @@ -1315,7 +1296,7 @@ index bc440cb0..4d14aa34 100644 #endif /* __GSM_MANAGER_H */ diff --git a/gnome-session/gsm-xsmp-client.c b/gnome-session/gsm-xsmp-client.c -index 9358f94c..2846d9b3 100644 +index 8a30926f..cbecd68c 100644 --- a/gnome-session/gsm-xsmp-client.c +++ b/gnome-session/gsm-xsmp-client.c @@ -39,60 +39,61 @@ @@ -1465,7 +1446,7 @@ index 9358f94c..2846d9b3 100644 desktop_file_path = gsm_util_find_desktop_file_for_app_name (program_name, TRUE, FALSE); -@@ -955,100 +980,112 @@ xsmp_get_unix_process_id (GsmClient *client) +@@ -964,100 +989,112 @@ xsmp_get_unix_process_id (GsmClient *client) gboolean res; g_debug ("GsmXSMPClient: getting pid"); @@ -1719,6 +1700,72 @@ index 580ec356..29eb0990 100644 0 Normal. +diff --git a/meson.build b/meson.build +index 9a16d5b1..24221bb6 100644 +--- a/meson.build ++++ b/meson.build +@@ -72,60 +72,61 @@ if enable_deprecation_flags + endif + + compiler_flags = [] + if session_debug + test_cflags = [ + '-Werror=format=2', + '-Werror=implicit-function-declaration', + '-Werror=init-self', + '-Werror=missing-include-dirs', + '-Werror=missing-prototypes', + '-Werror=pointer-arith', + '-Werror=return-type', + '-Wnested-externs', + '-Wstrict-prototypes' + ] + + compiler_flags += cc.get_supported_arguments(test_cflags) + endif + + add_project_arguments(common_flags + compiler_flags, language: 'c') + + glib_req_version = '>= 2.46.0' + + gio_dep = dependency('gio-2.0', version: glib_req_version) + glib_dep = dependency('glib-2.0', version: glib_req_version) + gtk_dep = dependency('gtk+-3.0', version: '>= 3.18.0') + xtrans_dep = dependency('xtrans') + ice_dep = dependency('ice') + sm_dep = dependency('sm') + x11_dep = dependency('x11') ++dbus_glib_dep = dependency('dbus-glib-1') + + session_deps = [ + gio_dep, + glib_dep, + dependency('gnome-desktop-3.0', version: '>= 3.18.0'), + dependency('json-glib-1.0', version: '>= 0.10') + ] + + session_bin_deps = session_deps + [ + xtrans_dep, + ice_dep, + sm_dep + ] + + # Check for session selector GTK+ UI + enable_session_selector = get_option('session_selector') + + # Check for session tracking backend + session_tracking = 'null backend' + + enable_systemd = get_option('systemd') + enable_systemd_journal = get_option('systemd_journal') + enable_consolekit = get_option('consolekit') + if enable_systemd or enable_consolekit + session_bin_deps += dependency('gio-unix-2.0', version: glib_req_version) + + # Check for systemd + if enable_systemd + libsystemd_dep = dependency('libsystemd', version: '>= 209', required: false) + session_bin_deps += libsystemd_dep -- -2.14.2 +2.17.0 diff --git a/SOURCES/0009-Revert-Allow-saved-session-to-be-a-symlink.patch b/SOURCES/0009-Revert-Allow-saved-session-to-be-a-symlink.patch index 2cb0afd..8f3426c 100644 --- a/SOURCES/0009-Revert-Allow-saved-session-to-be-a-symlink.patch +++ b/SOURCES/0009-Revert-Allow-saved-session-to-be-a-symlink.patch @@ -1,20 +1,19 @@ -From abf8b3509a0debaf124669d9626a6d9883a1a0d3 Mon Sep 17 00:00:00 2001 +From 489166afdd82af3ec4897c8369a89bbaeffea2d9 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Dec 2013 11:22:07 -0500 Subject: [PATCH 09/19] Revert "Allow saved-session to be a symlink" This reverts commit b733c2ee519b65c3c4eab0d0e93056412f995f3f. --- - gnome-session/gsm-session-save.c | 32 ++++++++++++++++++++++++++++---- + gnome-session/gsm-session-save.c | 33 +++++++++++++++++++++++++++----- gnome-session/gsm-util.c | 6 ++++++ - 2 files changed, 34 insertions(+), 4 deletions(-) + 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/gnome-session/gsm-session-save.c b/gnome-session/gsm-session-save.c -index d6000e09..eebc5ff1 100644 +index a71a6181..04b5277c 100644 --- a/gnome-session/gsm-session-save.c +++ b/gnome-session/gsm-session-save.c -@@ -9,61 +9,61 @@ - * +@@ -10,61 +10,61 @@ * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU @@ -30,6 +29,7 @@ index d6000e09..eebc5ff1 100644 #include #include + #include "gsm-app.h" #include "gsm-util.h" #include "gsm-autostart-app.h" #include "gsm-client.h" @@ -47,37 +47,36 @@ index d6000e09..eebc5ff1 100644 - const char *dir; + char *dir; GHashTable *discard_hash; + GsmStore *app_store; GError **error; } SessionSaveData; static gboolean + _app_has_app_id (const char *id, + GsmApp *app, + const char *app_id_a) + { + const char *app_id_b; + + app_id_b = gsm_app_peek_app_id (app); + return g_strcmp0 (app_id_a, app_id_b) == 0; + } + + static gboolean save_one_client (char *id, GObject *object, SessionSaveData *data) { GsmClient *client; GKeyFile *keyfile; + GsmApp *app = NULL; const char *app_id; char *path = NULL; char *filename = NULL; char *contents = NULL; gsize length = 0; char *discard_exec; - GError *local_error; - - client = GSM_CLIENT (object); - - local_error = NULL; - - keyfile = gsm_client_save (client, &local_error); - - if (keyfile == NULL || local_error) { - goto out; - } - - contents = g_key_file_to_data (keyfile, &length, &local_error); -@@ -112,89 +112,113 @@ save_one_client (char *id, - } +@@ -130,91 +130,114 @@ save_one_client (char *id, g_debug ("GsmSessionSave: saved client %s to %s", id, filename); @@ -103,6 +102,7 @@ index d6000e09..eebc5ff1 100644 void gsm_session_save (GsmStore *client_store, + GsmStore *app_store, GError **error) { GSettings *settings; @@ -137,6 +137,8 @@ index d6000e09..eebc5ff1 100644 + data.dir = tmp_dir; data.discard_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + data.app_store = app_store; +- - /* remove old saved session */ - gsm_session_clear_saved_session (save_dir, data.discard_hash); data.error = error; @@ -194,7 +196,7 @@ index d6000e09..eebc5ff1 100644 goto out; diff --git a/gnome-session/gsm-util.c b/gnome-session/gsm-util.c -index 4772c6e6..30edb577 100644 +index acb446a3..b086568c 100644 --- a/gnome-session/gsm-util.c +++ b/gnome-session/gsm-util.c @@ -71,63 +71,69 @@ gsm_util_find_desktop_file_for_app_name (const char *name, @@ -231,7 +233,7 @@ index 4772c6e6..30edb577 100644 + if (g_file_test (dir, G_FILE_TEST_IS_DIR)) + return TRUE; + - if (g_mkdir_with_parents (dir, 0755) == 0) + if (g_mkdir_with_parents (dir, 0700) == 0) return TRUE; + if (errno == EEXIST) @@ -268,5 +270,5 @@ index 4772c6e6..30edb577 100644 if (dir) { while ((filename = g_dir_read_name (dir))) { -- -2.14.2 +2.17.0 diff --git a/SOURCES/0010-Allow-saved-session-directory-to-be-a-symlink.patch b/SOURCES/0010-Allow-saved-session-directory-to-be-a-symlink.patch index c026ffa..86d0cea 100644 --- a/SOURCES/0010-Allow-saved-session-directory-to-be-a-symlink.patch +++ b/SOURCES/0010-Allow-saved-session-directory-to-be-a-symlink.patch @@ -1,4 +1,4 @@ -From 7c05176e0db2b4d00971a5baf940ad075a088c70 Mon Sep 17 00:00:00 2001 +From 617844d602dd35aceb393b803ed76b15dc125983 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Dec 2013 11:22:53 -0500 Subject: [PATCH 10/19] Allow saved-session directory to be a symlink @@ -6,16 +6,15 @@ Subject: [PATCH 10/19] Allow saved-session directory to be a symlink This gives us the option of adding a rudimentary session chooser later. --- - gnome-session/gsm-session-save.c | 36 ++++++++++++++++++++++++++++++------ + gnome-session/gsm-session-save.c | 36 ++++++++++++++++++++++++++------ gnome-session/gsm-util.c | 6 ------ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/gnome-session/gsm-session-save.c b/gnome-session/gsm-session-save.c -index eebc5ff1..66914b57 100644 +index 04b5277c..7cbc72fe 100644 --- a/gnome-session/gsm-session-save.c +++ b/gnome-session/gsm-session-save.c -@@ -148,67 +148,91 @@ gsm_session_save (GsmStore *client_store, - * one shot only) +@@ -167,67 +167,91 @@ gsm_session_save (GsmStore *client_store, */ settings = g_settings_new (GSM_MANAGER_SCHEMA); g_settings_set_boolean (settings, KEY_AUTOSAVE_ONE_SHOT, FALSE); @@ -38,6 +37,7 @@ index eebc5ff1..66914b57 100644 data.dir = tmp_dir; data.discard_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + data.app_store = app_store; data.error = error; gsm_store_foreach (client_store, @@ -113,7 +113,7 @@ index eebc5ff1..66914b57 100644 int argc; diff --git a/gnome-session/gsm-util.c b/gnome-session/gsm-util.c -index 30edb577..4772c6e6 100644 +index b086568c..acb446a3 100644 --- a/gnome-session/gsm-util.c +++ b/gnome-session/gsm-util.c @@ -71,69 +71,63 @@ gsm_util_find_desktop_file_for_app_name (const char *name, @@ -150,7 +150,7 @@ index 30edb577..4772c6e6 100644 - if (g_file_test (dir, G_FILE_TEST_IS_DIR)) - return TRUE; - - if (g_mkdir_with_parents (dir, 0755) == 0) + if (g_mkdir_with_parents (dir, 0700) == 0) return TRUE; - if (errno == EEXIST) @@ -187,5 +187,5 @@ index 30edb577..4772c6e6 100644 if (dir) { while ((filename = g_dir_read_name (dir))) { -- -2.14.2 +2.17.0 diff --git a/SOURCES/0011-Tie-session-selector-to-properties-dialog.patch b/SOURCES/0011-Tie-session-selector-to-properties-dialog.patch index fc1e2ce..d5ca9e5 100644 --- a/SOURCES/0011-Tie-session-selector-to-properties-dialog.patch +++ b/SOURCES/0011-Tie-session-selector-to-properties-dialog.patch @@ -1,15 +1,14 @@ -From 63b277e801d8bce92abe4e52f7de4cf059f1f896 Mon Sep 17 00:00:00 2001 +From 7a80fca7e35d35eda415d4823ce54a4d45afb136 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Dec 2013 11:28:53 -0500 Subject: [PATCH 11/19] Tie session selector to properties dialog --- - capplet/gsm-properties-dialog.c | 30 +++++- - configure.ac | 3 +- + capplet/gsm-properties-dialog.c | 30 ++++- data/session-selector.ui | 2 +- - tools/Makefile.am | 1 + - tools/gnome-session-selector.c | 211 ++++++++++++++++++++++++++++++++-------- - 5 files changed, 200 insertions(+), 47 deletions(-) + tools/gnome-session-selector.c | 211 +++++++++++++++++++++++++------- + tools/meson.build | 3 +- + 4 files changed, 200 insertions(+), 46 deletions(-) diff --git a/capplet/gsm-properties-dialog.c b/capplet/gsm-properties-dialog.c index d2be778b..51fa5106 100644 @@ -131,103 +130,6 @@ index d2be778b..51fa5106 100644 gtk_tree_model_filter_set_visible_column (GTK_TREE_MODEL_FILTER (tree_filter), STORE_COL_VISIBLE); -diff --git a/configure.ac b/configure.ac -index 73e69bc7..d0eeab8a 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -21,91 +21,90 @@ LT_PREREQ([2.2.6]) - LT_INIT([dlopen disable-static]) - - GNOME_MAINTAINER_MODE_DEFINES - GNOME_COMPILE_WARNINGS([maximum]) - - AC_ARG_ENABLE(deprecation_flags, - [AS_HELP_STRING([--enable-deprecation-flags], - [use *_DISABLE_DEPRECATED flags @<:@default=no@:>@])],, - [enable_deprecation_flags=no]) - - if test "x$enable_deprecation_flags" = "xyes"; then - DISABLE_DEPRECATED_CFLAGS=$DISABLE_DEPRECATED - AC_SUBST([DISABLE_DEPRECATED_CFLAGS]) - fi - - GLIB_REQUIRED=2.46.0 - GTK3_REQUIRED=3.18.0 - DBUS_GLIB_REQUIRED=0.76 - UPOWER_REQUIRED=0.9.0 - JSON_GLIB_REQUIRED=0.10 - GNOME_DESKTOP_REQUIRED=3.18.0 - - AC_ARG_ENABLE(session-selector, AS_HELP_STRING([--enable-session-selector], - [enable building a custom session selector dialog]), - enable_session_selector=$enableval,enable_session_selector=no) - - AM_CONDITIONAL(BUILD_SESSION_SELECTOR, - [test "$enable_session_selector" = yes]) - - if test "$enable_session_selector" = yes; then -- PKG_CHECK_MODULES(SESSION_SELECTOR, gtk+-3.0 gio-2.0) -+ PKG_CHECK_MODULES(SESSION_SELECTOR, gtk+-3.0 gio-2.0 dbus-glib-1 >= $DBUS_GLIB_REQUIRED) - fi - - dnl ==================================================================== - dnl Dependency Checks - dnl ==================================================================== - - dnl Standard vertical stacks - PKG_CHECK_MODULES(GIO, gio-2.0) - PKG_CHECK_MODULES(GIOUNIX, gio-unix-2.0 >= $GLIB_REQUIRED) - PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= $GTK3_REQUIRED) - - PKG_CHECK_MODULES(GNOME_SESSION, - glib-2.0 >= $GLIB_REQUIRED - gio-2.0 >= $GLIB_REQUIRED - json-glib-1.0 >= $JSON_GLIB_REQUIRED - gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED - ) - - dnl We can only support old upower - dnl https://bugzilla.gnome.org/show_bug.cgi?id=710383 - PKG_CHECK_MODULES(UPOWER, upower-glib < 0.99.0, have_old_upower=yes, have_old_upower=no) - AS_IF([test x$have_old_upower = xyes], [ - AC_DEFINE([HAVE_OLD_UPOWER], [1], [Define if we have an older upower]) - ]) - AM_CONDITIONAL(HAVE_OLD_UPOWER, test x$have_old_upower = xyes) - - PKG_CHECK_MODULES(SESSION_PROPERTIES, - glib-2.0 >= $GLIB_REQUIRED - gtk+-3.0 >= $GTK3_REQUIRED -- dbus-glib-1 >= $DBUS_GLIB_REQUIRED - ) - - PKG_CHECK_MODULES(X11, x11) - PKG_CHECK_MODULES(SM, sm) - PKG_CHECK_MODULES(ICE, ice) - PKG_CHECK_MODULES(XEXT, xext xau) - - PKG_CHECK_MODULES(GL_TEST, xcomposite gl glib-2.0 epoxy) - PKG_CHECK_MODULES(GLES_TEST, egl glesv2) - - dnl ==================================================================== - dnl Check for gconf - dnl ==================================================================== - AC_ARG_ENABLE([gconf], - AS_HELP_STRING([--enable-gconf], [Support gconf-based autostart]), - [enable_gconf=$enableval], - [enable_gconf=auto]) - - if test x$enable_gconf != xno ; then - PKG_CHECK_MODULES(GCONF, gconf-2.0, [have_gconf=yes], [have_gconf=no]) - - if test x$enable_gconf = xyes -a x$have_gconf = xno ; then - AC_MSG_ERROR([GConf support explicitly required, but gconf not found]) - fi - - if test x$have_gconf = xyes ; then - AC_DEFINE([HAVE_GCONF], [1], [Define if we support gconf-based autostart]) - fi - fi - diff --git a/data/session-selector.ui b/data/session-selector.ui index 1c55712d..1534a746 100644 --- a/data/session-selector.ui @@ -295,49 +197,6 @@ index 1c55712d..1534a746 100644 True True never -diff --git a/tools/Makefile.am b/tools/Makefile.am -index d3b8bf3f..d6784d1b 100644 ---- a/tools/Makefile.am -+++ b/tools/Makefile.am -@@ -68,37 +68,38 @@ gnome_session_check_accelerated_gl_helper_CPPFLAGS = \ - - gnome_session_check_accelerated_gl_helper_LDADD = \ - $(GL_TEST_LIBS) \ - $(X11_LIBS) - - gnome_session_check_accelerated_SOURCES = \ - gnome-session-check-accelerated-common.h \ - gnome-session-check-accelerated.c - - gnome_session_check_accelerated_CPPFLAGS = \ - -DLIBEXECDIR=\""$(libexecdir)"\" \ - $(AM_CPPFLAGS) \ - $(GTK3_CFLAGS) \ - $(GL_TEST_CFLAGS) - - gnome_session_check_accelerated_LDADD = \ - $(GTK3_LIBS) \ - $(X11_LIBS) \ - $(GL_TEST_LIBS) - - if BUILD_SESSION_SELECTOR - gnome_session_selector_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - $(GNOME_SESSION_CFLAGS) \ - $(DBUS_GLIB_CFLAGS) \ - -DGTKBUILDER_DIR=\""$(pkgdatadir)"\" \ - -DLOCALE_DIR=\""$(datadir)/locale"\" \ - $(DISABLE_DEPRECATED_CFLAGS) - - gnome_session_selector_LDADD = \ -+ $(DBUS_GLIB_CFLAGS) \ - $(SESSION_SELECTOR_LIBS) - - gnome_session_selector_SOURCES = \ - gnome-session-selector.c - endif - - -include $(top_srcdir)/git.mk diff --git a/tools/gnome-session-selector.c b/tools/gnome-session-selector.c index 71892c43..53822f6c 100644 --- a/tools/gnome-session-selector.c @@ -1157,6 +1016,65 @@ index 71892c43..53822f6c 100644 return 0; } +diff --git a/tools/meson.build b/tools/meson.build +index 10ee918c..4bd24220 100644 +--- a/tools/meson.build ++++ b/tools/meson.build +@@ -1,52 +1,53 @@ + install_data( + 'gnome-session-custom-session', + install_dir: session_bindir + ) + + deps = session_deps + [ + sm_dep, + ice_dep + ] + + cflags = ['-DLOCALE_DIR="@0@"'.format(session_localedir)] + + programs = [ + # name, deps, cflags, install_dir + ['gnome-session-quit', deps, cflags, session_bindir], + ['gnome-session-inhibit', session_deps, cflags, session_bindir] + ] + + if enable_session_selector + deps = [ + glib_dep, +- gtk_dep ++ gtk_dep, ++ dbus_glib_dep + ] + + cflags += '-DGTKBUILDER_DIR="@0@"'.format(session_pkgdatadir) + + programs += [['gnome-session-selector', deps, cflags, session_bindir]] + endif + + deps = [ + gtk_dep, + x11_dep, + dependency('egl'), + dependency('glesv2') + ] + + cflags = '-DPKGDATADIR="@0@"'.format(session_pkgdatadir) + + programs += [['gnome-session-check-accelerated-gles-helper', deps, cflags, session_libexecdir]] + + deps = [ + glib_dep, + x11_dep, + dependency('gl'), + dependency('epoxy'), + dependency('xcomposite') + ] + + programs += [['gnome-session-check-accelerated-gl-helper', deps, cflags, session_libexecdir]] + + deps += [gtk_dep] + -- -2.14.2 +2.17.0 diff --git a/SOURCES/0012-make-save-session-stall-until-it-finishes.patch b/SOURCES/0012-make-save-session-stall-until-it-finishes.patch index 5267a52..bcf542f 100644 --- a/SOURCES/0012-make-save-session-stall-until-it-finishes.patch +++ b/SOURCES/0012-make-save-session-stall-until-it-finishes.patch @@ -1,16 +1,16 @@ -From 7553acfe86151ed6bc6649f3e16e2a42c6435930 Mon Sep 17 00:00:00 2001 +From 2c8e2b38a52a09e0710953d77fe8d9072a127e72 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Dec 2013 11:32:52 -0500 Subject: [PATCH 12/19] make save-session stall until it finishes --- - gnome-session/gsm-manager.c | 58 ++++++++++++++++++++++++++---- + gnome-session/gsm-manager.c | 58 +++++++++++++++++++--- gnome-session/gsm-manager.h | 2 +- gnome-session/org.gnome.SessionManager.xml | 1 + 3 files changed, 53 insertions(+), 8 deletions(-) diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c -index 825a6846..6630aab8 100644 +index ede4186a..31dc67db 100644 --- a/gnome-session/gsm-manager.c +++ b/gnome-session/gsm-manager.c @@ -113,60 +113,61 @@ typedef enum @@ -425,5 +425,5 @@ index 29eb0990..ac73adc9 100644 Request a logout dialog -- -2.14.2 +2.17.0 diff --git a/SOURCES/0013-manager-save-session-type-in-session-dir.patch b/SOURCES/0013-manager-save-session-type-in-session-dir.patch index 1159639..fe19089 100644 --- a/SOURCES/0013-manager-save-session-type-in-session-dir.patch +++ b/SOURCES/0013-manager-save-session-type-in-session-dir.patch @@ -1,4 +1,4 @@ -From b92add119aa5b9813556db26477170dd39eca5b6 Mon Sep 17 00:00:00 2001 +From 2dad276ed4db5ee510689f41cd96180415ac4745 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Dec 2013 15:32:04 -0500 Subject: [PATCH 13/19] manager: save session type in session dir @@ -7,15 +7,15 @@ If a user saved their session when in classic mode, make sure we record that information so subsequent calls to gnome-session will restore classic mode. --- - gnome-session/gsm-manager.c | 21 ++++++++++++++++++-- + gnome-session/gsm-manager.c | 21 ++++++++++++++-- gnome-session/gsm-manager.h | 1 + - gnome-session/gsm-session-save.c | 41 +++++++++++++++++++++++++++++++++++++--- - gnome-session/gsm-session-save.h | 5 +++-- - gnome-session/main.c | 11 ++++++++++- - 5 files changed, 71 insertions(+), 8 deletions(-) + gnome-session/gsm-session-save.c | 43 +++++++++++++++++++++++++++++--- + gnome-session/gsm-session-save.h | 7 +++--- + gnome-session/main.c | 11 +++++++- + 5 files changed, 73 insertions(+), 10 deletions(-) diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c -index 6630aab8..135392fd 100644 +index 31dc67db..325c6c46 100644 --- a/gnome-session/gsm-manager.c +++ b/gnome-session/gsm-manager.c @@ -1260,61 +1260,61 @@ finish_pending_save_invocations (GsmManager *manager) @@ -50,7 +50,7 @@ index 6630aab8..135392fd 100644 } - gsm_session_save (manager->priv->clients, &error); -+ gsm_session_save (manager->priv->clients, manager->priv->session_name, &error); ++ gsm_session_save (manager->priv->clients, manager->priv->apps, manager->priv->session_name, &error); if (error) { g_warning ("Error saving session: %s", error->message); @@ -190,8 +190,8 @@ index 6630aab8..135392fd 100644 } error = NULL; -- gsm_session_save (manager->priv->clients, &error); -+ gsm_session_save (manager->priv->clients, manager->priv->session_name, &error); +- gsm_session_save (manager->priv->clients, manager->priv->apps, &error); ++ gsm_session_save (manager->priv->clients, manager->priv->apps, manager->priv->session_name, &error); if (error) { g_warning ("Error saving session: %s", error->message); @@ -280,10 +280,10 @@ index a8de58de..fcf36019 100644 #endif /* __GSM_MANAGER_H */ diff --git a/gnome-session/gsm-session-save.c b/gnome-session/gsm-session-save.c -index 66914b57..78b64197 100644 +index 7cbc72fe..22706953 100644 --- a/gnome-session/gsm-session-save.c +++ b/gnome-session/gsm-session-save.c -@@ -1,73 +1,105 @@ +@@ -1,75 +1,107 @@ /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- * gsm-session-save.c * Copyright (C) 2008 Lucas Rocha. @@ -310,6 +310,7 @@ index 66914b57..78b64197 100644 #include #include + #include "gsm-app.h" #include "gsm-util.h" #include "gsm-autostart-app.h" #include "gsm-client.h" @@ -326,6 +327,7 @@ index 66914b57..78b64197 100644 typedef struct { char *dir; GHashTable *discard_hash; + GsmStore *app_store; GError **error; } SessionSaveData; @@ -360,12 +362,24 @@ index 66914b57..78b64197 100644 +} + static gboolean + _app_has_app_id (const char *id, + GsmApp *app, + const char *app_id_a) + { + const char *app_id_b; + + app_id_b = gsm_app_peek_app_id (app); + return g_strcmp0 (app_id_a, app_id_b) == 0; + } + + static gboolean save_one_client (char *id, GObject *object, SessionSaveData *data) { GsmClient *client; GKeyFile *keyfile; + GsmApp *app = NULL; const char *app_id; char *path = NULL; char *filename = NULL; @@ -377,19 +391,7 @@ index 66914b57..78b64197 100644 client = GSM_CLIENT (object); local_error = NULL; - - keyfile = gsm_client_save (client, &local_error); - - if (keyfile == NULL || local_error) { - goto out; - } - - contents = g_key_file_to_data (keyfile, &length, &local_error); - - if (local_error) { - goto out; - } -@@ -107,112 +139,114 @@ save_one_client (char *id, +@@ -124,114 +156,116 @@ save_one_client (char *id, GSM_AUTOSTART_APP_DISCARD_KEY, NULL); if (discard_exec) { @@ -421,8 +423,10 @@ index 66914b57..78b64197 100644 void -gsm_session_save (GsmStore *client_store, +- GsmStore *app_store, - GError **error) +gsm_session_save (GsmStore *client_store, ++ GsmStore *app_store, + const char *type, + GError **error) { @@ -457,6 +461,7 @@ index 66914b57..78b64197 100644 data.dir = tmp_dir; data.discard_hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL); + data.app_store = app_store; data.error = error; gsm_store_foreach (client_store, @@ -507,7 +512,7 @@ index 66914b57..78b64197 100644 g_hash_table_destroy (data.discard_hash); g_free (tmp_dir); -@@ -294,31 +328,32 @@ gsm_session_clear_saved_session (const char *directory, +@@ -313,31 +347,32 @@ gsm_session_clear_saved_session (const char *directory, while ((filename = g_dir_read_name (dir))) { char *path = g_build_filename (directory, @@ -541,10 +546,10 @@ index 66914b57..78b64197 100644 + clear_session_type (save_dir); } diff --git a/gnome-session/gsm-session-save.h b/gnome-session/gsm-session-save.h -index e623260f..c91b5615 100644 +index f55c9c16..b32673c4 100644 --- a/gnome-session/gsm-session-save.h +++ b/gnome-session/gsm-session-save.h -@@ -1,33 +1,34 @@ +@@ -1,34 +1,35 @@ /* gsm-session-save.h * Copyright (C) 2008 Lucas Rocha. * @@ -572,8 +577,10 @@ index e623260f..c91b5615 100644 G_BEGIN_DECLS -void gsm_session_save (GsmStore *client_store, +- GsmStore *app_store, - GError **error); +void gsm_session_save (GsmStore *client_store, ++ GsmStore *app_store, + const char *type, + GError **error); void gsm_session_save_clear (void); @@ -582,7 +589,7 @@ index e623260f..c91b5615 100644 #endif /* __GSM_SESSION_SAVE_H__ */ diff --git a/gnome-session/main.c b/gnome-session/main.c -index e2c3efef..6e697678 100644 +index b1ac3850..cee385d9 100644 --- a/gnome-session/main.c +++ b/gnome-session/main.c @@ -119,61 +119,70 @@ sigusr2_cb (gpointer data) @@ -658,5 +665,5 @@ index e2c3efef..6e697678 100644 static gboolean -- -2.14.2 +2.17.0 diff --git a/SOURCES/0014-session-selector-restore-saved-session-mode.patch b/SOURCES/0014-session-selector-restore-saved-session-mode.patch index 2519a00..7daa2d1 100644 --- a/SOURCES/0014-session-selector-restore-saved-session-mode.patch +++ b/SOURCES/0014-session-selector-restore-saved-session-mode.patch @@ -1,4 +1,4 @@ -From 2a15240b8653b8fe0f0c1e2804d7c2fe8452a604 Mon Sep 17 00:00:00 2001 +From 8ecdc2b44b5c6282722f71dcab0af3c6d27d39d6 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 7 Jan 2014 21:16:23 -0500 Subject: [PATCH 14/19] session-selector: restore saved session mode @@ -13,7 +13,7 @@ session. 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tools/gnome-session-custom-session b/tools/gnome-session-custom-session -index 07fdb0cc..358aee01 100644 +index 07fdb0cc..358aee01 100755 --- a/tools/gnome-session-custom-session +++ b/tools/gnome-session-custom-session @@ -1,4 +1,19 @@ @@ -38,5 +38,5 @@ index 07fdb0cc..358aee01 100644 + +exec gnome-session "$session_type_argument" -- -2.14.2 +2.17.0 diff --git a/SOURCES/0015-session-selector-refresh-from-recent-glade.patch b/SOURCES/0015-session-selector-refresh-from-recent-glade.patch index 2b592ba..846afb2 100644 --- a/SOURCES/0015-session-selector-refresh-from-recent-glade.patch +++ b/SOURCES/0015-session-selector-refresh-from-recent-glade.patch @@ -1,4 +1,4 @@ -From 3e35abd4c7d0aae97d868db6e66706c2ccdeeb11 Mon Sep 17 00:00:00 2001 +From 59a6dacfe90318a12c1a62e793008719b56aadb1 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Fri, 20 Dec 2013 10:53:33 -0500 Subject: [PATCH 15/19] session-selector: refresh from recent glade @@ -7,7 +7,7 @@ The ui file is rather old. This commit just opens it up in a recent glade and resaves it, so we have a fresh starting point to make changes. --- - data/session-selector.ui | 80 ++++++++++++++++++++++++++++++++---------------- + data/session-selector.ui | 80 +++++++++++++++++++++++++++------------- 1 file changed, 54 insertions(+), 26 deletions(-) diff --git a/data/session-selector.ui b/data/session-selector.ui @@ -265,5 +265,5 @@ index 1534a746..4d1e3009 100644 + -- -2.14.2 +2.17.0 diff --git a/SOURCES/0016-session-selector-add-toggle-for-classic-normal-selec.patch b/SOURCES/0016-session-selector-add-toggle-for-classic-normal-selec.patch index b6b80cf..2346aed 100644 --- a/SOURCES/0016-session-selector-add-toggle-for-classic-normal-selec.patch +++ b/SOURCES/0016-session-selector-add-toggle-for-classic-normal-selec.patch @@ -1,4 +1,4 @@ -From f0f0898da1c1e28d4ad6d6c17ba559e59780bd21 Mon Sep 17 00:00:00 2001 +From 9be62bd711a09cdab0cb7f27faa1504b5afe7c76 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Tue, 7 Jan 2014 21:02:02 -0500 Subject: [PATCH 16/19] session-selector: add toggle for classic/normal @@ -8,8 +8,8 @@ Since we offer both classic mode and regular mode when not using the session selector, we should also offer it when using the session selector. --- - data/session-selector.ui | 39 ++++++++++++++- - tools/gnome-session-selector.c | 106 +++++++++++++++++++++++++++++++++++++++++ + data/session-selector.ui | 39 +++++++++++- + tools/gnome-session-selector.c | 106 +++++++++++++++++++++++++++++++++ 2 files changed, 143 insertions(+), 2 deletions(-) diff --git a/data/session-selector.ui b/data/session-selector.ui @@ -600,5 +600,5 @@ index 53822f6c..a7361a5b 100644 return 0; } -- -2.14.2 +2.17.0 diff --git a/SOURCES/0017-session-selector-use-classic-mode-by-default.patch b/SOURCES/0017-session-selector-use-classic-mode-by-default.patch index 2e33fa4..ed53544 100644 --- a/SOURCES/0017-session-selector-use-classic-mode-by-default.patch +++ b/SOURCES/0017-session-selector-use-classic-mode-by-default.patch @@ -1,4 +1,4 @@ -From 12df4f92bff325fbffcaa4eb0ee0392511f6ebb6 Mon Sep 17 00:00:00 2001 +From 976515e5601730a3f74b923eada6805554996794 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 8 Jan 2014 10:15:29 -0500 Subject: [PATCH 17/19] session-selector: use classic mode by default @@ -75,5 +75,5 @@ index a7361a5b..a41cd260 100644 return name; } -- -2.14.2 +2.17.0 diff --git a/SOURCES/0018-manager-port-away-from-dbus-glib-to-GDBus.patch b/SOURCES/0018-manager-port-away-from-dbus-glib-to-GDBus.patch index a5f88d5..153eeb6 100644 --- a/SOURCES/0018-manager-port-away-from-dbus-glib-to-GDBus.patch +++ b/SOURCES/0018-manager-port-away-from-dbus-glib-to-GDBus.patch @@ -1,15 +1,17 @@ -From 916d9ba86cf2020ffedff331397ed02b5e53f030 Mon Sep 17 00:00:00 2001 +From 62a3cf703542e282f6c378cf633dd494b4cc786c Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Wed, 8 Mar 2017 16:36:44 -0500 Subject: [PATCH 18/19] manager: port away from dbus-glib to GDBus --- - capplet/gsm-properties-dialog.c | 52 +++++++++++++++++++++-------------------- - configure.ac | 2 +- - gnome-session/gsm-manager.c | 16 ++++++------- - gnome-session/gsm-manager.h | 3 ++- - tools/gnome-session-selector.c | 48 ++++++++++++++++++++----------------- - 5 files changed, 64 insertions(+), 57 deletions(-) + capplet/gsm-properties-dialog.c | 52 +++++++++++++++++---------------- + capplet/meson.build | 3 +- + gnome-session/gsm-manager.c | 16 +++++----- + gnome-session/gsm-manager.h | 3 +- + meson.build | 1 - + tools/gnome-session-selector.c | 48 ++++++++++++++++-------------- + tools/meson.build | 3 +- + 7 files changed, 65 insertions(+), 61 deletions(-) diff --git a/capplet/gsm-properties-dialog.c b/capplet/gsm-properties-dialog.c index 51fa5106..04452c1a 100644 @@ -211,75 +213,51 @@ index 51fa5106..04452c1a 100644 } static void -diff --git a/configure.ac b/configure.ac -index d0eeab8a..5182c09e 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -21,61 +21,61 @@ LT_PREREQ([2.2.6]) - LT_INIT([dlopen disable-static]) - - GNOME_MAINTAINER_MODE_DEFINES - GNOME_COMPILE_WARNINGS([maximum]) - - AC_ARG_ENABLE(deprecation_flags, - [AS_HELP_STRING([--enable-deprecation-flags], - [use *_DISABLE_DEPRECATED flags @<:@default=no@:>@])],, - [enable_deprecation_flags=no]) - - if test "x$enable_deprecation_flags" = "xyes"; then - DISABLE_DEPRECATED_CFLAGS=$DISABLE_DEPRECATED - AC_SUBST([DISABLE_DEPRECATED_CFLAGS]) - fi - - GLIB_REQUIRED=2.46.0 - GTK3_REQUIRED=3.18.0 - DBUS_GLIB_REQUIRED=0.76 - UPOWER_REQUIRED=0.9.0 - JSON_GLIB_REQUIRED=0.10 - GNOME_DESKTOP_REQUIRED=3.18.0 - - AC_ARG_ENABLE(session-selector, AS_HELP_STRING([--enable-session-selector], - [enable building a custom session selector dialog]), - enable_session_selector=$enableval,enable_session_selector=no) - - AM_CONDITIONAL(BUILD_SESSION_SELECTOR, - [test "$enable_session_selector" = yes]) - - if test "$enable_session_selector" = yes; then -- PKG_CHECK_MODULES(SESSION_SELECTOR, gtk+-3.0 gio-2.0 dbus-glib-1 >= $DBUS_GLIB_REQUIRED) -+ PKG_CHECK_MODULES(SESSION_SELECTOR, gtk+-3.0 gio-2.0) - fi - - dnl ==================================================================== - dnl Dependency Checks - dnl ==================================================================== - - dnl Standard vertical stacks - PKG_CHECK_MODULES(GIO, gio-2.0) - PKG_CHECK_MODULES(GIOUNIX, gio-unix-2.0 >= $GLIB_REQUIRED) - PKG_CHECK_MODULES(GTK3, gtk+-3.0 >= $GTK3_REQUIRED) - - PKG_CHECK_MODULES(GNOME_SESSION, - glib-2.0 >= $GLIB_REQUIRED - gio-2.0 >= $GLIB_REQUIRED - json-glib-1.0 >= $JSON_GLIB_REQUIRED - gnome-desktop-3.0 >= $GNOME_DESKTOP_REQUIRED +diff --git a/capplet/meson.build b/capplet/meson.build +index ae6cb6b9..8dad9c80 100644 +--- a/capplet/meson.build ++++ b/capplet/meson.build +@@ -1,37 +1,36 @@ + install_data( + install_dir: session_bindir ) - dnl We can only support old upower - dnl https://bugzilla.gnome.org/show_bug.cgi?id=710383 - PKG_CHECK_MODULES(UPOWER, upower-glib < 0.99.0, have_old_upower=yes, have_old_upower=no) - AS_IF([test x$have_old_upower = xyes], [ - AC_DEFINE([HAVE_OLD_UPOWER], [1], [Define if we have an older upower]) - ]) - AM_CONDITIONAL(HAVE_OLD_UPOWER, test x$have_old_upower = xyes) - - PKG_CHECK_MODULES(SESSION_PROPERTIES, - glib-2.0 >= $GLIB_REQUIRED - gtk+-3.0 >= $GTK3_REQUIRED + deps = session_deps + [ + glib_dep, + gtk_dep, + x11_dep, + sm_dep, +- ice_dep, +- dbus_glib_dep ++ ice_dep + ] + + cflags = [ + '-DLOCALE_DIR="@0@"'.format(session_localedir), + '-DGTKBUILDER_DIR="@0@"'.format(session_pkgdatadir) + ] + + sources = files( + '../gnome-session/gsm-util.c', + 'gsm-app-dialog.c', + 'gsm-properties-dialog.c', + 'gsp-app.c', + 'gsp-app-manager.c', + 'gsp-keyfile.c', + 'main.c' + ) + + executable( + 'gnome-session-properties', + sources, + include_directories: [ top_inc, include_directories('../gnome-session') ], + dependencies: deps, + c_args: cflags, + install: true, + install_dir: session_bindir ) diff --git a/gnome-session/gsm-manager.c b/gnome-session/gsm-manager.c -index 135392fd..29c3054d 100644 +index 325c6c46..f4a94d1a 100644 --- a/gnome-session/gsm-manager.c +++ b/gnome-session/gsm-manager.c @@ -1210,78 +1210,78 @@ _client_request_save (GsmClient *client, @@ -570,6 +548,72 @@ index fcf36019..88a88ccc 100644 G_END_DECLS #endif /* __GSM_MANAGER_H */ +diff --git a/meson.build b/meson.build +index 24221bb6..9a16d5b1 100644 +--- a/meson.build ++++ b/meson.build +@@ -72,61 +72,60 @@ if enable_deprecation_flags + endif + + compiler_flags = [] + if session_debug + test_cflags = [ + '-Werror=format=2', + '-Werror=implicit-function-declaration', + '-Werror=init-self', + '-Werror=missing-include-dirs', + '-Werror=missing-prototypes', + '-Werror=pointer-arith', + '-Werror=return-type', + '-Wnested-externs', + '-Wstrict-prototypes' + ] + + compiler_flags += cc.get_supported_arguments(test_cflags) + endif + + add_project_arguments(common_flags + compiler_flags, language: 'c') + + glib_req_version = '>= 2.46.0' + + gio_dep = dependency('gio-2.0', version: glib_req_version) + glib_dep = dependency('glib-2.0', version: glib_req_version) + gtk_dep = dependency('gtk+-3.0', version: '>= 3.18.0') + xtrans_dep = dependency('xtrans') + ice_dep = dependency('ice') + sm_dep = dependency('sm') + x11_dep = dependency('x11') +-dbus_glib_dep = dependency('dbus-glib-1') + + session_deps = [ + gio_dep, + glib_dep, + dependency('gnome-desktop-3.0', version: '>= 3.18.0'), + dependency('json-glib-1.0', version: '>= 0.10') + ] + + session_bin_deps = session_deps + [ + xtrans_dep, + ice_dep, + sm_dep + ] + + # Check for session selector GTK+ UI + enable_session_selector = get_option('session_selector') + + # Check for session tracking backend + session_tracking = 'null backend' + + enable_systemd = get_option('systemd') + enable_systemd_journal = get_option('systemd_journal') + enable_consolekit = get_option('consolekit') + if enable_systemd or enable_consolekit + session_bin_deps += dependency('gio-unix-2.0', version: glib_req_version) + + # Check for systemd + if enable_systemd + libsystemd_dep = dependency('libsystemd', version: '>= 209', required: false) + session_bin_deps += libsystemd_dep diff --git a/tools/gnome-session-selector.c b/tools/gnome-session-selector.c index a41cd260..6ad307b0 100644 --- a/tools/gnome-session-selector.c @@ -751,6 +795,65 @@ index a41cd260..6ad307b0 100644 } int +diff --git a/tools/meson.build b/tools/meson.build +index 4bd24220..10ee918c 100644 +--- a/tools/meson.build ++++ b/tools/meson.build +@@ -1,53 +1,52 @@ + install_data( + 'gnome-session-custom-session', + install_dir: session_bindir + ) + + deps = session_deps + [ + sm_dep, + ice_dep + ] + + cflags = ['-DLOCALE_DIR="@0@"'.format(session_localedir)] + + programs = [ + # name, deps, cflags, install_dir + ['gnome-session-quit', deps, cflags, session_bindir], + ['gnome-session-inhibit', session_deps, cflags, session_bindir] + ] + + if enable_session_selector + deps = [ + glib_dep, +- gtk_dep, +- dbus_glib_dep ++ gtk_dep + ] + + cflags += '-DGTKBUILDER_DIR="@0@"'.format(session_pkgdatadir) + + programs += [['gnome-session-selector', deps, cflags, session_bindir]] + endif + + deps = [ + gtk_dep, + x11_dep, + dependency('egl'), + dependency('glesv2') + ] + + cflags = '-DPKGDATADIR="@0@"'.format(session_pkgdatadir) + + programs += [['gnome-session-check-accelerated-gles-helper', deps, cflags, session_libexecdir]] + + deps = [ + glib_dep, + x11_dep, + dependency('gl'), + dependency('epoxy'), + dependency('xcomposite') + ] + + programs += [['gnome-session-check-accelerated-gl-helper', deps, cflags, session_libexecdir]] + + deps += [gtk_dep] + -- -2.14.2 +2.17.0 diff --git a/SOURCES/0019-capplet-fix-disable-check-items.patch b/SOURCES/0019-capplet-fix-disable-check-items.patch index 267e0e7..e0efc71 100644 --- a/SOURCES/0019-capplet-fix-disable-check-items.patch +++ b/SOURCES/0019-capplet-fix-disable-check-items.patch @@ -1,4 +1,4 @@ -From 0dfb463e126353b17d0c6ec63b99f10bae3fd919 Mon Sep 17 00:00:00 2001 +From 76189ca50976f5f146ad86914a0c5ba932e77171 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 27 Mar 2017 15:34:51 -0400 Subject: [PATCH 19/19] capplet: fix disable check items @@ -87,5 +87,5 @@ index 123ab217..1a0580e6 100644 } g_clear_pointer (&str, g_free); -- -2.14.2 +2.17.0 diff --git a/SOURCES/gnome-session-python3.patch b/SOURCES/gnome-session-python3.patch new file mode 100644 index 0000000..5d78230 --- /dev/null +++ b/SOURCES/gnome-session-python3.patch @@ -0,0 +1,8 @@ +--- gnome-session-3.28.1/meson_post_install.py.python3 2018-04-10 15:33:36.000000000 +0200 ++++ gnome-session-3.28.1/meson_post_install.py 2018-05-21 14:31:10.725745790 +0200 +@@ -1,4 +1,4 @@ +-#!/usr/bin/env python3 ++#!/usr/bin/env python + + import os + import shutil diff --git a/SPECS/gnome-session.spec b/SPECS/gnome-session.spec index 9a2bcf7..8a440cd 100644 --- a/SPECS/gnome-session.spec +++ b/SPECS/gnome-session.spec @@ -2,16 +2,20 @@ %define po_package gnome-session-3.0 -Summary: GNOME session manager +%global with_session_selector 1 + Name: gnome-session -Version: 3.26.1 -Release: 11%{?dist} +Version: 3.28.1 +Release: 5%{?dist} +Summary: GNOME session manager + +License: GPLv2+ URL: http://www.gnome.org -#VCS: git:git://git.gnome.org/gnome-session -Source0: http://download.gnome.org/sources/gnome-session/3.26/%{name}-%{version}.tar.xz +Source0: http://download.gnome.org/sources/gnome-session/3.28/%{name}-%{version}.tar.xz +Source1: session-properties-icons.tar.xz # Blacklist NV30: https://bugzilla.redhat.com/show_bug.cgi?id=745202 -Patch00:gnome-session-3.3.92-nv30.patch +Patch00: gnome-session-3.3.92-nv30.patch Patch01: gnome-session-3.6.2-swrast.patch # https://bugzilla.redhat.com/show_bug.cgi?id=1031182 @@ -36,28 +40,16 @@ Patch18: 0017-session-selector-use-classic-mode-by-default.patch Patch19: 0018-manager-port-away-from-dbus-glib-to-GDBus.patch Patch20: 0019-capplet-fix-disable-check-items.patch -Patch30: 0001-save-make-sure-app-state-is-written-into-desktop-fil.patch +# Fix the build with Python 2 +Patch21: gnome-session-python3.patch + Patch31: 0002-autostart-ensure-gnome-shell-and-mutter-get-right-au.patch Patch40: 0001-main-don-t-call-into-gdbus-before-setting-all-enviro.patch -License: GPLv2+ -Group: User Interface/Desktops - -Requires: system-logos -# Needed for gnome-settings-daemon -Requires: control-center-filesystem - -Requires: gsettings-desktop-schemas >= 0.1.7 - -# pull in dbus-x11, see bug 209924 -Requires: dbus-x11 - -# https://bugzilla.redhat.com/show_bug.cgi?id=1072801 -Requires: mesa-dri-drivers - +BuildRequires: meson +BuildRequires: gcc BuildRequires: pkgconfig(egl) -BuildRequires: pkgconfig(epoxy) BuildRequires: pkgconfig(gl) BuildRequires: pkgconfig(glesv2) BuildRequires: pkgconfig(gnome-desktop-3.0) @@ -73,54 +65,53 @@ BuildRequires: pkgconfig(xext) BuildRequires: pkgconfig(xrender) BuildRequires: pkgconfig(xtrans) BuildRequires: pkgconfig(xtst) -BuildRequires: GConf2-devel -BuildRequires: pango-devel -BuildRequires: desktop-file-utils -BuildRequires: libXrandr-devel -BuildRequires: librsvg2-devel # this is so the configure checks find /usr/bin/halt etc. BuildRequires: usermode -BuildRequires: intltool, autoconf, automake -BuildRequires: libtool BuildRequires: gettext -BuildRequires: libX11-devel libXt-devel -BuildRequires: libXtst-devel +BuildRequires: intltool BuildRequires: xmlto -BuildRequires: upower-devel -BuildRequires: gnome-common -BuildRequires: systemd-devel -BuildRequires: polkit-devel -BuildRequires: git +BuildRequires: /usr/bin/xsltproc # an artificial requires to make sure we get dconf, for now Requires: dconf +Requires: system-logos +# Needed for gnome-settings-daemon +Requires: control-center-filesystem + +Requires: gsettings-desktop-schemas >= 0.1.7 + +# pull in dbus-x11, see bug 209924 +Requires: dbus-x11 + +# https://bugzilla.redhat.com/show_bug.cgi?id=1072801 +Requires: mesa-dri-drivers + +Conflicts: gnome-settings-daemon < 3.27.90 + %description gnome-session manages a GNOME desktop or GDM login session. It starts up the other core GNOME components and handles logout and saving the session. -%package wayland-session -Summary: Desktop file for gnome-session (Wayland) -Group: User Interface/Desktops -Requires: gnome-session = %{version}-%{release} -Requires: xorg-x11-server-Xwayland - -%description wayland-session -Desktop file to add GNOME (Wayland) to display manager session menu. - %package xsession Summary: Desktop file for gnome-session -Group: User Interface/Desktops -Requires: gnome-session = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} %description xsession Desktop file to add GNOME to display manager session menu. +%package wayland-session +Summary: Desktop file for wayland based gnome session +Requires: %{name}%{?_isa} = %{version}-%{release} +Requires: xorg-x11-server-Xwayland%{?_isa} + +%description wayland-session +Desktop file to add GNOME on wayland to display manager session menu. + %package custom-session Summary: A facility to select and store saved sessions -Group: User Interface/Desktop Requires: %{name}%{?_isa} = %{version}-%{release} %description custom-session @@ -128,22 +119,22 @@ Installs a 'Custom' entry in the display manager session menu that lets the user manage multiple saved sessions. %prep -%autosetup -S git - -echo "ACLOCAL_AMFLAGS = -I m4" >> Makefile.am - -autoreconf -i -f +%autosetup -p1 +(cd data/icons; tar xvf %{SOURCE1}) %build -%configure --enable-docbook-docs \ - --enable-session-selector \ - --enable-systemd -make %{?_smp_mflags} V=1 +%meson \ +%if 0%{?with_session_selector} + -Dsession_selector=true \ +%endif + -Dsystemd=true \ + -Dsystemd_journal=true +%meson_build %install +%meson_install -%make_install - +rm -f $RPM_BUILD_ROOT%{_datadir}/wayland-sessions/gnome.desktop mv $RPM_BUILD_ROOT%{_datadir}/xsessions/gnome-xorg.desktop \ $RPM_BUILD_ROOT%{_datadir}/wayland-sessions/gnome-wayland.desktop sed -i -e 's/Xorg/Wayland/g' $RPM_BUILD_ROOT%{_datadir}/wayland-sessions/gnome-wayland.desktop @@ -166,11 +157,11 @@ fi gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || : glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : -%files wayland-session -%{_datadir}/wayland-sessions/* - %files xsession -%{_datadir}/xsessions/* +%{_datadir}/xsessions/gnome.desktop + +%files wayland-session +%{_datadir}/wayland-sessions/gnome-wayland.desktop %files custom-session %{_datadir}/xsessions/gnome-custom-session.desktop @@ -180,7 +171,8 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %doc %{_mandir}/man*/gnome-session-selector* %files -f %{po_package}.lang -%doc AUTHORS COPYING NEWS README +%doc AUTHORS NEWS README +%license COPYING %doc %{_mandir}/man*/* %{_bindir}/* %{_libexecdir}/gnome-session-binary @@ -198,6 +190,28 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &>/dev/null || : %{_datadir}/glib-2.0/schemas/org.gnome.SessionManager.gschema.xml %changelog +* Thu Jul 26 2018 Ray Strode - 3.28.1-5 +- Fix gnome-disk-utility timeout at startup + Resolves: #1593215 +- add back session properties icons + Related: #1568620 + +* Tue Jul 24 2018 Ray Strode - 3.28.1-4 +- Fix pot file generation + Resolves: #1371019 + +* Tue Jul 17 2018 Ray Strode - 3.28.1-3 +- Make sure gnome-session-custom-session is only shipped in its subpackage + Resolves: #1600560 + +* Thu Jun 21 2018 Ray Strode - 3.28.1-2 +- Add back GNOME on Wayland session + Resolves: #1591614 + +* Tue Apr 10 2018 Kalev Lember - 3.28.1-1 +- Update to 3.28.1 +- Resolves: #1568620 + * Wed Feb 14 2018 Ray Strode - 3.26.1-11 - Fix rare crash at start up for VNC sessions Resolves: #1545234