Files
dotfiles/waybar/config.jsonc
2025-08-06 01:59:57 +02:00

229 lines
6.9 KiB
JSON

{
// -------------------------------------------------------------------------
// Global configuration
// -------------------------------------------------------------------------
"layer": "bottom",
"position": "top",
"margin-left": 0,
"margin-bottom": 0,
"margin-right": 0,
"spacing": 2, // Gaps between modules (px)
"modules-left": ["custom/rofi", "group/workspaceactions", "hyprland/window", "custom/mediaplayer"],
"modules-center": ["clock"],
"modules-right": ["group/monitors", "tray", "custom/caffeine", "custom/power"],
// -------------------------------------------------------------------------
// Modules
// -------------------------------------------------------------------------
// Buttons
"custom/power": {
"format": "󰐥",
"tooltip": false,
"on-click": "wlogout",
"min-length": 2,
"max-length": 2
},
"custom/rofi": {
"format": "󰣇",
"tooltip": false,
// "on-click-right": "fuzzel -l 0 -p '>> ' | xargs -r sh -c",
// "on-click": "fuzzel",
// "on-click-middle": "pkill -9 fuzzel",
"on-click": "eww open main --toggle",
"on-click-right": "pkill rofi || rofi -show drun",
"min-length": 2,
"max-length": 2
},
"custom/caffeine": {
"format": "{icon}",
"return-type": "json",
"interval": "once",
"exec": "$HOME/.config/waybar/modules/caffeine.sh",
"on-click": "$HOME/.config/waybar/modules/caffeine.sh toggle && sleep 0.2",
"exec-on-event": true,
"min-length": 2,
"max-length": 2,
"tooltip": false,
"format-icons": {
"active": "",
"inactive": ""
}
},
// Time and Date
"clock": {
"format": "󰥔 {:%H:%M |  %e %b}",
"tooltip-format": "<big>{:%Y %B}</big>\n<tt>{calendar}</tt>",
"today-format": "<b>{}</b>"
},
// System monitors
"group/monitors": {
"modules": ["network#speed", "custom/publicip", "temperature", "memory", "cpu", "battery", "backlight", "wireplumber"],
"orientation": "inherit"
},
"network#speed": {
"interval": 1,
"format": "{ifname}",
"format-wifi": " {bandwidthDownBytes}  {bandwidthUpBytes} ",
"format-ethernet": " {bandwidthDownBytes}  {bandwidthUpBytes} ",
"format-disconnected": "󰌙",
"tooltip-format": "{ipaddr}",
"format-linked": "󰈁 {ifname} (No IP)",
"tooltip-format-wifi": "{essid} {signalStrength}%",
"tooltip-format-ethernet": "{ifname} 󰌘",
"tooltip-format-disconnected": "󰌙 Disconnected",
"min-length": 20
},
"custom/publicip": {
"interval": 60,
"return-type": "json",
"format": " {text}",
"tooltip-format": "{alt}",
"max-length": 6,
"min-length": 6,
"exec": "$HOME/.config/waybar/modules/publicip.sh",
"on-click": "rm -f $HOME/.config/waybar/modules/publicip.cache && sleep 0.1"
},
"temperature": {
"interval": 5,
"thermal-zone": 6,
"hwmon-path": "/sys/class/hwmon/hwmon6/temp1_input",
"critical-threshold": 80,
// "format-critical": " {temperatureC}°C",
"format-critical": " {temperatureC}°C",
"format": "{icon} {temperatureC}°C",
"format-icons": ["", "", ""],
"max-length": 6,
"min-length": 6
},
"memory": {
"interval": 11,
// "format": " {used:0.2f} / {total:0.0f} GB",
"format": "󰍛 {percentage}%",
"on-click": "killall btop || ghostty -e btop",
"max-length": 6,
"min-length": 6
},
"cpu": {
"interval": 3,
//"format": " {}%", // Icon: microchip
"format": "󰘚 {usage}%",
"max-length": 6,
"min-length": 6,
"on-click": "killall btop || ghostty -e btop"
},
"battery": {
"interval": 30,
"states": {
"good": 95,
"warning": 30,
"critical": 15
},
"format": "{icon} {capacity}%",
"format-charging": " {capacity}%",
"format-plugged": " {capacity}%",
"format-icons": ["", "", "", "", ""],
"max-length": 6,
"min-length": 6
},
"backlight": {
"device": "$DISPLAY_DEVICE",
"format": "{icon} {percent}%",
"format-alt": "{percent}% {icon}",
"format-alt-click": "click-right",
//"format-icons": ["", ""],
"format-icons": [""],
"on-scroll-down": "brightnessctl -d $DISPLAY_DEVICE set 5%-",
"on-scroll-up": "brightnessctl -d $DISPLAY_DEVICE set +5%",
"max-length": 6,
"min-length": 6
},
"wireplumber": {
"on-click": "pavucontrol",
//on-click: "${wpctl} set-mute @DEFAULT_AUDIO_SINK@ toggle";
"on-scroll-down": "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04-",
"on-scroll-up": "wpctl set-volume -l 1.0 @DEFAULT_AUDIO_SINK@ 0.04+",
"format": "{icon} {volume}%",
"format-muted": "",
"format-source": "",
"format-source-muted": "",
//"format-muted": "<span foreground='#fab387'> </span>",
//"format-icons": [ "<span foreground='#fab387'></span>" ]
"format-icons": {
"headphone": "",
"phone": "",
"portable": "",
"car": "",
"default": ["", "", "", "", "", ""]
},
"max-length": 6,
"min-length": 6
},
// Hyprland
"group/workspaceactions": {
"modules": ["hyprland/workspaces#special", "hyprland/workspaces", "custom/workspacenew"],
"orientation": "inherit"
},
"hyprland/workspaces": {
"all-outputs": true,
"format": "{id}",
"on-scroll-up": "hyprctl dispatch workspace e+1 1>/dev/null",
"on-scroll-down": "hyprctl dispatch workspace e-1 1>/dev/null",
"sort-by-number": true,
"active-only": false //,
// "window-rewrite-default": "",
// "window-rewrite": {
// "class<kitty>": "",
// "class<code>": "󰨞",
// "class<zen-browser>": "󰈹",
// "class<firefox>": "󰈹",
// "class<ghostty>": "",
// "class<spotify>": "󰓇"
// }
},
"hyprland/workspaces#special": {
"persistent-workspaces": {
"special:s": []
},
"persistent-only": true,
"show-special": true,
"special-visible-only": false,
"format": "S",
"window-rewrite-default": "" //,
// "window-rewrite": {
// "class<kitty>": "",
// "class<code>": "󰨞",
// "class<zen-browser>": "󰈹",
// "class<firefox>": "󰈹",
// "class<ghostty>": "",
// "class<spotify>": "󰓇"
// }
},
"custom/workspacenew": {
"format": "+",
"tooltip": false,
"on-click": "~/.scripts/workspace-new.sh"
},
"hyprland/window": {
"format": "",
"max-length": 100,
"separate-outputs": true,
"icon": true,
"on-click-middle": "hyprctl dispatch killactive",
"icon-size": 14
},
"custom/mediaplayer": {
"format": "{text}",
"return-type": "json",
"max-length": 100,
"escape": true,
"exec": "$HOME/.config/waybar/modules/mediaplayer.py 2> /dev/null",
"on-click": "playerctl play-pause",
"on-click-right": "~/.scripts/lyrics-widgets.sh",
"on-scroll-up": "playerctl next",
"on-scroll-down": "playerctl previous"
},
"tray": {
"icon-size": 15,
"spacing": 5
}
}