diff options
author | Pacho Ramos <pacho@gentoo.org> | 2022-12-19 14:43:23 +0100 |
---|---|---|
committer | Pacho Ramos <pacho@gentoo.org> | 2022-12-19 14:50:42 +0100 |
commit | 66f2090467efc636a3a9d909b6720f4fbb0192d0 (patch) | |
tree | 9319b2fafab0af303115fe7b8bcb98b0b5e33bb6 /gnome-extra/synapse | |
parent | x11-misc/meteo: drop 0.9.9.1 (diff) | |
download | gentoo-66f2090467efc636a3a9d909b6720f4fbb0192d0.tar.gz gentoo-66f2090467efc636a3a9d909b6720f4fbb0192d0.tar.bz2 gentoo-66f2090467efc636a3a9d909b6720f4fbb0192d0.zip |
gnome-extra/synapse: Support MATE and ayatana indicators
Signed-off-by: Pacho Ramos <pacho@gentoo.org>
Diffstat (limited to 'gnome-extra/synapse')
3 files changed, 305 insertions, 0 deletions
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 <michal.mhr@gmail.com> ++ * ++ * 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 <michal.mhr@gmail.com> ++ * ++ */ ++ ++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 +} |