nevaforget ac2b210a1f
All checks were successful
Update PKGBUILD version / update-pkgver (push) Successful in 3s
fix: audit remediation — security, quality and performance fixes
- CI Dockerfile: verify act_runner SHA256, restrict sudoers to safe
  pacman arguments (S-C1, S-C2)
- cliphist: split into cliphist-text + cliphist-image services with
  Type=simple for proper PID tracking and restart (Q-C3)
- batsaver-toggle: validate sysfs input as numeric, check state file
  write (Q-C2, S-W2)
- udev battery rule: add ACTION=="add" filter to avoid firing on
  every battery event (Q-W3)
- cpugov: replace eval with direct expansion, switch waybar module
  to signal-based updates, send SIGRTMIN+10 after toggle (Q-W1,
  S-W1, P-W4)
- Remove docker group auto-assignment from install scripts (S-I1)
2026-04-08 11:45:56 +02:00

533 lines
18 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"__aboutme1": "Moonarch default waybar configuration for Niri.",
"__aboutme2": "User overrides go in ~/.config/waybar/config",
"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",
"backlight",
"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": true
}
},
"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-if": "which waybar-module-pacman-updates",
"exec": "waybar-module-pacman-updates",
"on-click": "alacritty paru"
},
"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/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
}
}
}