diff options
author | Gregor Kleen <gkleen@yggdrasil.li> | 2025-01-17 22:20:56 +0100 |
---|---|---|
committer | Gregor Kleen <gkleen@yggdrasil.li> | 2025-01-17 22:20:56 +0100 |
commit | 37e55957fbf411b928184465acb2b1ecd5ca6852 (patch) | |
tree | d986d3d3bb3f1ae999693aca2aa18363fd7607c8 /accounts/gkleen@sif/niri/waybar.nix | |
parent | 26e4293cd31c849fff712d57d15afa1baee2819c (diff) | |
download | nixos-37e55957fbf411b928184465acb2b1ecd5ca6852.tar nixos-37e55957fbf411b928184465acb2b1ecd5ca6852.tar.gz nixos-37e55957fbf411b928184465acb2b1ecd5ca6852.tar.bz2 nixos-37e55957fbf411b928184465acb2b1ecd5ca6852.tar.xz nixos-37e55957fbf411b928184465acb2b1ecd5ca6852.zip |
mako
Diffstat (limited to 'accounts/gkleen@sif/niri/waybar.nix')
-rw-r--r-- | accounts/gkleen@sif/niri/waybar.nix | 58 |
1 files changed, 56 insertions, 2 deletions
diff --git a/accounts/gkleen@sif/niri/waybar.nix b/accounts/gkleen@sif/niri/waybar.nix index ff48ba83..26e76a1d 100644 --- a/accounts/gkleen@sif/niri/waybar.nix +++ b/accounts/gkleen@sif/niri/waybar.nix | |||
@@ -25,8 +25,58 @@ | |||
25 | modules-right = [ # "custom/worktime" "custom/worktime-today" | 25 | modules-right = [ # "custom/worktime" "custom/worktime-today" |
26 | "custom/weather" | 26 | "custom/weather" |
27 | "custom/keymap" | 27 | "custom/keymap" |
28 | "privacy" "tray" "wireplumber" "backlight" "battery" "idle_inhibitor" "clock" ]; | 28 | "privacy" "tray" "wireplumber" "backlight" "battery" "idle_inhibitor" "custom/mako" "clock" ]; |
29 | 29 | ||
30 | "custom/mako" = { | ||
31 | format = "{}"; | ||
32 | return-type = "json"; | ||
33 | exec = pkgs.writers.writePython3 "mako-silent" { libraries = [ pkgs.python3Packages.dbus-next ]; } '' | ||
34 | from dbus_next.aio import MessageBus | ||
35 | |||
36 | import asyncio | ||
37 | |||
38 | import json | ||
39 | |||
40 | |||
41 | loop = asyncio.new_event_loop() | ||
42 | asyncio.set_event_loop(loop) | ||
43 | |||
44 | |||
45 | async def main(): | ||
46 | bus = await MessageBus().connect() | ||
47 | # the introspection xml would normally be included in your project, but | ||
48 | # this is convenient for development | ||
49 | introspection = await bus.introspect('org.freedesktop.Notifications', '/fr/emersion/Mako') # noqa: E501 | ||
50 | |||
51 | obj = bus.get_proxy_object('org.freedesktop.Notifications', '/fr/emersion/Mako', introspection) # noqa: E501 | ||
52 | mako = obj.get_interface('fr.emersion.Mako') | ||
53 | properties = obj.get_interface('org.freedesktop.DBus.Properties') | ||
54 | |||
55 | async def print_mode(): | ||
56 | modes = await mako.get_modes() | ||
57 | is_silent = "silent" in modes | ||
58 | icon = "󰂛" if is_silent else "󰂚" | ||
59 | text = f"<span font=\"Symbols Nerd Font Mono\" size=\"90%\">{icon}</span>" # noqa: E501 | ||
60 | if is_silent: | ||
61 | text = f"<span color=\"#ffffff\">{text}</span>" | ||
62 | print(json.dumps({'text': text}, separators=(',', ':')), flush=True) # noqa: E501 | ||
63 | |||
64 | async def on_properties_changed(interface_name, changed_properties, invalidated_properties): # noqa: E501 | ||
65 | if "Modes" not in invalidated_properties: | ||
66 | return | ||
67 | |||
68 | await print_mode() | ||
69 | |||
70 | properties.on_properties_changed(on_properties_changed) | ||
71 | await print_mode() | ||
72 | |||
73 | await loop.create_future() | ||
74 | |||
75 | |||
76 | loop.run_until_complete(main()) | ||
77 | ''; | ||
78 | on-click = "makoctl mode -t silent"; | ||
79 | }; | ||
30 | "custom/weather" = { | 80 | "custom/weather" = { |
31 | format = "{}"; | 81 | format = "{}"; |
32 | tooltip = true; | 82 | tooltip = true; |
@@ -240,11 +290,15 @@ | |||
240 | #tray { | 290 | #tray { |
241 | margin: 0; | 291 | margin: 0; |
242 | } | 292 | } |
243 | #battery, #idle_inhibitor, #backlight, #wireplumber { | 293 | #battery, #idle_inhibitor, #backlight, #wireplumber, #custom-mako { |
244 | color: @grey; | 294 | color: @grey; |
245 | margin: 0 5px 0 2px; | 295 | margin: 0 5px 0 2px; |
246 | } | 296 | } |
247 | #idle_inhibitor { | 297 | #idle_inhibitor { |
298 | margin-right: 4px; | ||
299 | margin-left: 6px; | ||
300 | } | ||
301 | #custom-mako { | ||
248 | margin-right: 2px; | 302 | margin-right: 2px; |
249 | margin-left: 3px; | 303 | margin-left: 3px; |
250 | } | 304 | } |