ayatana-indicator-sound: apply fix volume change notification on MATE and XFCE
This commit is contained in:
parent
b0d8064c91
commit
83c0857025
2 changed files with 245 additions and 0 deletions
|
|
@ -0,0 +1,214 @@
|
||||||
|
Patch based on https://github.com/AyatanaIndicators/ayatana-indicator-sound/pull/92
|
||||||
|
For Trisquel 11.0, Aramo - ayatana-indicator-sound - 22.2.0-2
|
||||||
|
|
||||||
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
||||||
|
index ac370b2..095c953 100644
|
||||||
|
--- a/CMakeLists.txt
|
||||||
|
+++ b/CMakeLists.txt
|
||||||
|
@@ -1,5 +1,5 @@
|
||||||
|
-project(ayatana-indicator-sound C CXX)
|
||||||
|
-cmake_minimum_required(VERSION 3.13)
|
||||||
|
+cmake_minimum_required (VERSION 3.13)
|
||||||
|
+project (ayatana-indicator-sound VERSION 22.2.0 LANGUAGES C CXX)
|
||||||
|
|
||||||
|
if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||||
|
SET(CMAKE_INSTALL_PREFIX "/usr" CACHE PATH "..." FORCE)
|
||||||
|
@@ -7,8 +7,6 @@ endif(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||||
|
|
||||||
|
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
|
||||||
|
|
||||||
|
-set(PACKAGE ${CMAKE_PROJECT_NAME})
|
||||||
|
-set(PROJECT_VERSION 22.2.0)
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
include(GNUInstallDirs)
|
||||||
|
include(UseVala)
|
||||||
|
diff --git a/src/info-notification.vala b/src/info-notification.vala
|
||||||
|
index ce92a2a..3a36e52 100644
|
||||||
|
--- a/src/info-notification.vala
|
||||||
|
+++ b/src/info-notification.vala
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015 Canonical Ltd.
|
||||||
|
- * Copyright 2021 Robert Tari
|
||||||
|
+ * Copyright 2021-2023 Robert Tari
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
@@ -30,22 +30,26 @@ public class IndicatorSound.InfoNotification: Notification
|
||||||
|
public void show (VolumeControl.ActiveOutput active_output,
|
||||||
|
double volume,
|
||||||
|
bool is_high_volume) {
|
||||||
|
- if (!notify_server_supports ("x-canonical-private-synchronous"))
|
||||||
|
- return;
|
||||||
|
|
||||||
|
/* Determine Label */
|
||||||
|
- unowned string volume_label = get_notification_label (active_output);
|
||||||
|
+ string volume_label = get_notification_label (active_output);
|
||||||
|
|
||||||
|
/* Choose an icon */
|
||||||
|
unowned string icon = get_volume_notification_icon (active_output, volume, is_high_volume);
|
||||||
|
|
||||||
|
/* Reset the notification */
|
||||||
|
var n = _notification;
|
||||||
|
+
|
||||||
|
+ uint nChars = ((int32)((volume * 20) + 0.5)).clamp(0, 20);
|
||||||
|
+ volume_label += "\n";
|
||||||
|
+
|
||||||
|
+ for (uint nChar = 0; nChar < nChars; nChar++)
|
||||||
|
+ {
|
||||||
|
+ volume_label += "◼";
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
n.update (_("Volume"), volume_label, icon);
|
||||||
|
n.clear_hints();
|
||||||
|
- n.set_hint ("x-lomiri-non-shaped-icon", "true");
|
||||||
|
- n.set_hint ("x-canonical-private-synchronous", "true");
|
||||||
|
- n.set_hint ("x-lomiri-value-bar-tint", is_high_volume ? "true" : "false");
|
||||||
|
n.set_hint ("value", ((int32)((volume * 100.0) + 0.5)).clamp(0, 100));
|
||||||
|
show_notification ();
|
||||||
|
}
|
||||||
|
diff --git a/src/warn-notification.vala b/src/warn-notification.vala
|
||||||
|
index 6a08431..203758e 100644
|
||||||
|
--- a/src/warn-notification.vala
|
||||||
|
+++ b/src/warn-notification.vala
|
||||||
|
@@ -1,5 +1,6 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015 Canonical Ltd.
|
||||||
|
+ * Copyright 2021-2023 Robert Tari
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
@@ -15,6 +16,7 @@
|
||||||
|
*
|
||||||
|
* Authors:
|
||||||
|
* Charles Kerr <charles.kerr@canonical.com>
|
||||||
|
+ * Robert Tari <robert@tari.in>
|
||||||
|
*/
|
||||||
|
|
||||||
|
public class IndicatorSound.WarnNotification: Notification
|
||||||
|
@@ -31,9 +33,6 @@ public class IndicatorSound.WarnNotification: Notification
|
||||||
|
_("Volume"),
|
||||||
|
_("Allow volume above safe level?\nHigh volume can damage your hearing."),
|
||||||
|
"audio-volume-high");
|
||||||
|
- n.set_hint ("x-lomiri-non-shaped-icon", "true");
|
||||||
|
- n.set_hint ("x-lomiri-snap-decisions", "true");
|
||||||
|
- n.set_hint ("x-lomiri-private-affirmative-tint", "true");
|
||||||
|
n.closed.connect ((n) => {
|
||||||
|
n.clear_actions ();
|
||||||
|
});
|
||||||
|
diff --git a/tests/integration/indicator-sound-test-base.cpp b/tests/integration/indicator-sound-test-base.cpp
|
||||||
|
index 3ecd856..eb4ee8c 100644
|
||||||
|
--- a/tests/integration/indicator-sound-test-base.cpp
|
||||||
|
+++ b/tests/integration/indicator-sound-test-base.cpp
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015 Canonical Ltd.
|
||||||
|
- * Copyright 2021 Robert Tari
|
||||||
|
+ * Copyright 2021-2023 Robert Tari
|
||||||
|
*
|
||||||
|
* This program is free software: you can redistribute it and/or modify it
|
||||||
|
* under the terms of the GNU General Public License version 3, as published
|
||||||
|
@@ -72,7 +72,7 @@ void IndicatorSoundTestBase::SetUp()
|
||||||
|
"GetCapabilities",
|
||||||
|
"",
|
||||||
|
"as",
|
||||||
|
- "ret = ['actions', 'body', 'body-markup', 'icon-static', 'image/svg+xml', 'x-canonical-private-synchronous', 'x-canonical-append', 'x-canonical-private-icon-only', 'x-canonical-truncation', 'private-synchronous', 'append', 'private-icon-only', 'truncation']"
|
||||||
|
+ "ret = ['actions', 'body', 'body-markup', 'icon-static', 'image/svg+xml', 'private-synchronous', 'append', 'private-icon-only', 'truncation']"
|
||||||
|
).waitForFinished();
|
||||||
|
|
||||||
|
int waitedTime = 0;
|
||||||
|
@@ -647,14 +647,8 @@ void IndicatorSoundTestBase::checkVolumeNotification(double volume, QString cons
|
||||||
|
QVariantMap hints;
|
||||||
|
ASSERT_TRUE(qDBusArgumentToMap(args.at(6), hints));
|
||||||
|
ASSERT_TRUE(hints.contains("value"));
|
||||||
|
- ASSERT_TRUE(hints.contains("x-lomiri-non-shaped-icon"));
|
||||||
|
- ASSERT_TRUE(hints.contains("x-lomiri-value-bar-tint"));
|
||||||
|
- ASSERT_TRUE(hints.contains("x-canonical-private-synchronous"));
|
||||||
|
|
||||||
|
EXPECT_EQ(volume*100, hints["value"]);
|
||||||
|
- EXPECT_EQ(true, hints["x-lomiri-non-shaped-icon"]);
|
||||||
|
- EXPECT_EQ(isLoud, hints["x-lomiri-value-bar-tint"]);
|
||||||
|
- EXPECT_EQ(true, hints["x-canonical-private-synchronous"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
void IndicatorSoundTestBase::checkHighVolumeNotification(QVariantList call)
|
||||||
|
diff --git a/tests/notifications-mock.h b/tests/notifications-mock.h
|
||||||
|
index 49b2e66..3ae8da5 100644
|
||||||
|
--- a/tests/notifications-mock.h
|
||||||
|
+++ b/tests/notifications-mock.h
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015 Canonical Ltd.
|
||||||
|
- * Copyright 2021 Robert Tari
|
||||||
|
+ * Copyright 2021-2023 Robert Tari
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
@@ -31,7 +31,7 @@ class NotificationsMock
|
||||||
|
DbusTestDbusMockObject * baseobj = nullptr;
|
||||||
|
|
||||||
|
public:
|
||||||
|
- NotificationsMock (const std::vector<std::string>& capabilities = {"actions", "body", "body-markup", "icon-static", "image/svg+xml", "x-canonical-private-synchronous", "x-canonical-append", "x-canonical-private-icon-only", "x-canonical-truncation", "private-synchronous", "append", "private-icon-only", "truncation"}) {
|
||||||
|
+ NotificationsMock (const std::vector<std::string>& capabilities = {"actions", "body", "body-markup", "icon-static", "image/svg+xml", "private-synchronous", "append", "private-icon-only", "truncation"}) {
|
||||||
|
mock = dbus_test_dbus_mock_new("org.freedesktop.Notifications");
|
||||||
|
dbus_test_task_set_bus(DBUS_TEST_TASK(mock), DBUS_TEST_SERVICE_BUS_SESSION);
|
||||||
|
dbus_test_task_set_name(DBUS_TEST_TASK(mock), "Notify");
|
||||||
|
diff --git a/tests/notifications-test.cc b/tests/notifications-test.cc
|
||||||
|
index a9fa55d..92f4672 100644
|
||||||
|
--- a/tests/notifications-test.cc
|
||||||
|
+++ b/tests/notifications-test.cc
|
||||||
|
@@ -1,6 +1,6 @@
|
||||||
|
/*
|
||||||
|
* Copyright 2015-2016 Canonical Ltd.
|
||||||
|
- * Copyright 2021 Robert Tari
|
||||||
|
+ * Copyright 2021-2023 Robert Tari
|
||||||
|
*
|
||||||
|
* 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
|
||||||
|
@@ -259,7 +259,6 @@ TEST_F(NotificationsTest, VolumeChanges) {
|
||||||
|
EXPECT_EQ("ayatana-indicator-sound", notev[0].app_name);
|
||||||
|
EXPECT_EQ("Volume", notev[0].summary);
|
||||||
|
EXPECT_EQ(0, notev[0].actions.size());
|
||||||
|
- EXPECT_GVARIANT_EQ("@s 'true'", notev[0].hints["x-canonical-private-synchronous"]);
|
||||||
|
EXPECT_GVARIANT_EQ("@i 50", notev[0].hints["value"]);
|
||||||
|
|
||||||
|
/* Set a different volume */
|
||||||
|
@@ -432,7 +431,6 @@ TEST_F(NotificationsTest, DISABLED_HighVolume) {
|
||||||
|
ASSERT_EQ(1, notev.size());
|
||||||
|
EXPECT_EQ("Volume", notev[0].summary);
|
||||||
|
EXPECT_EQ("Speakers", notev[0].body);
|
||||||
|
- EXPECT_GVARIANT_EQ("@s 'false'", notev[0].hints["x-lomiri-value-bar-tint"]);
|
||||||
|
|
||||||
|
/* Set high volume with volume change */
|
||||||
|
notifications->clearNotifications();
|
||||||
|
@@ -443,7 +441,6 @@ TEST_F(NotificationsTest, DISABLED_HighVolume) {
|
||||||
|
ASSERT_LT(0, notev.size()); /* This passes with one or two since it would just be an update to the first if a second was sent */
|
||||||
|
EXPECT_EQ("Volume", notev[0].summary);
|
||||||
|
EXPECT_EQ("Speakers", notev[0].body);
|
||||||
|
- EXPECT_GVARIANT_EQ("@s 'true'", notev[0].hints["x-lomiri-value-bar-tint"]);
|
||||||
|
|
||||||
|
/* Move it back */
|
||||||
|
volume_warning_mock_set_high_volume(VOLUME_WARNING_MOCK(volumeWarning.get()), false);
|
||||||
|
@@ -513,7 +510,6 @@ TEST_F(NotificationsTest, DISABLED_ExtendendVolumeNotification) {
|
||||||
|
EXPECT_EQ("ayatana-indicator-sound", notev[0].app_name);
|
||||||
|
EXPECT_EQ("Volume", notev[0].summary);
|
||||||
|
EXPECT_EQ(0, notev[0].actions.size());
|
||||||
|
- EXPECT_GVARIANT_EQ("@s 'true'", notev[0].hints["x-canonical-private-synchronous"]);
|
||||||
|
EXPECT_GVARIANT_EQ("@i 50", notev[0].hints["value"]);
|
||||||
|
|
||||||
|
/* Allow an amplified volume */
|
||||||
|
@@ -628,14 +624,10 @@ TEST_F(NotificationsTest, DISABLED_TriggerWarning) {
|
||||||
|
if (warning_expected) {
|
||||||
|
EXPECT_TRUE(volume_warning_get_active(volumeWarning.get()));
|
||||||
|
ASSERT_EQ(1, notev.size());
|
||||||
|
- EXPECT_GVARIANT_EQ("@s 'true'", notev[0].hints["x-lomiri-snap-decisions"]);
|
||||||
|
- EXPECT_GVARIANT_EQ(nullptr, notev[0].hints["x-canonical-private-synchronous"]);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
EXPECT_FALSE(volume_warning_get_active(volumeWarning.get()));
|
||||||
|
ASSERT_EQ(1, notev.size());
|
||||||
|
- EXPECT_GVARIANT_EQ(nullptr, notev[0].hints["x-lomiri-snap-decisions"]);
|
||||||
|
- EXPECT_GVARIANT_EQ("@s 'true'", notev[0].hints["x-canonical-private-synchronous"]);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // multimedia_active
|
||||||
31
helpers/make-ayatana-indicator-sound
Normal file
31
helpers/make-ayatana-indicator-sound
Normal file
|
|
@ -0,0 +1,31 @@
|
||||||
|
#!/bin/sh
|
||||||
|
#
|
||||||
|
# Copyright (C) 2023 Luis Guzman <ark@switnet.org>
|
||||||
|
#
|
||||||
|
# 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
|
||||||
|
#
|
||||||
|
|
||||||
|
VERSION=1
|
||||||
|
|
||||||
|
. ./config
|
||||||
|
|
||||||
|
# Remove helper once upstream version is 1.5.27 or later.
|
||||||
|
|
||||||
|
# Apply patch to fix volume change notification
|
||||||
|
patch -p1 < $DATA/fix_volume_change_notification.patch
|
||||||
|
|
||||||
|
changelog "Fix volume change notification on MATE and XFCE."
|
||||||
|
|
||||||
|
compile
|
||||||
Loading…
Add table
Add a link
Reference in a new issue