commit:     66f2090467efc636a3a9d909b6720f4fbb0192d0
Author:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
AuthorDate: Mon Dec 19 13:43:23 2022 +0000
Commit:     Pacho Ramos <pacho <AT> gentoo <DOT> org>
CommitDate: Mon Dec 19 13:50:42 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=66f20904

gnome-extra/synapse: Support MATE and ayatana indicators

Signed-off-by: Pacho Ramos <pacho <AT> gentoo.org>

 .../files/synapse-0.2.99.4-ayatana-indicator.patch |  25 +++
 .../synapse/files/synapse-0.2.99.4-mate.patch      | 222 +++++++++++++++++++++
 gnome-extra/synapse/synapse-0.2.99.4-r2.ebuild     |  58 ++++++
 3 files changed, 305 insertions(+)

diff --git a/gnome-extra/synapse/files/synapse-0.2.99.4-ayatana-indicator.patch 
b/gnome-extra/synapse/files/synapse-0.2.99.4-ayatana-indicator.patch
new file mode 100644
index 000000000000..ee11befc29cd
--- /dev/null
+++ b/gnome-extra/synapse/files/synapse-0.2.99.4-ayatana-indicator.patch
@@ -0,0 +1,25 @@
+diff --color -ur synapse-0.2.99.4.orig/configure.ac 
synapse-0.2.99.4/configure.ac
+--- synapse-0.2.99.4.orig/configure.ac 2018-04-08 20:52:10.000000000 +0200
++++ synapse-0.2.99.4/configure.ac      2021-11-24 16:47:10.073022755 +0100
+@@ -110,16 +110,16 @@
+ AM_CONDITIONAL(HAVE_ZEITGEIST, test "x$enable_zeitgeist" = "xyes")
+ 
+ if test "x$enable_indicator" = "xauto" ; then
+-      PKG_CHECK_EXISTS([appindicator3-0.1],
++      PKG_CHECK_EXISTS([ayatana-appindicator3-0.1],
+                        enable_indicator="yes",
+                        enable_indicator="no")
+ fi
+ 
+ if test "x$enable_indicator" = "xyes" ; then
+-      PKG_CHECK_EXISTS([appindicator3-0.1],,
+-                       AC_MSG_ERROR([appindicator3-0.1 is not installed]))
+-      PKG_CHECK_MODULES(APP_INDICATOR, appindicator3-0.1)
+-      APP_INDICATOR_VALAFLAGS=" --pkg appindicator3-0.1 -D HAVE_INDICATOR"
++      PKG_CHECK_EXISTS([ayatana-appindicator3-0.1],,
++                       AC_MSG_ERROR([ayatana-appindicator3-0.1 is not 
installed]))
++      PKG_CHECK_MODULES(APP_INDICATOR, ayatana-appindicator3-0.1)
++      APP_INDICATOR_VALAFLAGS=" --pkg ayatana-appindicator3-0.1 -D 
HAVE_INDICATOR"
+       AC_SUBST(APP_INDICATOR_VALAFLAGS)
+       AC_DEFINE(HAVE_INDICATOR, 1, [Have AppIndicator])
+ fi

diff --git a/gnome-extra/synapse/files/synapse-0.2.99.4-mate.patch 
b/gnome-extra/synapse/files/synapse-0.2.99.4-mate.patch
new file mode 100644
index 000000000000..9703c13aed5d
--- /dev/null
+++ b/gnome-extra/synapse/files/synapse-0.2.99.4-mate.patch
@@ -0,0 +1,222 @@
+diff -urN synapse-0.2.10.orig/src/plugins/Makefile.am 
synapse-0.2.10/src/plugins/Makefile.am
+--- synapse-0.2.10.orig/src/plugins/Makefile.am        2013-08-18 
18:33:35.710536590 +0200
++++ synapse-0.2.10/src/plugins/Makefile.am     2013-08-18 18:33:44.427203171 
+0200
+@@ -45,6 +45,7 @@
+       hybrid-search-plugin.vala \
+       launchpad-plugin.vala \
+       locate-plugin.vala \
++      mate-session-plugin.vala \
+       opensearch.vala \
+       pass-plugin.vala \
+       pastebin-plugin.vala \
+diff -urN synapse-0.2.10.orig/src/plugins/mate-session-plugin.vala 
synapse-0.2.10/src/plugins/mate-session-plugin.vala
+--- synapse-0.2.10.orig/src/plugins/mate-session-plugin.vala   1970-01-01 
01:00:00.000000000 +0100
++++ synapse-0.2.10/src/plugins/mate-session-plugin.vala        2013-08-18 
18:33:44.427203171 +0200
+@@ -0,0 +1,196 @@
++/*
++ * Copyright (C) 2010 Michal Hruby <[email protected]>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301  USA.
++ *
++ * Authored by Michal Hruby <[email protected]>
++ *
++ */
++
++namespace Synapse
++{
++  [DBus (name = "org.mate.SessionManager")]
++  public interface MateSessionManager: Object
++  {
++    public const string UNIQUE_NAME = "org.mate.SessionManager";
++    public const string OBJECT_PATH = "/org/mate/SessionManager";
++
++    public abstract bool can_shutdown () throws IOError;
++    public abstract void shutdown () throws IOError;
++    public abstract void request_reboot () throws IOError;
++    public abstract void logout (uint32 mode = 0) throws IOError;
++  }
++
++  public class MateSessionPlugin: Object, Activatable, ItemProvider
++  {
++    public bool enabled { get; set; default = true; }
++
++    public void activate ()
++    {
++      
++    }
++
++    public void deactivate ()
++    {
++      
++    }
++
++    private class ShutDownAction: ActionMatch
++    {
++      public ShutDownAction ()
++      {
++        Object (title: _("Shut Down"),
++                description: _("Turn your computer off"),
++                icon_name: "system-shutdown", has_thumbnail: false);
++      }
++      
++      public override void do_action ()
++      {
++        try
++        {
++          MateSessionManager dbus_interface = Bus.get_proxy_sync 
(BusType.SESSION,
++                                                   
MateSessionManager.UNIQUE_NAME,
++                                                   
MateSessionManager.OBJECT_PATH);
++
++          dbus_interface.shutdown ();
++        }
++        catch (IOError err)
++        {
++          warning ("%s", err.message);
++        }
++      }
++    }
++
++    private class RebootAction: ActionMatch
++    {
++      public RebootAction ()
++      {
++        Object (title: _("Restart"),
++                description: _("Restart your computer"),
++                icon_name: "system-shutdown", has_thumbnail: false);
++      }
++      
++      public override void do_action ()
++      {
++        try
++        {
++          MateSessionManager dbus_interface = Bus.get_proxy_sync 
(BusType.SESSION,
++                                                   
MateSessionManager.UNIQUE_NAME,
++                                                   
MateSessionManager.OBJECT_PATH);
++
++          dbus_interface.request_reboot ();
++        }
++        catch (IOError err)
++        {
++          warning ("%s", err.message);
++        }
++      }
++    }
++
++    private class LogOutAction: ActionMatch
++    {
++      public LogOutAction ()
++      {
++        Object (title: _("Log Out"),
++                description: _("Close your session and return to the login 
screen"),
++                icon_name: "gnome-logout", has_thumbnail: false);
++      }
++      
++      public override void do_action ()
++      {
++        try
++        {
++          MateSessionManager dbus_interface = Bus.get_proxy_sync 
(BusType.SESSION,
++                                                   
MateSessionManager.UNIQUE_NAME,
++                                                   
MateSessionManager.OBJECT_PATH);
++
++          /*
++           * 0: Normal.
++           * 1: No confirmation inferface should be shown.
++           * 2: Forcefully logout. No confirmation will be shown and any 
inhibitors will be ignored.
++           */
++          dbus_interface.logout (1);
++        }
++        catch (IOError err)
++        {
++          warning ("%s", err.message);
++        }
++      }
++    }
++    
++    static void register_plugin ()
++    {
++      PluginRegistry.get_default ().register_plugin (
++        typeof (MateSessionPlugin),
++        "MATE Session",
++        _ ("Log out from your session."),
++        "mate-session-logout",
++        register_plugin,
++        DBusService.get_default ().name_has_owner 
(MateSessionManager.UNIQUE_NAME),
++        _ ("MATE Session Manager wasn't found")
++      );
++    }
++
++    static construct
++    {
++      register_plugin ();
++    }
++
++    private bool session_manager_available = false;
++    private Gee.List<Match> actions;
++
++    construct
++    {
++      var cache = DBusService.get_default ();
++      session_manager_available = cache.name_has_owner 
(MateSessionManager.UNIQUE_NAME);
++      message ("%s %s available", MateSessionManager.UNIQUE_NAME,
++        session_manager_available ? "is" : "isn't");
++      
++      actions = new Gee.LinkedList<Match> ();
++      actions.add (new LogOutAction ());
++      // TODO: add a config option to enable these actions (for example when 
ConsoleKit is not available)
++      //actions.add (new RebootAction ());
++      //actions.add (new ShutDownAction ());
++    }
++    
++    public async ResultSet? search (Query q) throws SearchError
++    {
++      if (!session_manager_available) return null;
++     // we only search for actions
++      if (!(QueryFlags.ACTIONS in q.query_type)) return null;
++
++      var result = new ResultSet ();
++
++      var matchers = Query.get_matchers_for_query (q.query_string, 0,
++        RegexCompileFlags.OPTIMIZE | RegexCompileFlags.CASELESS);
++
++      foreach (var action in actions)
++      {
++        foreach (var matcher in matchers)
++        {
++          if (matcher.key.match (action.title))
++          {
++            result.add (action, matcher.value - MatchScore.INCREMENT_SMALL);
++            break;
++          }
++        }
++      }
++
++      q.check_cancellable ();
++
++      return result;
++    }
++  }
++}
+diff -urN synapse-0.2.10.orig/src/ui/synapse-main.vala 
synapse-0.2.10/src/ui/synapse-main.vala
+--- synapse-0.2.10.orig/src/ui/synapse-main.vala       2013-08-18 
18:33:35.710536590 +0200
++++ synapse-0.2.10/src/ui/synapse-main.vala    2013-08-18 18:33:44.427203171 
+0200
+@@ -165,6 +165,7 @@
+         typeof (HybridSearchPlugin),
+         typeof (GnomeBookmarksPlugin),
+         typeof (GnomeSessionPlugin),
++        typeof (MateSessionPlugin),
+         typeof (ScreenSaverPlugin),
+         typeof (SystemManagementPlugin),
+         typeof (CommandPlugin),

diff --git a/gnome-extra/synapse/synapse-0.2.99.4-r2.ebuild 
b/gnome-extra/synapse/synapse-0.2.99.4-r2.ebuild
new file mode 100644
index 000000000000..ce524b54e1f1
--- /dev/null
+++ b/gnome-extra/synapse/synapse-0.2.99.4-r2.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2022 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+inherit autotools vala xdg
+
+DESCRIPTION="A program launcher in the style of GNOME Do"
+HOMEPAGE="https://launchpad.net/synapse-project/";
+SRC_URI="https://launchpad.net/synapse-project/0.3/${PV}/+download/${P}.tar.xz";
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~x86"
+IUSE="appindicator nls plugins"
+
+RDEPEND="
+       >=dev-libs/glib-2.28.0:2
+       >=x11-libs/gtk+-3.0.0:3
+       dev-libs/json-glib
+       dev-libs/keybinder:3
+       dev-libs/libgee:0.8
+       sys-apps/dbus
+       x11-libs/cairo
+       x11-libs/gdk-pixbuf:2
+       x11-libs/libnotify
+       x11-libs/pango
+       x11-themes/adwaita-icon-theme
+       appindicator? ( dev-libs/libayatana-appindicator )
+       nls? ( virtual/libintl )
+       plugins? ( >=net-libs/rest-0.7:0.7 )
+"
+DEPEND="${RDEPEND}"
+BDEPEND="
+       $(vala_depend)
+       nls? ( sys-devel/gettext )
+       virtual/pkgconfig
+"
+
+PATCHES=(
+       # From PLD Linux
+       "${FILESDIR}/${P}-mate.patch"
+       "${FILESDIR}/${P}-ayatana-indicator.patch"
+)
+
+src_prepare() {
+       default
+       sed -i -e 's/GNOME/GNOME;GTK/' data/synapse.desktop.in || die
+       vala_setup
+       eautoreconf
+}
+
+src_configure() {
+       econf \
+               $(use_enable appindicator indicator) \
+               $(use_enable nls) \
+               $(use_enable plugins librest yes) \
+               --disable-zeitgeist
+}

Reply via email to