feat: switch to blueberry for cleaner UI
This commit is contained in:
parent
633bec1b71
commit
b8120a6fef
8 changed files with 126 additions and 6 deletions
|
@ -18,7 +18,7 @@ exec-once = $HOME/.config/lisgd/config &
|
||||||
|
|
||||||
# Execute your favorite apps at launch
|
# Execute your favorite apps at launch
|
||||||
exec-once = bash -c "sleep 3; nm-applet"
|
exec-once = bash -c "sleep 3; nm-applet"
|
||||||
exec-once = bash -c "sleep 4; blueman-applet"
|
exec-once = bash -c "sleep 4; blueberry-tray"
|
||||||
exec-once = bash -c "sleep 5; nextcloud --background"
|
exec-once = bash -c "sleep 5; nextcloud --background"
|
||||||
exec-once = bash -c "sleep 6; tutanota-desktop -a"
|
exec-once = bash -c "sleep 6; tutanota-desktop -a"
|
||||||
exec-once = bash -c "sleep 7; GalaxyBudsClient /StartMinimized"
|
exec-once = bash -c "sleep 7; GalaxyBudsClient /StartMinimized"
|
||||||
|
|
|
@ -6,8 +6,6 @@
|
||||||
powerOnBoot = true;
|
powerOnBoot = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
services.blueman.enable = true;
|
|
||||||
|
|
||||||
services.udev.extraRules = ''
|
services.udev.extraRules = ''
|
||||||
# give permanent path to keyboard XF86* binds
|
# give permanent path to keyboard XF86* binds
|
||||||
SUBSYSTEMS=="input", ATTRS{id/product}=="0006", ATTRS{id/vendor}=="0000", SYMLINK += "video-bus"
|
SUBSYSTEMS=="input", ATTRS{id/product}=="0006", ATTRS{id/vendor}=="0000", SYMLINK += "video-bus"
|
||||||
|
|
|
@ -43,7 +43,13 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
xdg.portal.enable = true;
|
xdg.portal = {
|
||||||
|
enable = true;
|
||||||
|
wlr.enable = true;
|
||||||
|
extraPortals = [
|
||||||
|
pkgs.xdg-desktop-portal-gtk
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
|
|
||||||
|
|
|
@ -14,8 +14,7 @@
|
||||||
networking.networkmanager.wifi.backend = "iwd";
|
networking.networkmanager.wifi.backend = "iwd";
|
||||||
|
|
||||||
# Set your time zone.
|
# Set your time zone.
|
||||||
#time.timeZone = "America/Montreal";
|
time.timeZone = "America/Montreal";
|
||||||
time.timeZone = "Europe/Paris";
|
|
||||||
|
|
||||||
# Select internationalisation properties.
|
# Select internationalisation properties.
|
||||||
i18n.defaultLocale = "en_CA.UTF-8";
|
i18n.defaultLocale = "en_CA.UTF-8";
|
||||||
|
|
|
@ -1,11 +1,20 @@
|
||||||
{ pkgs, ... }:
|
{ pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
|
home.shellAliases = {
|
||||||
|
rg = "rga";
|
||||||
|
};
|
||||||
|
|
||||||
programs = {
|
programs = {
|
||||||
btop = {
|
btop = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ripgrep = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.ripgrep-all;
|
||||||
|
};
|
||||||
|
|
||||||
waybar = {
|
waybar = {
|
||||||
enable = true;
|
enable = true;
|
||||||
# https://discourse.nixos.org/t/how-to-use-waybar-hyprland/27638/6
|
# https://discourse.nixos.org/t/how-to-use-waybar-hyprland/27638/6
|
||||||
|
@ -61,6 +70,8 @@
|
||||||
'')
|
'')
|
||||||
|
|
||||||
swayosd
|
swayosd
|
||||||
|
blueberry
|
||||||
|
libayatana-appindicator
|
||||||
qt5.qtwayland
|
qt5.qtwayland
|
||||||
qt6.qtwayland
|
qt6.qtwayland
|
||||||
httrack
|
httrack
|
||||||
|
|
10
nixos/overlays/blueberry.nix
Normal file
10
nixos/overlays/blueberry.nix
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
final: prev: {
|
||||||
|
blueberry = prev.blueberry.overrideAttrs (o: {
|
||||||
|
patches = (o.patches or [ ]) ++ [
|
||||||
|
./patches/wayland.patch
|
||||||
|
];
|
||||||
|
buildInputs = (o.buildInputs or [ ]) ++ [
|
||||||
|
prev.libappindicator
|
||||||
|
];
|
||||||
|
});
|
||||||
|
}
|
|
@ -3,5 +3,6 @@
|
||||||
{
|
{
|
||||||
nixpkgs.overlays = [
|
nixpkgs.overlays = [
|
||||||
(import ./swayosd.nix)
|
(import ./swayosd.nix)
|
||||||
|
(import ./blueberry.nix)
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
95
nixos/overlays/patches/wayland.patch
Normal file
95
nixos/overlays/patches/wayland.patch
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
# 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,23 @@
|
||||||
|
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_title(_("Bluetooth is disabled"))
|
||||||
|
+ self.icon.set_icon(self.tray_disabled_icon)
|
||||||
|
+ self.icon.set_menu(self.build_menu())
|
||||||
|
else:
|
||||||
|
- self.icon.set_icon_name(self.tray_icon)
|
||||||
|
+ self.icon.set_icon(self.tray_icon)
|
||||||
|
+ self.icon.set_menu(self.build_menu())
|
||||||
|
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_title(_("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_title(_("Bluetooth"))
|
||||||
|
+ self.icon.set_icon(self.tray_icon)
|
||||||
|
|
||||||
|
def get_devices(self):
|
||||||
|
self.connected_devices = []
|
||||||
|
@@ -117,13 +118,11 @@
|
||||||
|
|
||||||
|
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()
|
||||||
|
|
||||||
|
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]
|
||||||
|
|
Loading…
Reference in a new issue