1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
# https://github.com/linuxmint/blueberry/issues/120
--- /usr/lib/blueberry/blueberry-tray.py.org 2021-12-13 01:02:56.923349069 -0800
+++ /usr/lib/blueberry/blueberry-tray.py 2021-12-13 02:21:23.253300141 -0800
@@ -5,8 +5,8 @@
import gi
gi.require_version('Gtk', '3.0')
gi.require_version('GnomeBluetooth', '1.0')
-gi.require_version('XApp', '1.0')
-from gi.repository import Gtk, Gdk, GnomeBluetooth, Gio, XApp
+gi.require_version('AppIndicator3', '0.1')
+from gi.repository import AppIndicator3, Gtk, Gdk, GnomeBluetooth, Gio
import rfkillMagic
import setproctitle
import subprocess
@@ -53,12 +53,16 @@
self.model.connect('row-deleted', self.update_icon_callback)
self.model.connect('row-inserted', self.update_icon_callback)
- self.icon = XApp.StatusIcon()
- self.icon.set_name("blueberry")
- self.icon.set_tooltip_text(_("Bluetooth"))
- self.icon.connect("activate", self.on_statusicon_activated)
- self.icon.connect("button-release-event", self.on_statusicon_released)
-
+ self.paired_devices = {}
+
+ self.icon = AppIndicator3.Indicator.new(
+ 'BlueBerry',
+ 'blueberry',
+ AppIndicator3.IndicatorCategory.SYSTEM_SERVICES
+ )
+ self.icon.set_status(AppIndicator3.IndicatorStatus.ACTIVE)
+ self.icon.set_menu(self.build_menu())
+
self.update_icon_callback(None, None, None)
def on_settings_changed_cb(self, setting, key, data=None):
@@ -71,21 +75,18 @@
return
if self.rfkill.hard_block or self.rfkill.soft_block:
- self.icon.set_icon_name(self.tray_disabled_icon)
- self.icon.set_tooltip_text(_("Bluetooth is disabled"))
+ self.icon.set_icon(self.tray_disabled_icon)
else:
- self.icon.set_icon_name(self.tray_icon)
+ self.icon.set_icon(self.tray_icon)
self.update_connected_state()
def update_connected_state(self):
self.get_devices()
if len(self.connected_devices) > 0:
- self.icon.set_icon_name(self.tray_active_icon)
- self.icon.set_tooltip_text(_("Bluetooth: Connected to %s") % (", ".join(self.connected_devices)))
+ self.icon.set_icon(self.tray_active_icon)
else:
- self.icon.set_icon_name(self.tray_icon)
- self.icon.set_tooltip_text(_("Bluetooth"))
+ self.icon.set_icon(self.tray_icon)
def get_devices(self):
self.connected_devices = []
@@ -117,13 +118,14 @@
iter = self.model.iter_next(iter)
- def on_statusicon_activated(self, icon, button, time):
- if button == Gdk.BUTTON_PRIMARY:
- subprocess.Popen(["blueberry"])
+ def start_blueberry(self, _ignored):
+ subprocess.Popen(["blueberry"])
- def on_statusicon_released(self, icon, x, y, button, time, position):
- if button == 3:
+ def build_menu(self):
menu = Gtk.Menu()
+ blueberry_exec = Gtk.MenuItem(label=_("BlueBerry"))
+ blueberry_exec.connect("activate", self.start_blueberry)
+ menu.append(blueberry_exec)
if not self.rfkill.hard_block:
if self.rfkill.soft_block:
@@ -168,7 +170,7 @@
menu.append(item)
menu.show_all()
- icon.popup_menu(menu, x, y, button, time, position)
+ return menu
def toggle_connect_cb(self, item, data = None):
proxy = self.paired_devices[data]
|