{
    "__aboutme1": "Moonarch default waybar configuration for Niri.",
    "__aboutme2": "Deployed to /etc/xdg/waybar/ by moonarch-git package.",
    "layer": "top",
    "margin-top": 0,
    "spacing": 5,
    "fixed-center": true,
    "modules-left": [
        "group/sys",
        "niri/workspaces",
        "wlr/taskbar",
        "niri/window"
    ],
    "modules-center": [

    ],
    "modules-right": [
        "tray",
        "mpris",
        "bluetooth",
        "group/sound",
        "group/brightness",
        "group/bat",
        "group/indicators"
    ],
    "group/indicators": {
        "orientation": "inherit",
        "modules": [
            "custom/cpugov",
            "gamemode",
            "custom/updates",
            "idle_inhibitor",
            "custom/notification",
            "privacy"
        ]
    },
    "group/stats": {
        "orientation": "inherit",
        "modules": [
            "custom/cpugov",
            "cpu",
            "memory",
            "custom/gpu-usage"
        ],
        "drawer": {
            "transition-duration": 500,
            "transition-left-to-right": false
        }
    },
    "group/sound": {
        "orientation": "inherit",
        "modules": [
            "pulseaudio",
            "pulseaudio/slider"
        ],
        "drawer": {
            "transition-duration": 500,
            "transition-left-to-right": false
        }
    },
    "group/brightness": {
        "orientation": "inherit",
        "modules": [
            "custom/nightlight",
            "backlight",
            "backlight/slider"
        ],
        "drawer": {
            "transition-duration": 500,
            "transition-left-to-right": false
        }
    },
    "group/bat": {
        "orientation": "inherit",
        "modules": [
            "battery",
            "custom/batsaver"
        ]
    },
    "group/sys": {
        "orientation": "inherit",
        "modules": [
            "custom/power",
            "clock"
        ]
    },
    "tray": {
        "icon-size": 15,
        "spacing": 10
    },
    "clock": {
        "tooltip-format": "<big>{:%Y %B}</big>\n<tt><small>{calendar}</small></tt>",
        "format-alt": "<b>{:%d.%m.%Y %H:%M}</b>",
        "format": "<b>{:%d.%m. %H:%M}</b>",
        "timezone": "Europe/Berlin",
        "calendar": {
            "mode": "month",
            "mode-mon-col": 3,
            "weeks-pos": "right",
            "on-scroll": 1,
            "on-click-right": "mode",
            "format": {
                "months": "<span color='#b4befe'><b>{}</b></span>",
                "days": "<span color='#bac2de'><b>{}</b></span>",
                "weeks": "<span color='#f5e0dc'><b>W{}</b></span>",
                "weekdays": "<span color='#f9e2af'><b>{}</b></span>",
                "today": "<span color='#f38ba8'><b><u>{}</u></b></span>"
            }
        },
        "actions": {
            "on-click-right": "mode",
            "on-click-forward": "tz_up",
            "on-click-backward": "tz_down",
            "on-scroll-up": "shift_up",
            "on-scroll-down": "shift_down",
            "on-click-middle": "alarm-clock-applet"
        }
        // "on-click": "evolution"
    },
    "user": {
        "format": "{user}",
        "interval": 240,
        "icon": false,
        "height": 16,
        "width": 16,
        "open-on-click": false
    },
    "pulseaudio": {
        "format": "{format_source} {icon} <small>{volume}%</small>",
        "format-bluetooth": "{icon} {volume}% {format_source}",
        "format-bluetooth-muted": "{icon} {format_source}",
        "format-muted": "{icon} <b>0</b>%",
        "format-source": "",
        "format-source-muted": "",
        "format-icons": {
            "headphone": "",
            "hands-free": "",
            "headset": "",
            "phone": "",
            "portable": "",
            "car": "",
            "default": [
                "",
                "",
                "󰕾"
            ]
        },
        "on-click": "moonarch-sink-switcher &",
        "on-click-right": "pavucontrol",
        "scroll-step": 5.0,
        "max-volume": 99
    },
    "pulseaudio/slider": {
        "min": 0,
        "max": 99,
        "orientation": "horizontal"
    },
    "mpris": {
        "format": "⏸ {title:.10}",
        "format-paused": "▶ {player}",
        "player-icons": {
            "default": "⏸",
            "mpv": "🎵",
            "spotify": "",
            "firefox": "󰈹",
            "mercury": "󰈹"
        },
        "status-icons": {
            "paused": "⏸"
        }
    },
    "custom/power": {
        "format": "󰣇",
        "on-click": "moonset",
        "tooltip-format": "Session Menu"
    },
    "gamemode": {
        "format": "{glyph}<small>{count}</small>",
        "format-alt": "{glyph}",
        "glyph": "󰺵",
        "hide-not-running": true,
        "use-icon": true,
        "icon-name": "input-gaming-symbolic",
        "icon-spacing": 1,
        "icon-size": 12,
        "tooltip": true,
        "tooltip-format": "Games running: {count}"
    },
    "wlr/taskbar": {
        "markup": true,
        "format": "{icon}",
        "icon-size": 16,
        "tooltip-format": "{title:.100}",
        // "sort-by-app-id": true,
        "on-click": "activate",
        "on-click-middle": "close",
        "on-right-middle": "minimize-raise",
        "ignore-list": ["title<>"],
        "app_ids-mapping": {
            "firefoxdeveloperedition": "firefox-developer-edition"
        },
        "rewrite": {
            "Mozilla Firefox": "Firefox",
            "firefox": "Firefox",
            "VSCodium": "Code",
            "codium": "Code",
            "Alacritty": "Terminal",
        },
        "squash-list": [
            "firefox"
        ]
    },
    "custom/updates": {
        "format": "{icon}",
        "return-type": "json",
        "format-icons": {
            "has-updates": "󱍷",
            "updated": "󰂪"
        },
        "exec": "moonarch-waybar-updates",
        "interval": 60,
        "on-click": "foot moonarch-update"
    },
    "custom/notification": {
        "tooltip": true,
        "format": "{icon}",
        "format-icons": {
            "notification": "󱅫",
            "none": "󰂜",
            "dnd-notification": "󰂠",
            "dnd-none": "󰪓",
            "inhibited-notification": "󰂛",
            "inhibited-none": "󰪑",
            "dnd-inhibited-notification": "󰂛",
            "dnd-inhibited-none": "󰪑"
        },
        "return-type": "json",
        "exec-if": "which swaync-client",
        "exec": "swaync-client -swb",
        "on-click": "swaync-client -t -sw",
        "on-click-right": "swaync-client -d -sw",
        "escape": true
    },
    "cava": {
        //        "cava_config": "$XDG_CONFIG_HOME/cava/cava.conf",
        "framerate": 30,
        "autosens": 1,
        //"sensitivity": 50,
        "bars": 2,
        "lower_cutoff_freq": 50,
        "higher_cutoff_freq": 10000,
        "method": "pipewire",
        "source": "auto",
        "stereo": true,
        "reverse": false,
        "bar_delimiter": 0,
        "monstercat": true,
        "hide_on_silence": true,
        "waves": true,
        "noise_reduction": 0.77,
        "input_delay": 2,
        "sleep_timer": 5,
        "format-icons": [
            "▁",
            "▂",
            "▃",
            "▄",
            "▅",
            "▆",
            "▇",
            "█"
        ],
        "actions": {
            "on-click-right": "mode"
        }
    },
    "cpu": {
        "interval": 10,
        "format": "CPU {icon}",
        "max-length": 10,
        "format-icons": [
            "<span color='#69ff94' size='8pt' rise='1.5pt'>▁</span>",
            "<span color='#2aa9ff' size='8pt' rise='1.5pt'>▂</span>",
            "<span color='#f8f8f2' size='8pt' rise='1.5pt'>▃</span>",
            "<span color='#f8f8f2' size='8pt' rise='1.5pt'>▄</span>",
            "<span color='#ffffa5' size='8pt' rise='1.5pt'>▅</span>",
            "<span color='#ffffa5' size='8pt' rise='1.5pt'>▆</span>",
            "<span color='#ff9977' size='8pt' rise='1.5pt'>▇</span>",
            "<span color='#dd532e' size='8pt' rise='1.5pt'>█</span>"
        ]
    },
    "memory": {
        "interval": 30,
        "format": "MEM {icon}",
        "max-length": 10,
        "tooltip": true,
        "format-icons": [
            "<span color='#69ff94' size='8pt' rise='1.5pt'>▁</span>",
            "<span color='#2aa9ff' size='8pt' rise='1.5pt'>▂</span>",
            "<span color='#f8f8f2' size='8pt' rise='1.5pt'>▃</span>",
            "<span color='#f8f8f2' size='8pt' rise='1.5pt'>▄</span>",
            "<span color='#ffffa5' size='8pt' rise='1.5pt'>▅</span>",
            "<span color='#ffffa5' size='8pt' rise='1.5pt'>▆</span>",
            "<span color='#ff9977' size='8pt' rise='1.5pt'>▇</span>",
            "<span color='#dd532e' size='8pt' rise='1.5pt'>█</span>"
        ]
    },
    "custom/nightlight": {
        "exec": "moonarch-waybar-nightlight",
        "return-type": "json",
        "interval": "once",
        "signal": 11,
        "on-click": "moonarch-nightlight",
        "format": "{}"
    },
    "custom/cpugov": {
        "exec": "moonarch-waybar-cpugov",
        "return-type": "json",
        "interval": 60,
        "signal": 10,
        "on-click": "moonarch-cpugov"
    },
    "custom/gpu-usage": {
        "exec": "moonarch-waybar-gpustat",
        "return-type": "json",
        "restart-interval": 10
    },
    "battery": {
        "bat": "BAT0",
        "interval": 60,
        "states": {
            "warning": 30,
            "critical": 15
        },
        "format": "{capacity}% {icon}",
        "format-icons": [
            "󰂎",
            "󰁺",
            "󰁻",
            "󰁼",
            "󰁽",
            "󰁾",
            "󰁿",
            "󰂀",
            "󰂁",
            "󰂂",
            "󰁹"
        ],
        "max-length": 25,
        "on-click": "moonarch-batsaver-toggle"
    },
    "custom/batsaver": {
        "exec": "moonarch-waybar-batsaver",
        "return-type": "json",
        "interval": 30,
        "signal": 9
    },
    "bluetooth": {
        // "controller": "controller1", // specify the alias of the controller if there are more than 1 on the system
        "format": "󰂯",
        "format-disabled": "󰂲", // an empty format will hide the module
        "format-connected": "<small>{num_connections}</small>",
        "tooltip-format": "{controller_alias}\t{controller_address}",
        "tooltip-format-connected": "{controller_alias}\t{controller_address}\n\n{device_enumerate}\t{device_battery_percentage}%",
        "tooltip-format-enumerate-connected": "{device_alias}\t{device_address}",
        "on-click": "blueberry"
    },
    "idle_inhibitor": {
        "format": "{icon}",
        "format-icons": {
            "activated": "󱎴",
            "deactivated": "󰷛"
        },
        "tooltip-format-activated": "󱎴  No Lockscreen on idle",
        "tooltip-format-deactivated": "󰷛  Lockscreen on idle"
    },
    "power-profiles-daemon": {
        "format": "{icon}",
        "tooltip-format": "Power profile: {profile}\nDriver: {driver}",
        "tooltip": true,
        "format-icons": {
            "default": "󰓅",
            "performance": "󰓅",
            "balanced": "󰾅",
            "power-saver": "󰌪"
        }
    },
    "privacy": {
        "icon-spacing": 4,
        "icon-size": 12,
        "transition-duration": 250,
        "modules": [
            {
                "type": "screenshare",
                "tooltip": true,
                "tooltip-icon-size": 12
            },
            {
                "type": "audio-out",
                "tooltip": true,
                "tooltip-icon-size": 12
            },
            {
                "type": "audio-in",
                "tooltip": true,
                "tooltip-icon-size": 12
            }
        ]
    },
    "niri/workspaces": {
        "format": "{icon}",
        "format-icons": {
            // Named workspaces
            // (you need to configure them in niri)
            "browser": "",
            "discord": "󰙯",
            "chat": "<b></b>",

            // Icons by state
            "active": "",
            "default": ""
        }
    },
    "niri/window": {
        "format": "{}",
        "rewrite": {
            "(.*) - Mozilla Firefox": "🌎 $1",
            "(.*) - zsh": "> [$1]"
        }
    },
    "backlight": {
        "device": "intel_backlight",
        "format": "{percent}% {icon}",
        "format-icons": ["󰃟", "󰃠"]
    },
    "backlight/slider": {
        "min": 10,
        "max": 100,
        "orientation": "horizontal",
        "device": "intel_backlight"
    },
    "cffi/niri-workspaces-enhanced": {
      // Make sure to set the path to the install location on your system
      // "module_path": "~/.config/waybar/niri-workspaces-enhanced.so",
      "module_path": "/usr/lib/waybar/libwaybar_niri_workspaces_enhanced.so",
      // Format string for workspace labels. Available placeholders:
      //   {index}          - Workspace index number
      //   {name}           - Workspace name (might be empty)
      //   {index-and-name} - Index followed by name if present (e.g., "1 Work")
      //   {value}          - Name if present, otherwise index
      //   {separator}      - ": " when icons are present, "" when empty
      //   {window-icons}   - Formatted icons for windows in workspace
      "format": "{window-icons}",
      // Apply separate styles to icons depending on current state
      "window-icon-format": {
        "default": "{icon}",
        "urgent": "<span foreground='red'>{icon}</span>",
        "focused": "<span foreground='blue'>{icon}</span>",
      },
      // A mapping from window app_id to icon. Note that this module does
      // case-insensitive matching of app_ids, so capitalization doesn't matter.
      "window-icons": {
        "com.mitchellh.ghostty": "",
        "darktable": "",
        "foot": "",
        "google-chrome": "",
        "spotify": "",
        "steam": "",
      },
      // If no icon is found for a window, the default is used instead
      "window-icon-default": "*",
    },
    "height": 40,
    "cffi/niri-windows": {
    // path where you placed the .so file
    "module_path": "/usr/lib/waybar-niri-windows.so",
    // configure the module's behavior
    "options": {
      // set the module mode
      // "graphical" (default): draw a minimap of windows in the current workspace
      // "text": draws symbols and a focus indicator for each column (mirrors v1 behavior)
      "mode": "graphical",

      // ======= graphical mode options =======
      //  when to show floating windows
      //   - "always": always show floating window view, even if there are no floating windows
      //   - "auto" (default): show floating window view if there are floating windows on the current workspace
      //   - "never": never show floating windows
      "show-floating": "auto",
      // pick where the floating windows be shown relative to tiled windows
      //   - "left": show floating windows on the left
      //   - "right" (default): show floating windows on the right
      "floating-position": "right",
      // set minimum size of windows, in pixels (default: 1, minimum: 1)
      // if this value is too large to fit all windows (e.g. in a column with many windows),
      // it will be reduced
      "minimum-size": 1,
      // set spacing between windows/columns, in pixels (default: 1, minimum: 0)
      // if this value is too large, it will be reduced
      "spacing": 1,
      // set minimum size of windows, in pixels, to draw icons for (default: 0, minimum: 0)
      // if unset or 0, icons will only be drawn for tiled windows that are the only one in their column
      // if 1+, icons will be drawn for all windows where w >= icon-minimum-size and h >= icon-minimum-size
      // icons must be set in the "rules" section below for this to have any effect
      "icon-minimum-size": 0,
      // account for borders when calculating window sizes; see note below (default: 0, minimum: 0)
      "column-borders": 0, // border on .column
      "floating-borders": 0, // border on .floating
      // trigger actions on tile click (see https://yalter.github.io/niri/niri_ipc/enum.Action.html for available actions)
      // only actions that take a single window ID are supported
      // set to an empty string to disable
      "on-tile-click": "FocusWindow", // (default: FocusWindow)
      "on-tile-middle-click": "CloseWindow", // (default: CloseWindow)
      "on-tile-right-click": "", // (default: none)
      // add CSS classes/icons to windows based on their App ID/Title (see `niri msg windows`)
      // Go regular expression syntax is supported for app-id and title (see https://pkg.go.dev/regexp/syntax)
      // rules are checked in the order they are defined - first match wins and checking stops
      // set "continue" to true to also check and apply subsequent rules even if this rule matches
      // if multiple rules with icons are applied, the first one will be used
      // *icons are not drawn for floating windows by default*; set "icon-minimum-size" to enable (see above)
      "rules": [
        // .alacritty will be added to all windows with the App ID "Alacritty"
        //  will be drawn in windows that match
        { "app-id": "Alacritty", "class": "alacritty", "icon": "" },
        // .firefox will be added to all windows with the App ID "firefox"
        // subsequent rules are also checked and applied for firefox windows
        { "app-id": "firefox", "class": "firefox", "continue": true },
        // .youtube-music will be added to all windows that have "YouTube Music" at the end of their title
        //  will be drawn in windows that match
        { "title": "YouTube Music$", "class": "youtube-music", "icon": "" }
      ],

      // ======= text mode options =======
      // customize the symbols used to draw the columns/windows
      "symbols": {
        "unfocused": "⋅",
        "focused": "⊙",
        "unfocused-floating": "∗",
        "focused-floating": "⊛",
        // text to display when there are no windows on the current workspace
        // if this is an empty string (default), the module will be hidden when there are no windows
        "empty": ""
      }
    },
    "actions": {
      // use niri IPC action names to trigger them (see https://yalter.github.io/niri/niri_ipc/enum.Action.html for available actions)
      // any action that has no fields is supported
      "on-scroll-up": "FocusColumnLeft",
      "on-scroll-down": "FocusColumnRight"
      // in graphical mode, don't configure click actions here—they're handled by the module above
    }
  }
}