This commit is contained in:
Makesesama 2025-05-04 20:38:00 +02:00
parent ce030a8734
commit 2541edd0f4
6 changed files with 847 additions and 124 deletions

View File

@ -159,6 +159,10 @@ menu>menuitem:hover {
padding: 2px;
}
#nixos-label {
color: var(--blue);
}
tooltip {
border: solid 2px;
border-color: var(--border-color);

View File

@ -137,9 +137,12 @@ class StatusBar(Window):
name="bar-inner",
start_children=Box(
name="start-container",
spacing=4,
spacing=6,
orientation="h",
children=self.workspaces,
children=[
Label(name="nixos-label", markup=""),
self.workspaces,
],
),
center_children=Box(
name="center-container",

176
bar/modules/icons.py Normal file
View File

@ -0,0 +1,176 @@
# Parameters
font_family: str = "tabler-icons"
font_weight: str = "normal"
span: str = f"<span font-family='{font_family}' font-weight='{font_weight}'>"
# Panels
apps: str = "&#xf1fd;"
dashboard: str = "&#xea87;"
chat: str = "&#xf59f;"
wallpapers: str = "&#xeb01;"
windows: str = "&#xefe6;"
# Bar
colorpicker: str = "&#xebe6;"
media: str = "&#xf00d;"
# Toolbox
toolbox: str = "&#xebca;"
ssfull: str = "&#xec3c;"
ssregion: str = "&#xf201;"
sswindow: str = "&#xeaea;"
screenshots: str = "&#xeb0a;"
screenrecord: str = "&#xed22;"
recordings: str = "&#xeafa;"
ocr: str = "&#xfcc3;"
gamemode: str = "&#xf026;"
gamemode_off: str = "&#xf111;"
close: str = "&#xeb55;"
# Circles
temp: str = "&#xeb38;"
disk: str = "&#xea88;"
battery: str = "&#xea38;"
memory: str = "&#xfa97;"
cpu: str = "&#xef8e;"
gpu: str = "&#xf233;"
# AIchat
reload: str = "&#xf3ae;"
detach: str = "&#xea99;"
# Wallpapers
add: str = "&#xeb0b;"
sort: str = "&#xeb5a;"
circle: str = "&#xf671;"
# Chevrons
chevron_up: str = "&#xea62;"
chevron_down: str = "&#xea5f;"
chevron_left: str = "&#xea60;"
chevron_right: str = "&#xea61;"
# Power
lock: str = "&#xeae2;"
suspend: str = "&#xece7;"
logout: str = "&#xeba8;"
reboot: str = "&#xeb13;"
shutdown: str = "&#xeb0d;"
# Power Manager
power_saving: str = "&#xed4f;"
power_balanced: str = "&#xfa77;"
power_performance: str = "&#xec45;"
charging: str = "&#xefef;"
discharging: str = "&#xefe9;"
alert: str = "&#xea06;"
bat_charging: str = "&#xeeca;"
bat_discharging: str = "&#xf0a1;"
bat_low: str = "&#xff1d;"
bat_full: str = "&#xea38;"
# Applets
wifi_0: str = "&#xeba3;"
wifi_1: str = "&#xeba4;"
wifi_2: str = "&#xeba5;"
wifi_3: str = "&#xeb52;"
world: str = "&#xeb54;"
world_off: str = "&#xf1ca;"
bluetooth: str = "&#xea37;"
night: str = "&#xeaf8;"
coffee: str = "&#xef0e;"
notifications: str = "&#xea35;"
wifi_off: str = "&#xecfa;"
bluetooth_off: str = "&#xeceb;"
night_off: str = "&#xf162;"
notifications_off: str = "&#xece9;"
notifications_clear: str = "&#xf814;"
download: str = "&#xea96;"
upload: str = "&#xeb47;"
# Bluetooth
bluetooth_connected: str = "&#xecea;"
bluetooth_disconnected: str = "&#xf081;"
# Player
pause: str = "&#xf690;"
play: str = "&#xf691;"
stop: str = "&#xf695;"
skip_back: str = "&#xf693;"
skip_forward: str = "&#xf694;"
prev: str = "&#xf697;"
next: str = "&#xf696;"
shuffle: str = "&#xf000;"
repeat: str = "&#xeb72;"
music: str = "&#xeafc;"
rewind_backward_5: str = "&#xfabf;"
rewind_forward_5: str = "&#xfac7;"
# Volume
vol_off: str = "&#xf1c3;"
vol_mute: str = "&#xeb50;"
vol_medium: str = "&#xeb4f;"
vol_high: str = "&#xeb51;"
mic: str = "&#xeaf0;"
mic_mute: str = "&#xed16;"
# Overview
circle_plus: str = "&#xea69;"
# Pins
paperclip: str = "&#xeb02;"
# Clipboard Manager
clipboard: str = "&#xea6f;"
clip_text: str = "&#xf089;"
# Confirm
accept: str = "&#xea5e;"
cancel: str = "&#xeb55;"
trash: str = "&#xeb41;"
# Config
config: str = "&#xeb20;"
# Icons
firefox: str = "&#xecfd;"
chromium: str = "&#xec18;"
spotify: str = "&#xfe86;"
disc: str = "&#x1003e;"
disc_off: str = "&#xf118;"
# Brightness
brightness_low: str = "&#xeb7d;"
brightness_medium: str = "&#xeb7e;"
brightness_high: str = "&#xeb30;"
# Misc
dot: str = "&#xf698;"
palette: str = "&#xeb01;"
cloud_off: str = "&#xed3e;"
loader: str = "&#xeca3;"
radar: str = "&#xf017;"
emoji: str = "&#xeaf7;"
keyboard: str = "&#xebd6;"
terminal: str = "&#xebef;"
timer_off: str = "&#xf146;"
timer_on: str = "&#xf756;"
spy: str = "&#xf227;"
exceptions: list[str] = ["font_family", "font_weight", "span"]
def apply_span() -> None:
global_dict = globals()
for key in global_dict:
if key not in exceptions and not key.startswith("__"):
global_dict[key] = f"{span}{global_dict[key]}</span>"
apply_span()

112
bar/modules/power.py Normal file
View File

@ -0,0 +1,112 @@
from fabric.widgets.box import Box
from fabric.widgets.label import Label
from fabric.widgets.button import Button
from fabric.utils.helpers import exec_shell_command_async
import modules.icons as icons
class PowerMenu(Box):
def __init__(self, **kwargs):
super().__init__(
name="power-menu",
orientation="h",
spacing=4,
v_align="center",
h_align="center",
visible=True,
**kwargs,
)
self.notch = kwargs["notch"]
self.btn_lock = Button(
name="power-menu-button",
child=Label(name="button-label", markup=icons.lock),
on_clicked=self.lock,
h_expand=False,
v_expand=False,
h_align="center",
v_align="center",
)
self.btn_suspend = Button(
name="power-menu-button",
child=Label(name="button-label", markup=icons.suspend),
on_clicked=self.suspend,
h_expand=False,
v_expand=False,
h_align="center",
v_align="center",
)
self.btn_logout = Button(
name="power-menu-button",
child=Label(name="button-label", markup=icons.logout),
on_clicked=self.logout,
h_expand=False,
v_expand=False,
h_align="center",
v_align="center",
)
self.btn_reboot = Button(
name="power-menu-button",
child=Label(name="button-label", markup=icons.reboot),
on_clicked=self.reboot,
h_expand=False,
v_expand=False,
h_align="center",
v_align="center",
)
self.btn_shutdown = Button(
name="power-menu-button",
child=Label(name="button-label", markup=icons.shutdown),
on_clicked=self.poweroff,
h_expand=False,
v_expand=False,
h_align="center",
v_align="center",
)
self.buttons = [
self.btn_lock,
self.btn_suspend,
self.btn_logout,
self.btn_reboot,
self.btn_shutdown,
]
for button in self.buttons:
self.add(button)
self.show_all()
def close_menu(self):
self.notch.close_notch()
# Métodos de acción
def lock(self, *args):
print("Locking screen...")
exec_shell_command_async("loginctl lock-session")
self.close_menu()
def suspend(self, *args):
print("Suspending system...")
exec_shell_command_async("systemctl suspend")
self.close_menu()
def logout(self, *args):
print("Logging out...")
exec_shell_command_async("hyprctl dispatch exit")
self.close_menu()
def reboot(self, *args):
print("Rebooting system...")
exec_shell_command_async("systemctl reboot")
self.close_menu()
def poweroff(self, *args):
print("Powering off...")
exec_shell_command_async("systemctl poweroff")
self.close_menu()

View File

@ -1,122 +0,0 @@
#!/usr/bin/env python3
from __future__ import annotations
from dataclasses import dataclass, field
from typing import Callable
from pywayland.client import Display
from pywayland.protocol.wayland import WlOutput, WlRegistry, WlSeat
from generated.river_status_unstable_v1 import (
ZriverStatusManagerV1,
ZriverOutputStatusV1,
)
@dataclass
class OutputInfo:
name: int
output: WlOutput
status: ZriverOutputStatusV1
tags_view: list[int] = field(default_factory=list)
tags_focused: list[int] = field(default_factory=list)
@dataclass
class State:
display: Display
registry: WlRegistry
outputs: dict[int, OutputInfo] = field(default_factory=dict)
river_status_mgr: ZriverStatusManagerV1 | None = None
seat: WlSeat | None = None
seat_status: ZriverSeatStatusV1 | None = None
def decode_bitfields(bitfields: list[int] | int) -> list[int]:
tags = set()
if isinstance(bitfields, int):
bitfields = [bitfields]
for bits in bitfields:
for i in range(32):
if bits & (1 << i):
tags.add(i)
return sorted(tags)
def handle_global(
state: State, registry: WlRegistry, name: int, iface: str, version: int
) -> None:
if iface == "zriver_status_manager_v1":
state.river_status_mgr = registry.bind(name, ZriverStatusManagerV1, version)
elif iface == "wl_output":
output = registry.bind(name, WlOutput, version)
state.outputs[name] = OutputInfo(name=name, output=output, status=None)
elif iface == "wl_seat":
seat = registry.bind(name, WlSeat, version)
state.seat = seat
def handle_global_remove(state: State, registry: WlRegistry, name: int) -> None:
if name in state.outputs:
print(f"Output {name} removed.")
del state.outputs[name]
def make_view_tags_handler(state: State, name: int) -> Callable:
def handler(self, tags: list[int]) -> None:
decoded = decode_bitfields(tags)
state.outputs[name].tags_view = decoded
print(f"[Output {name}] View tags: {decoded}")
return handler
def make_focused_tags_handler(state: State, name: int) -> Callable:
def handler(self, tags: int) -> None:
decoded = decode_bitfields(tags)
state.outputs[name].tags_focused = decoded
print(f"[Output {name}] Focused tags: {decoded}")
return handler
def main() -> None:
with Display() as display:
registry = display.get_registry()
state = State(display=display, registry=registry)
registry.dispatcher["global"] = lambda reg, name, iface, ver: handle_global(
state, reg, name, iface, ver
)
registry.dispatcher["global_remove"] = lambda reg, name: handle_global_remove(
state, reg, name
)
# Discover globals
display.roundtrip()
if not state.river_status_mgr:
print("❌ River status manager not found.")
return
# Bind output status listeners
for name, info in state.outputs.items():
status = state.river_status_mgr.get_river_output_status(info.output)
status.dispatcher["view_tags"] = make_view_tags_handler(state, name)
status.dispatcher["focused_tags"] = make_focused_tags_handler(state, name)
info.status = status
if state.seat:
state.seat_status = state.river_status_mgr.get_river_seat_status(state.seat)
print("✅ Bound seat status")
# Initial data
display.roundtrip()
print("🟢 Listening for tag changes. Press Ctrl+C to exit.")
while True:
display.roundtrip()
if __name__ == "__main__":
main()

550
bar/utils/icons.py Normal file
View File

@ -0,0 +1,550 @@
common_text_icons = {
"playing": "",
"paused": "",
"power": "",
"cpu": "",
"memory": "",
"storage": "󰋊",
"updates": "󱧘",
"thermometer": "",
}
distro_text_icons = {
"deepin": "",
"fedora": "",
"arch": "",
"nixos": "",
"debian": "",
"opensuse-tumbleweed": "",
"ubuntu": "",
"endeavouros": "",
"manjaro": "",
"popos": "",
"garuda": "",
"zorin": "",
"mxlinux": "",
"arcolinux": "",
"gentoo": "",
"artix": "",
"centos": "",
"hyperbola": "",
"kubuntu": "",
"mandriva": "",
"xerolinux": "",
"parabola": "",
"void": "",
"linuxmint": "",
"archlabs": "",
"devuan": "",
"freebsd": "",
"openbsd": "",
"slackware": "",
}
# sourced from wttr.in
weather_text_icons = {
"113": {"description": "Sunny", "icon": "󰖙"},
"116": {"description": "PartlyCloudy", "icon": "󰖕"},
"119": {"description": "Cloudy", "icon": "󰖐"},
"122": {"description": "VeryCloudy", "icon": "󰖕"},
"143": {"description": "Fog", "icon": "󰖑"},
"176": {"description": "LightShowers", "icon": "󰼳"},
"179": {"description": "LightSleetShowers", "icon": "󰼵"},
"182": {"description": "LightSleet", "icon": "󰙿"},
"185": {"description": "LightSleet", "icon": "󰙿"},
"200": {"description": "ThunderyShowers", "icon": "󰙾"},
"227": {"description": "LightSnow", "icon": "󰼴"},
"230": {"description": "HeavySnow", "icon": "󰼶"},
"248": {"description": "Fog", "icon": "󰖑"},
"260": {"description": "Fog", "icon": "󰖑"},
"263": {"description": "LightShowers", "icon": "󰼳"},
"266": {"description": "LightRain", "icon": "󰼳"},
"281": {"description": "LightSleet", "icon": "󰙿"},
"284": {"description": "LightSleet", "icon": "󰙿"},
"293": {"description": "LightRain", "icon": "󰼳"},
"296": {"description": "LightRain", "icon": "󰼳"},
"299": {"description": "HeavyShowers", "icon": "󰖖"},
"302": {"description": "HeavyRain", "icon": "󰖖"},
"305": {"description": "HeavyShowers", "icon": "󰖖"},
"308": {"description": "HeavyRain", "icon": "󰖖"},
"311": {"description": "LightSleet", "icon": "󰙿"},
"314": {"description": "LightSleet", "icon": "󰙿"},
"317": {"description": "LightSleet", "icon": "󰙿"},
"320": {"description": "LightSnow", "icon": "󰼴"},
"323": {"description": "LightSnowShowers", "icon": "󰼵"},
"326": {"description": "LightSnowShowers", "icon": "󰼵"},
"329": {"description": "HeavySnow", "icon": "󰼶"},
"332": {"description": "HeavySnow", "icon": "󰼶"},
"335": {"description": "HeavySnowShowers", "icon": "󰼵"},
"338": {"description": "HeavySnow", "icon": "󰼶"},
"350": {"description": "LightSleet", "icon": "󰙿"},
"353": {"description": "LightShowers", "icon": "󰼳"},
"356": {"description": "HeavyShowers", "icon": "󰖖"},
"359": {"description": "HeavyRain", "icon": "󰖖"},
"362": {"description": "LightSleetShowers", "icon": "󰼵"},
"365": {"description": "LightSleetShowers", "icon": "󰼵"},
"368": {"description": "LightSnowShowers", "icon": "󰼵"},
"371": {"description": "HeavySnowShowers", "icon": "󰼵"},
"374": {"description": "LightSleetShowers", "icon": "󰼵"},
"377": {"description": "LightSleet", "icon": "󰙿"},
"386": {"description": "ThunderyShowers", "icon": "󰙾"},
"389": {"description": "ThunderyHeavyRain", "icon": "󰙾"},
"392": {"description": "ThunderySnowShowers", "icon": "󰼶"},
"395": {"description": "HeavySnowShowers", "icon": "󰼵"},
}
weather_text_icons_v2 = {
"113": {
"description": "Sunny",
"icon": "󰖙",
"image": "clear-day",
"icon-night": "󰖙",
"image-night": "clear-night",
},
"116": {
"description": "PartlyCloudy",
"icon": "󰖕",
"image": "cloudy",
"icon-night": "󰖕",
"image-night": "cloudy",
},
"119": {
"description": "Cloudy",
"icon": "󰖐",
"image": "cloudy",
"icon-night": "󰖐",
"image-night": "cloudy",
},
"122": {
"description": "VeryCloudy",
"icon": "󰖕",
"image": "cloudy",
"icon-night": "󰖕",
"image-night": "cloudy",
},
"143": {
"description": "Fog",
"icon": "󰖑",
"image": "fog",
"icon-night": "󰖑",
"image-night": "fog",
},
"176": {
"description": "LightShowers",
"icon": "󰼳",
"image": "rain",
"icon-night": "󰼳",
"image-night": "rain",
},
"179": {
"description": "LightSleetShowers",
"icon": "󰼵",
"image": "sleet",
"icon-night": "󰼵",
"image-night": "sleet",
},
"182": {
"description": "LightSleet",
"icon": "󰙿",
"image": "sleet",
"icon-night": "󰙿",
"image-night": "sleet",
},
"185": {
"description": "LightSleet",
"icon": "󰙿",
"image": "sleet",
"icon-night": "󰙿",
"image-night": "sleet",
},
"200": {
"description": "ThunderyShowers",
"icon": "󰙾",
"image": "thunderstorms",
"icon-night": "󰙾",
"image-night": "thunderstorms",
},
"227": {
"description": "LightSnow",
"icon": "󰼴",
"image": "snow",
"icon-night": "󰼴",
"image-night": "snow",
},
"230": {
"description": "HeavySnow",
"icon": "󰼶",
"image": "snow",
"icon-night": "󰼶",
"image-night": "snow",
},
"248": {
"description": "Fog",
"icon": "󰖑",
"image": "fog",
"icon-night": "󰖑",
"image-night": "fog",
},
"260": {
"description": "Fog",
"icon": "󰖑",
"image": "fog",
"icon-night": "󰖑",
"image-night": "fog",
},
"263": {
"description": "LightShowers",
"icon": "󰼳",
"image": "rain",
"icon-night": "󰼳",
"image-night": "rain",
},
"266": {
"description": "LightRain",
"icon": "󰼳",
"image": "rain",
"icon-night": "󰼳",
"image-night": "rain",
},
"281": {
"description": "LightSleet",
"icon": "󰙿",
"image": "sleet",
"icon-night": "󰙿",
"image-night": "sleet",
},
"284": {
"description": "LightSleet",
"icon": "󰙿",
"image": "sleet",
"icon-night": "󰙿",
"image-night": "sleet",
},
"293": {
"description": "LightRain",
"icon": "󰼳",
"image": "rain",
"icon-night": "󰼳",
"image-night": "rain",
},
"296": {
"description": "LightRain",
"icon": "󰼳",
"image": "rain",
"icon-night": "󰼳",
"image-night": "rain",
},
"299": {
"description": "HeavyShowers",
"icon": "󰖖",
"image": "rain",
"icon-night": "󰖖",
"image-night": "rain",
},
"302": {
"description": "HeavyRain",
"icon": "󰖖",
"image": "rain",
"icon-night": "󰖖",
"image-night": "rain",
},
"305": {
"description": "HeavyShowers",
"icon": "󰖖",
"image": "rain",
"icon-night": "󰖖",
"image-night": "rain",
},
"308": {
"description": "HeavyRain",
"icon": "󰖖",
"image": "rain",
"icon-night": "󰖖",
"image-night": "rain",
},
"311": {
"description": "LightSleet",
"icon": "󰙿",
"image": "sleet",
"icon-night": "󰙿",
"image-night": "sleet",
},
"314": {
"description": "LightSleet",
"icon": "󰙿",
"image": "sleet",
"icon-night": "󰙿",
"image-night": "sleet",
},
"317": {
"description": "LightSleet",
"icon": "󰙿",
"image": "sleet",
"icon-night": "󰙿",
"image-night": "sleet",
},
"320": {
"description": "LightSnow",
"icon": "󰼴",
"image": "snow",
"icon-night": "󰼴",
"image-night": "snow",
},
"323": {
"description": "LightSnowShowers",
"icon": "󰼵",
"image": "snow",
"icon-night": "󰼵",
"image-night": "snow",
},
"326": {
"description": "LightSnowShowers",
"icon": "󰼵",
"image": "snow",
"icon-night": "󰼵",
"image-night": "snow",
},
"329": {
"description": "HeavySnow",
"icon": "󰼶",
"image": "snow",
"icon-night": "󰼶",
"image-night": "snow",
},
"332": {
"description": "HeavySnow",
"icon": "󰼶",
"image": "snow",
"icon-night": "󰼶",
"image-night": "snow",
},
"335": {
"description": "HeavySnowShowers",
"icon": "󰼵",
"image": "snow",
"icon-night": "󰼵",
"image-night": "snow",
},
"338": {
"description": "HeavySnow",
"icon": "󰼶",
"image": "snow",
"icon-night": "󰼶",
"image-night": "snow",
},
"350": {
"description": "LightSleet",
"icon": "󰙿",
"image": "sleet",
"icon-night": "󰙿",
"image-night": "sleet",
},
"353": {
"description": "LightShowers",
"icon": "󰼳",
"image": "rain",
"icon-night": "󰼳",
"image-night": "rain",
},
"356": {
"description": "HeavyShowers",
"icon": "󰖖",
"image": "rain",
"icon-night": "󰖖",
"image-night": "rain",
},
"359": {
"description": "HeavyRain",
"icon": "󰖖",
"image": "rain",
"icon-night": "󰖖",
"image-night": "rain",
},
"362": {
"description": "LightSleetShowers",
"icon": "󰼵",
"image": "sleet",
"icon-night": "󰼵",
"image-night": "sleet",
},
"365": {
"description": "HeavySleetShowers",
"icon": "󰼵",
"image": "sleet",
"icon-night": "󰼵",
"image-night": "sleet",
},
"368": {
"description": "LightSleet",
"icon": "󰙿",
"image": "sleet",
"icon-night": "󰙿",
"image-night": "sleet",
},
"371": {
"description": "HeavySleet",
"icon": "󰙿",
"image": "sleet",
"icon-night": "󰙿",
"image-night": "sleet",
},
"374": {
"description": "HeavySnowShowers",
"icon": "󰼶",
"image": "snow",
"icon-night": "󰼶",
"image-night": "snow",
},
"377": {
"description": "LightSleet",
"icon": "󰙿",
"image": "sleet",
"icon-night": "󰙿",
"image-night": "sleet",
},
}
volume_text_icons = {
"overamplified": "󰕾",
"high": "󰕾",
"medium": "󰖀",
"low": "󰕿",
"muted": "󰝟",
}
volume_text_icons = {
"overamplified": "󰕾",
"high": "󰕾",
"medium": "󰖀",
"low": "󰕿",
"muted": "󰝟",
}
brightness_text_icons = {
"off": "", # lowest brightness
"low": "",
"medium": "",
"high": "", # highest brightness
}
icons = {
"missing": "image-missing-symbolic",
"nix": {
"nix": "nix-snowflake-symbolic",
},
"app": {
"terminal": "terminal-symbolic",
},
"fallback": {
"executable": "application-x-executable",
"notification": "dialog-information-symbolic",
"video": "video-x-generic-symbolic",
"audio": "audio-x-generic-symbolic",
},
"ui": {
"close": "window-close-symbolic",
"colorpicker": "color-select-symbolic",
"info": "info-symbolic",
"link": "external-link-symbolic",
"lock": "system-lock-screen-symbolic",
"menu": "open-menu-symbolic",
"refresh": "view-refresh-symbolic",
"search": "system-search-symbolic",
"settings": "emblem-system-symbolic",
"themes": "preferences-desktop-theme-symbolic",
"tick": "object-select-symbolic",
"time": "hourglass-symbolic",
"toolbars": "toolbars-symbolic",
"warning": "dialog-warning-symbolic",
"avatar": "avatar-default-symbolic",
"arrow": {
"right": "pan-end-symbolic",
"left": "pan-start-symbolic",
"down": "pan-down-symbolic",
"up": "pan-up-symbolic",
},
},
"audio": {
"mic": {
"muted": "microphone-disabled-symbolic",
"low": "microphone-sensitivity-low-symbolic",
"medium": "microphone-sensitivity-medium-symbolic",
"high": "microphone-sensitivity-high-symbolic",
},
"volume": {
"muted": "audio-volume-muted-symbolic",
"low": "audio-volume-low-symbolic",
"medium": "audio-volume-medium-symbolic",
"high": "audio-volume-high-symbolic",
"overamplified": "audio-volume-overamplified-symbolic",
},
"type": {
"headset": "audio-headphones-symbolic",
"speaker": "audio-speakers-symbolic",
"card": "audio-card-symbolic",
},
"mixer": "mixer-symbolic",
},
"powerprofile": {
"balanced": "power-profile-balanced-symbolic",
"power-saver": "power-profile-power-saver-symbolic",
"performance": "power-profile-performance-symbolic",
},
"battery": {
"charging": "battery-flash-symbolic",
"warning": "battery-empty-symbolic",
},
"bluetooth": {
"enabled": "bluetooth-active-symbolic",
"disabled": "bluetooth-disabled-symbolic",
},
"brightness": {
"indicator": "display-brightness-symbolic",
"keyboard": "keyboard-brightness-symbolic",
"screen": "display-brightness-symbolic",
},
"powermenu": {
"sleep": "weather-clear-night-symbolic",
"reboot": "system-reboot-symbolic",
"logout": "system-log-out-symbolic",
"shutdown": "system-shutdown-symbolic",
},
"recorder": {
"recording": "media-record-symbolic",
"stopped": "media-record-symbolic",
},
"notifications": {
"noisy": "org.gnome.Settings-notifications-symbolic",
"silent": "notifications-disabled-symbolic",
"message": "chat-bubbles-symbolic",
},
"trash": {
"full": "user-trash-full-symbolic",
"empty": "user-trash-symbolic",
},
"mpris": {
"shuffle": {
"enabled": "media-playlist-shuffle-symbolic",
"disabled": "media-playlist-consecutive-symbolic",
},
"loop": {
"none": "media-playlist-repeat-symbolic",
"track": "media-playlist-repeat-song-symbolic",
"playlist": "media-playlist-repeat-symbolic",
},
"playing": "media-playback-pause-symbolic",
"paused": "media-playback-start-symbolic",
"stopped": "media-playback-start-symbolic",
"prev": "media-skip-backward-symbolic",
"next": "media-skip-forward-symbolic",
},
"system": {
"cpu": "org.gnome.SystemMonitor-symbolic",
"ram": "drive-harddisk-solidstate-symbolic",
"temp": "temperature-symbolic",
},
"color": {
"dark": "dark-mode-symbolic",
"light": "light-mode-symbolic",
},
}