Propagate taffybar audio and favicon updates
This commit is contained in:
@@ -30,6 +30,7 @@ import System.Taffybar.Information.ChromeWindowInfo (getChromeWindowInfoRefreshC
|
||||
import System.Taffybar.Util (postGUIASync)
|
||||
import System.Taffybar.Widget
|
||||
import qualified System.Taffybar.Widget.ASUS as ASUS
|
||||
import qualified System.Taffybar.Widget.Audio as Audio
|
||||
import System.Taffybar.Widget.CPUMonitor (cpuMonitorNew)
|
||||
import System.Taffybar.Widget.Generic.Graph (GraphConfig (..), GraphDirection (..), GraphStyle (..), defaultGraphConfig)
|
||||
import qualified System.Taffybar.Widget.NetworkManager as NetworkManager
|
||||
@@ -39,7 +40,6 @@ import System.Taffybar.Widget.OpenAIUsage
|
||||
defaultOpenAIUsageStackConfig,
|
||||
openAIUsageSectionNewWith,
|
||||
)
|
||||
import qualified System.Taffybar.Widget.PulseAudio as PulseAudio
|
||||
import System.Taffybar.Widget.SNIMenu (withNmAppletMenu)
|
||||
import System.Taffybar.Widget.SNITray
|
||||
( CollapsibleSNITrayParams (..),
|
||||
@@ -76,7 +76,7 @@ import Text.Read (readMaybe)
|
||||
|
||||
audioWidget :: TaffyIO Gtk.Widget
|
||||
audioWidget =
|
||||
decorateWithClassAndBoxM "audio" PulseAudio.pulseAudioNew
|
||||
decorateWithClassAndBoxM "audio" Audio.audioNew
|
||||
|
||||
networkInnerWidget :: TaffyIO Gtk.Widget
|
||||
networkInnerWidget =
|
||||
@@ -241,7 +241,7 @@ audioBacklightWidget :: TaffyIO Gtk.Widget
|
||||
audioBacklightWidget =
|
||||
stackInPill
|
||||
"audio-backlight"
|
||||
[ PulseAudio.pulseAudioNew,
|
||||
[ Audio.audioNew,
|
||||
backlightNewChanWith
|
||||
defaultBacklightWidgetConfig
|
||||
{ backlightFormat = "$percent$%",
|
||||
|
||||
@@ -7,3 +7,4 @@ packages:
|
||||
taffybar/packages/status-notifier-item
|
||||
taffybar/packages/dbus-menu
|
||||
taffybar/packages/dbus-hslogger
|
||||
taffybar/packages/gi-wireplumber
|
||||
|
||||
6
dotfiles/config/taffybar/flake.lock
generated
6
dotfiles/config/taffybar/flake.lock
generated
@@ -136,11 +136,11 @@
|
||||
"xmonad-contrib": "xmonad-contrib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778303085,
|
||||
"narHash": "sha256-pDFWJ3BJ4jaZOi1hq7SHzRCdnII8PgvBNxcyoFgx4BE=",
|
||||
"lastModified": 1778662099,
|
||||
"narHash": "sha256-vHiVLdTRBvEyEL0ebGENA/Hv1vTwpWQ96Gj3JNPqeD0=",
|
||||
"owner": "taffybar",
|
||||
"repo": "taffybar",
|
||||
"rev": "45b31b789fdfeff7251f0f77e1259ef4d1cc987a",
|
||||
"rev": "1741477fea5e9fd18b23f717d6d5c91b2aec09fa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -107,6 +107,13 @@
|
||||
{ })
|
||||
(_: { doCheck = false; doHaddock = false; });
|
||||
|
||||
gi-wireplumber =
|
||||
pkgs.haskell.lib.overrideCabal
|
||||
(hself.callCabal2nix "gi-wireplumber"
|
||||
(localTaffybarSubdir "packages/gi-wireplumber")
|
||||
{ })
|
||||
(_: { doCheck = false; doHaddock = false; });
|
||||
|
||||
dbus-hslogger =
|
||||
hself.callCabal2nix "dbus-hslogger"
|
||||
(localTaffybarSubdir "packages/dbus-hslogger")
|
||||
@@ -116,12 +123,24 @@
|
||||
# modules (e.g. System.Taffybar.Widget.ASUS) used by this config.
|
||||
taffybar = pkgs.haskell.lib.overrideCabal
|
||||
(pkgs.haskell.lib.disableStaticLibraries
|
||||
(hself.callCabal2nix "taffybar" cleanedTaffybarSource { inherit (pkgs) gtk3; }))
|
||||
(hself.callCabal2nix "taffybar" cleanedTaffybarSource {
|
||||
inherit (pkgs) gtk3;
|
||||
}))
|
||||
(oa: {
|
||||
doHaddock = false;
|
||||
doCheck = false;
|
||||
# Needed for gi-gtk-layer-shell (introspection data).
|
||||
librarySystemDepends = (oa.librarySystemDepends or []) ++ [ pkgs.gtk-layer-shell ];
|
||||
# Needed for gi-gtk-layer-shell and gi-wireplumber introspection data.
|
||||
librarySystemDepends = (oa.librarySystemDepends or []) ++ [
|
||||
pkgs.gtk-layer-shell
|
||||
pkgs.wireplumber
|
||||
];
|
||||
shellHook = ''
|
||||
${oa.shellHook or ""}
|
||||
export PKG_CONFIG_PATH="${pkgs.wireplumber.dev}/lib/pkgconfig:${pkgs.pipewire.dev}/lib/pkgconfig:''${PKG_CONFIG_PATH:-}"
|
||||
export GI_GIR_PATH="${pkgs.wireplumber.dev}/share/gir-1.0:''${GI_GIR_PATH:-}"
|
||||
export GI_TYPELIB_PATH="${pkgs.wireplumber}/lib/girepository-1.0:${pkgs.glib.out}/lib/girepository-1.0:''${GI_TYPELIB_PATH:-}"
|
||||
export XDG_DATA_DIRS="${pkgs.wireplumber.dev}/share:''${XDG_DATA_DIRS:-}"
|
||||
'';
|
||||
});
|
||||
|
||||
# gi-gtk-hs patching is now handled by taffybar's fixVersionNamePackages overlay
|
||||
@@ -184,6 +203,7 @@
|
||||
pkgs.librsvg
|
||||
];
|
||||
shellHook = ''
|
||||
${hpkgs.taffybar.env.shellHook or ""}
|
||||
# GHCi loads package DLL dependencies via the runtime linker, so it
|
||||
# needs zlib on LD_LIBRARY_PATH in addition to the build-time -L flags.
|
||||
export LD_LIBRARY_PATH="${pkgs.lib.makeLibraryPath [ pkgs.zlib ]}:''${LD_LIBRARY_PATH:-}"
|
||||
|
||||
Submodule dotfiles/config/taffybar/taffybar updated: 5af1f40e56...1741477fea
@@ -1,16 +1,17 @@
|
||||
module Main (main) where
|
||||
|
||||
import TaffybarConfig.Config (mkSimpleTaffyConfig)
|
||||
import TaffybarConfig.Host (cssFilesForHost)
|
||||
import Network.HostName (getHostName)
|
||||
import System.Environment.XDG.BaseDir (getUserConfigFile)
|
||||
import System.Log.Logger (Priority (WARNING), rootLoggerName, setLevel, updateGlobalLogger)
|
||||
import System.Taffybar (startTaffybar)
|
||||
import System.Taffybar.Context (detectBackend)
|
||||
import System.Taffybar.Context (appendHook, detectBackend)
|
||||
import System.Taffybar.DBus
|
||||
import System.Taffybar.DBus.Toggle
|
||||
import System.Taffybar.Hooks (withLogLevels)
|
||||
import System.Taffybar.Information.ChromeWindowInfo (registerChromeWindowInfoRefreshRequests)
|
||||
import System.Taffybar.SimpleConfig (toTaffybarConfig)
|
||||
import TaffybarConfig.Config (mkSimpleTaffyConfig)
|
||||
import TaffybarConfig.Host (cssFilesForHost)
|
||||
|
||||
main :: IO ()
|
||||
main = do
|
||||
@@ -25,4 +26,5 @@ main = do
|
||||
withLogServer $
|
||||
withLogLevels $
|
||||
withToggleServer $
|
||||
toTaffybarConfig simpleTaffyConfig
|
||||
appendHook registerChromeWindowInfoRefreshRequests $
|
||||
toTaffybarConfig simpleTaffyConfig
|
||||
|
||||
100
nixos/chrome-favicon-dbus.nix
Normal file
100
nixos/chrome-favicon-dbus.nix
Normal file
@@ -0,0 +1,100 @@
|
||||
{
|
||||
config,
|
||||
inputs,
|
||||
lib,
|
||||
pkgs,
|
||||
makeEnable,
|
||||
...
|
||||
}: let
|
||||
system = pkgs.stdenv.hostPlatform.system;
|
||||
bridgePackage = inputs.chrome-favicon-dbus.packages.${system}.default;
|
||||
extensionSource = "${inputs.chrome-favicon-dbus}/extension";
|
||||
extensionManifest = builtins.fromJSON (builtins.readFile "${extensionSource}/manifest.json");
|
||||
extensionVersion = extensionManifest.version;
|
||||
extensionId = "odlameecjipmbmbejkplpemijjgpljce";
|
||||
extensionKey = pkgs.writeText "chrome-favicon-dbus-extension.pem" ''
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDF0IL1wJ4JyaYc
|
||||
c3vcixly8UEYUxo6TEwpPFIj/9bTGsIVCzVMxeirqn3979o9DUxZGgn6Ktm6LTnb
|
||||
h1MK5FZxO3PDdiiotmejbWd79c7PWvGU/Vlf3WuSeej1ksEpNw9GEE/PJ6J9Q0nA
|
||||
8kpbJ6sicAY0S0ZzdL7XKNRKGdy6t2BrsO2MBBGcMh/EpkoxzgPBx3/mefcebUnl
|
||||
7nIStYX+59w27epsZOLOS/7FPJhx8rda0Lfw3GtFtWef7vWW2DrDuPV1+dDbp8ZH
|
||||
jspqGGncBJJ7yuUwMpDNEunBOkb/t75LCL+ISn4i5EvMZbQjvRgZOht6jHbVSJeG
|
||||
eBIVHSG1AgMBAAECggEAGtx10A+0FiGo+g+Pd/L2hXZvr7EnLFfsdqP/hm5o+jkV
|
||||
tjxTpEVykw7/dVJS2Pv7jFTeGnejoaWfB+mgE+hOOamITng2zLQaLiW+yeUmzF7t
|
||||
05y0fHFJeHYv9VrUeneEzi+MWtWnuak/tGDiSm8ATNiX6xV2r1pgyMA9VYOeBsd/
|
||||
Q7aCpMgtD9fP3Vo3b8PousmZRB1c3xMf3XIcxdxEppFlUVlGTSi2kuFoEwM6i2fr
|
||||
5ptfM8JrSoPZwB6neTg959vpezviYJviDufbCaH777Uvrvr+i5Dzifrjo94yhtp4
|
||||
+sv9jVDqL4gUCIkEs3EtQJH57tZtti+mQ8hTsFh6iQKBgQDkcqnQjkCuuIffrzgX
|
||||
dnRXwCHWptsDqwJaEnyxUoGZhP8tUcOfX8cXkn9AKZCMq/eyzXR4qIWIaKevcTUN
|
||||
s35YMoXCUZ/Xmj98/9A9rZ8Z/sJnJPvpqctNer59NhCjyIMdh4k3NZAfSoBNgTXt
|
||||
kz0ir3A0pZTUDeDSXNQe7kVUPQKBgQDdrApydIm4oJIlLq2KctHv/YYpCZRSebmS
|
||||
Wr+CdTFtjIMl5SBoVeCA+joovLOd+3VYdpHHp0eWkcvjD08K+shLWJ1JtIEMuTDO
|
||||
KJ1C6iPYRPVD6HZhjP2xtwO1gnGiyF5O5qMkfqQXP0B8iDaUTaoaZloJNpNw2fa2
|
||||
UF1ZvDVC2QKBgCqjXB6Y7mmt925Afe+jJEPckHRH4Ejm+iFlofBWvemxcQ88W467
|
||||
iaVUqnuHRnt6/VhaEIsUqRe0sNeGAaj0/3fmtiB2q6bKG19xP6TDaxam/hHSTVJn
|
||||
ZpKnfjZQiPqIyjAQxAOR87xjY18T5sTY3mhC5mZtIUIS9QtOWCkNv9LhAoGBALys
|
||||
YxP6FwKbQOj+6tytT/zpl5g0PBda3dUxAlHit9hbQYEunT/Q4E5HLNthiawMzFso
|
||||
SHpb6fXBUH2JmShqPbLL0MxcI38V3PGL5hZ/PVUllHBhWuk63O+3KyQBzADWdFbJ
|
||||
vdAhLj9PKe8U7Qebdw4TUc0Hs8TY8EFK87meFOM5AoGAZyCQvbXR0nbJuXmahhrT
|
||||
sKFlAiM3ID+0LN137qeKegxbEOit5sTBjCkdFSovsqyoKR5mF5g3J3Zq/JK4naHD
|
||||
l/7vEZbO+yR/rn/exH3Aj+GIIy83kvsRsPbAbW8aII7MhRZKEa/W3bdtHfczyI6r
|
||||
apyjjEZEct41A23iQkkbytQ=
|
||||
-----END PRIVATE KEY-----
|
||||
'';
|
||||
extensionPackage =
|
||||
pkgs.runCommand "chrome-favicon-dbus-extension-${extensionVersion}" {
|
||||
nativeBuildInputs = [pkgs.google-chrome];
|
||||
} ''
|
||||
export HOME="$TMPDIR/home"
|
||||
mkdir -p "$HOME" "$out"
|
||||
cp -R --no-preserve=mode "${extensionSource}" extension
|
||||
google-chrome-stable \
|
||||
--pack-extension="$PWD/extension" \
|
||||
--pack-extension-key="${extensionKey}"
|
||||
cp extension.crx "$out/chrome-favicon-dbus.crx"
|
||||
cp -R extension "$out/unpacked"
|
||||
'';
|
||||
runtimePath = lib.makeBinPath [
|
||||
pkgs.coreutils
|
||||
pkgs.hyprland
|
||||
pkgs.xdotool
|
||||
pkgs.which
|
||||
];
|
||||
in
|
||||
makeEnable config "myModules.chrome-favicon-dbus" false {
|
||||
home-manager.sharedModules = [
|
||||
{
|
||||
home.packages = [bridgePackage];
|
||||
|
||||
xdg.configFile."google-chrome-unpacked-extensions/chrome-favicon-dbus" = {
|
||||
source = extensionSource;
|
||||
recursive = true;
|
||||
};
|
||||
|
||||
xdg.configFile."google-chrome/External Extensions/${extensionId}.json".text = builtins.toJSON {
|
||||
external_crx = "${extensionPackage}/chrome-favicon-dbus.crx";
|
||||
external_version = extensionVersion;
|
||||
};
|
||||
|
||||
systemd.user.services.chrome-favicon-dbus = {
|
||||
Unit = {
|
||||
Description = "Chrome favicon metadata over D-Bus";
|
||||
After = ["graphical-session.target"];
|
||||
PartOf = ["graphical-session.target"];
|
||||
};
|
||||
|
||||
Service = {
|
||||
ExecStart = "${bridgePackage}/bin/chrome-favicon-dbus --host 127.0.0.1 --port 38933 --path /update";
|
||||
Environment = "PATH=${runtimePath}:/run/current-system/sw/bin";
|
||||
Restart = "on-failure";
|
||||
RestartSec = 2;
|
||||
};
|
||||
|
||||
Install = {
|
||||
WantedBy = ["graphical-session.target"];
|
||||
};
|
||||
};
|
||||
}
|
||||
];
|
||||
}
|
||||
@@ -11,6 +11,7 @@
|
||||
./bootloaders/systemd-boot.nix
|
||||
./cache-server.nix
|
||||
./cache.nix
|
||||
./chrome-favicon-dbus.nix
|
||||
./code.nix
|
||||
./cua.nix
|
||||
./desktop.nix
|
||||
|
||||
27
nixos/flake.lock
generated
27
nixos/flake.lock
generated
@@ -84,6 +84,26 @@
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"chrome-favicon-dbus": {
|
||||
"inputs": {
|
||||
"nixpkgs": [
|
||||
"nixpkgs"
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778633515,
|
||||
"narHash": "sha256-QC/nUlGoqUx63cGwQCkHEN0Qs85PSdF7RYrHYmD4L+A=",
|
||||
"owner": "taffybar",
|
||||
"repo": "chrome-favicon-dbus",
|
||||
"rev": "b791fe9d57b1e09c06f56174d73d9c43b8493fe5",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "taffybar",
|
||||
"repo": "chrome-favicon-dbus",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"claude-code-nix": {
|
||||
"inputs": {
|
||||
"flake-utils": [
|
||||
@@ -1747,6 +1767,7 @@
|
||||
"hyprland",
|
||||
"aquamarine"
|
||||
],
|
||||
"chrome-favicon-dbus": "chrome-favicon-dbus",
|
||||
"claude-code-nix": "claude-code-nix",
|
||||
"codex-cli-nix": "codex-cli-nix",
|
||||
"codex-desktop-linux": "codex-desktop-linux",
|
||||
@@ -1907,11 +1928,11 @@
|
||||
"xmonad-contrib": "xmonad-contrib"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1778446663,
|
||||
"narHash": "sha256-xHKRrar08yPsOVbPG7DlouKU83r8P0WAwoxUuje3kq0=",
|
||||
"lastModified": 1778662099,
|
||||
"narHash": "sha256-vHiVLdTRBvEyEL0ebGENA/Hv1vTwpWQ96Gj3JNPqeD0=",
|
||||
"owner": "taffybar",
|
||||
"repo": "taffybar",
|
||||
"rev": "2c95fd5a8aa125d0ba89873a7d4dfd49bb57b00c",
|
||||
"rev": "1741477fea5e9fd18b23f717d6d5c91b2aec09fa",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
|
||||
@@ -91,6 +91,11 @@
|
||||
};
|
||||
};
|
||||
|
||||
chrome-favicon-dbus = {
|
||||
url = "github:taffybar/chrome-favicon-dbus";
|
||||
inputs.nixpkgs.follows = "nixpkgs";
|
||||
};
|
||||
|
||||
# Hyprland and plugins from official flakes for proper plugin compatibility
|
||||
hyprland = {
|
||||
url = "git+https://github.com/hyprwm/Hyprland?submodules=1";
|
||||
|
||||
@@ -200,6 +200,7 @@
|
||||
in
|
||||
makeEnable config "myModules.taffybar" false {
|
||||
myModules.sni.enable = true;
|
||||
myModules.chrome-favicon-dbus.enable = true;
|
||||
|
||||
environment.systemPackages = [
|
||||
taffybarPackage
|
||||
|
||||
Reference in New Issue
Block a user