From b8b10cd6e8cf54cfb5da7000a24a94891aaff50e Mon Sep 17 00:00:00 2001 From: Carlos Sousa Date: Mon, 10 Mar 2025 13:23:42 +0100 Subject: [PATCH] add waybar power profiles, clean up --- config/waybar/config.jsonc | 174 +++++++++---------- config/waybar/style.css | 336 ++++++++++++------------------------- 2 files changed, 180 insertions(+), 330 deletions(-) diff --git a/config/waybar/config.jsonc b/config/waybar/config.jsonc index 5fcac07..24c282d 100644 --- a/config/waybar/config.jsonc +++ b/config/waybar/config.jsonc @@ -1,62 +1,32 @@ { // "layer": "top", // Waybar at top layer // "position": "bottom", // Waybar position (top|bottom|left|right) - "height": 30, // Waybar height (to be removed for auto height) + "height": 24, // Waybar height (to be removed for auto height) // "width": 1280, // Waybar width - "spacing": 4, // Gaps between modules (4px) - - //"mode": "invisible", - + //"spacing": 4, // Gaps between modules (4px) // Choose the order of the modules - "modules-left": [ - "hyprland/workspaces", - "hyprland/submap", - "sway/scratchpad", - "custom/media" - ], - "modules-center": [ - "hyprland/window" - ], + "modules-left": ["hyprland/window"], + "modules-center": ["hyprland/workspaces", "hyprland/mode", "hyprland/scratchpad", "custom/media"], + //"modules-right": ["mpd", "idle_inhibitor", "pulseaudio", "network", "cpu", "memory", "temperature", "backlight", "keyboard-state", "battery", "battery#bat2", "clock", "tray"], "modules-right": [ "mpd", "idle_inhibitor", - "pulseaudio", - "network", + "temperature", "power-profiles-daemon", "cpu", "memory", - "temperature", + "network", + "pulseaudio", "backlight", "keyboard-state", - // "hyprland/language", "battery", "battery#bat2", - "clock", "tray", + "clock", "custom/power" ], - - "hyprland/window": { - "separate-outputs": true - }, - - - "hyprland/workspaces" : { - "format": "{name}: {icon}", - "format-icons": { - "1": "", - "2": "", - "3": "", - "4": "", - "5": "", - "urgent": "", - "focused": "", - "default": "" - } - }, - // Modules configuration - // "sway/workspaces": { + // "hyprland/workspaces": { // "disable-scroll": true, // "all-outputs": true, // "warp-on-scroll": false, @@ -81,10 +51,10 @@ "unlocked": "" } }, - "sway/mode": { + "hyprland/mode": { "format": "{}" }, - "sway/scratchpad": { + "hyprland/scratchpad": { "format": "{icon} {count}", "show-empty": false, "format-icons": ["", ""], @@ -92,16 +62,17 @@ "tooltip-format": "{app}: {title}" }, "mpd": { - "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", - "format-disconnected": "Disconnected ", - "format-stopped": "{consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped ", +// "format": "{stateIcon} {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}{artist} - {album} - {title} ({elapsedTime:%M:%S}/{totalTime:%M:%S}) ⸨{songPosition}|{queueLength}⸩ {volume}% ", + "format": " {title} - {artist} {stateIcon} [{elapsedTime:%M:%S}/{totalTime:%M:%S}] {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}[{songPosition}/{queueLength}] [{volume}%]", + "format-disconnected": " Disconnected", + "format-stopped": " {consumeIcon}{randomIcon}{repeatIcon}{singleIcon}Stopped", "unknown-tag": "N/A", - "interval": 5, + "interval": 2, "consume-icons": { "on": " " }, "random-icons": { - "off": " ", +// "off": " ", "on": " " }, "repeat-icons": { @@ -115,7 +86,12 @@ "playing": "" }, "tooltip-format": "MPD (connected)", - "tooltip-format-disconnected": "MPD (disconnected)" + "tooltip-format-disconnected": "MPD (disconnected)", + "on-click": "mpc toggle", + "on-click-right": "foot -a ncmpcpp ncmpcpp", + "on-scroll-up": "mpc volume +2", + "on-scroll-down": "mpc volume -2" + }, "idle_inhibitor": { "format": "{icon}", @@ -126,92 +102,85 @@ }, "tray": { // "icon-size": 21, - "spacing": 10 + "s10pacing": 5 }, "clock": { - "timezone": "Europe/Berlin", + // "timezone": "America/New_York", "tooltip-format": "{:%Y %B}\n{calendar}", - "format-alt": "{:%Y-%m-%d}" + "format-alt": "{:%Y-%m-%d}", + //"format": "{:L%Y-%m-%d [%a] %H:%M}" + "format": "{:%H:%M}", + "spacing": 5 }, "cpu": { - "format": "{usage}% ", - "tooltip": false + "format": " {usage}%", + "spacing": 5 +// "tooltip": false }, "memory": { - "format": "{}% " + "format": " {}%" }, "temperature": { - // "thermal-zone": 2, - // "hwmon-path": "/sys/class/hwmon/hwmon2/temp1_input", + "thermal-zone": 2, + "hwmon-path": "/sys/class/hwmon/hwmon1/temp2_input", "critical-threshold": 80, - // "format-critical": "{temperatureC}°C {icon}", - "format": "{temperatureC}°C {icon}", + "format-critical": "{icon} {temperatureC}°C", + "format": "{icon} {temperatureC}°C", "format-icons": ["", "", ""] }, "backlight": { // "device": "acpi_video1", - "format": "{percent}% {icon}", + "format": "{icon} {percent}%", "format-icons": ["", "", "", "", "", "", "", "", ""] }, "battery": { "states": { - "good": 95, + // "good": 95, "warning": 30, "critical": 15 }, - "format": "{capacity}% {icon}", - "format-full": "{capacity}% {icon}", - "format-charging": "{capacity}% ", - "format-plugged": "{capacity}% ", - "format-alt": "{time} {icon}", - //"format-good": "", // An empty format will hide the module - //"format-full": "", + "format": "{icon} {capacity}%", + "format-charging": " {capacity}%", + "format-plugged": " {capacity}%", + "format-alt": "{icon} {time}", + // "format-good": "", // An empty format will hide the module + // "format-full": "", "format-icons": ["", "", "", "", ""] }, "battery#bat2": { "bat": "BAT2" }, - "power-profiles-daemon": { - "format": "{icon}", - "tooltip-format": "Power profile: {profile}\nDriver: {driver}", - "tooltip": true, - "format-icons": { - "default": "", - "performance": "", - "balanced": "", - "power-saver": "" - } - }, "network": { // "interface": "wlp2*", // (Optional) To force the use of this interface "format-wifi": "{essid} ({signalStrength}%) ", - "format-ethernet": "{ipaddr}/{cidr} ", - "tooltip-format": "{ifname} via {gwaddr} ", - "format-linked": "{ifname} (No IP) ", - "format-disconnected": "Disconnected ⚠", - "format-alt": "{ifname}: {ipaddr}/{cidr}" + "format-ethernet": " {ifname}", + "tooltip-format": " {ifname} via {gwaddr}", + "format-linked": " {ifname} (No IP)", + "format-disconnected": "Disconnected ⚠ {ifname}", + "format-alt": " {ifname}: {ipaddr}/{cidr}" }, "pulseaudio": { - // "scroll-step": 1, // %, can be a float - "format": "{volume}% {icon} {format_source}", - "format-bluetooth": "{volume}% {icon} {format_source}", - "format-bluetooth-muted": " {icon} {format_source}", - "format-muted": " {format_source}", - "format-source": "{volume}% ", + "scroll-step": 5, // %, can be a float + "format": "{icon} {volume}% {format_source}", + "format-bluetooth": " {icon} {volume}% {format_source}", + "format-bluetooth-muted": "  {icon} {format_source}", + "format-muted": " {format_source}", + "format-source": " {volume}%", "format-source-muted": "", "format-icons": { - "headphone": "", - "hands-free": "", - "headset": "", - "phone": "", - "portable": "", - "car": "", +// "headphone": "", +// "hands-free": "", +// "headset": "", +// "phone": "", +// "portable": "", +// "car": "", "default": ["", "", ""] }, - "on-click": "pavucontrol" + "on-click": "pavucontrol", + "on-click-right": "foot -a pw-top pw-top" }, "custom/media": { - "format": "{icon} {text}", + "format": "{icon} {}", "return-type": "json", "max-length": 40, "format-icons": { @@ -222,6 +191,17 @@ "exec": "$HOME/.config/waybar/mediaplayer.py 2> /dev/null" // Script in resources folder // "exec": "$HOME/.config/waybar/mediaplayer.py --player spotify 2> /dev/null" // Filter player based on name }, + "power-profiles-daemon": { + "format": "{icon} ", + "tooltip-format": "Power profile: {profile}\nDriver: {driver}", + "tooltip": true, + "format-icons": { + "default": "", + "performance": "", + "balanced": "", + "power-saver": "" + } + }, "custom/power": { "format" : "⏻ ", "tooltip": false, diff --git a/config/waybar/style.css b/config/waybar/style.css index 7e83028..bc47687 100644 --- a/config/waybar/style.css +++ b/config/waybar/style.css @@ -1,80 +1,83 @@ * { - /* `otf-font-awesome` is required to be installed for icons */ - font-family: FontAwesome, Roboto, Helvetica, Arial, sans-serif; - font-size: 13px; + /* `otf-font-awesome` is required to be installed for icons */ + font-family: "Noto Sans CJK KR Regular"; + /*font-family: "D2CodingLigature Nerd Mono";*/ + font-size: 13px; + min-height: 0; } window#waybar { - background-color: rgba(43, 48, 59, 0.5); - border-bottom: 3px solid rgba(100, 114, 125, 0.5); - color: #ffffff; - transition-property: background-color; - transition-duration: .5s; + background: transparent; + /* background-color: rgba(43, 48, 59, 0.5); */ + /* border-bottom: 3px solid rgba(100, 114, 125, 0.5); */ + color: #ffffff; + transition-property: background-color; + transition-duration: .5s; } window#waybar.hidden { - opacity: 0.2; + opacity: 0.2; } -/* -window#waybar.empty { - background-color: transparent; -} -window#waybar.solo { - background-color: #FFFFFF; -} -*/ - -window#waybar.termite { - background-color: #3F3F3F; +#waybar.empty #window { + background-color: transparent; } -window#waybar.chromium { - background-color: #000000; - border: none; +#workspaces { +} + +#window { + margin: 2; + padding-left: 8; + padding-right: 8; + background-color: rgba(0,0,0,0.3); + font-size:14px; + font-weight: bold; } button { - /* Use box-shadow instead of border so the text isn't offset */ - box-shadow: inset 0 -3px transparent; - /* Avoid rounded borders under each button name */ - border: none; - border-radius: 0; + /* Use box-shadow instead of border so the text isn't offset */ + box-shadow: inset 0 -3px transparent; + /* Avoid rounded borders under each button name */ + border: none; + border-radius: 0; } /* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */ button:hover { - background: inherit; - box-shadow: inset 0 -3px #ffffff; -} - -/* you can set a style on hover for any module like this */ -#pulseaudio:hover { - background-color: #a37800; + background: inherit; + border-top: 2px solid #c9545d; } #workspaces button { - padding: 0 5px; - background-color: transparent; - color: #ffffff; + padding: 0 4px; + /* background-color: rgba(0,0,0,0.3); */ } #workspaces button:hover { - background: rgba(0, 0, 0, 0.2); } #workspaces button.focused { - background-color: #64727D; - box-shadow: inset 0 -3px #ffffff; + /* box-shadow: inset 0 -2px #c9545d; */ + background-color: rgba(0,0,0,0.3); + color:#c9545d; + border-top: 2px solid #c9545d; +} + +#workspaces button.active { + /* box-shadow: inset 0 -2px #c9545d; */ + background-color: rgba(0,0,0,0.3); + color:#c9545d; + border-top: 2px solid #c9545d; } #workspaces button.urgent { - background-color: #eb4d4b; + background-color: #eb4d4b; } #mode { - background-color: #64727D; - box-shadow: inset 0 -3px #ffffff; + background-color: #64727D; + border-bottom: 3px solid #ffffff; } #clock, @@ -92,236 +95,103 @@ button:hover { #mode, #idle_inhibitor, #scratchpad, -#power-profiles-daemon, #mpd { - padding: 0 10px; - color: #ffffff; -} - -#window, -#workspaces { - margin: 0 4px; + margin: 2px; + padding-left: 4px; + padding-right: 4px; + background-color: rgba(0,0,0,0.3); + color: #ffffff; } /* If workspaces is the leftmost module, omit left margin */ .modules-left > widget:first-child > #workspaces { - margin-left: 0; + margin-left: 0; } /* If workspaces is the rightmost module, omit right margin */ .modules-right > widget:last-child > #workspaces { - margin-right: 0; + margin-right: 0; } #clock { - background-color: #64727D; + font-size:14px; + font-weight: bold; } -#battery { - background-color: #ffffff; - color: #000000; +#battery icon { + color: red; } #battery.charging, #battery.plugged { - color: #ffffff; - background-color: #26A65B; + color: #ffffff; + background-color: #26A65B; } @keyframes blink { - to { - background-color: #ffffff; - color: #000000; - } -} - -/* Using steps() instead of linear as a timing function to limit cpu usage */ -#battery.critical:not(.charging) { - background-color: #f53c3c; - color: #ffffff; - animation-name: blink; - animation-duration: 0.5s; - animation-timing-function: steps(12); - animation-iteration-count: infinite; - animation-direction: alternate; -} - -#power-profiles-daemon { - padding-right: 15px; -} - -#power-profiles-daemon.performance { - background-color: #f53c3c; - color: #ffffff; -} - -#power-profiles-daemon.balanced { - background-color: #2980b9; - color: #ffffff; -} - -#power-profiles-daemon.power-saver { - background-color: #2ecc71; + to { + background-color: #ffffff; color: #000000; + } +} + +#battery.warning:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; +} + +#battery.critical:not(.charging) { + background-color: #f53c3c; + color: #ffffff; + animation-name: blink; + animation-duration: 0.5s; + animation-timing-function: linear; + animation-iteration-count: infinite; + animation-direction: alternate; } label:focus { - background-color: #000000; -} - -#cpu { - background-color: #2ecc71; - color: #000000; -} - -#memory { - background-color: #9b59b6; -} - -#disk { - background-color: #964B00; -} - -#backlight { - background-color: #90b1b1; -} - -#network { - background-color: #2980b9; + background-color: #000000; } #network.disconnected { - background-color: #f53c3c; -} - -#pulseaudio { - background-color: #f1c40f; - color: #000000; -} - -#pulseaudio.muted { - background-color: #90b1b1; - color: #2a5c45; -} - -#wireplumber { - background-color: #fff0f5; - color: #000000; -} - -#wireplumber.muted { - background-color: #f53c3c; -} - -#custom-media { - background-color: #66cc99; - color: #2a5c45; - min-width: 100px; -} - -#custom-media.custom-spotify { - background-color: #66cc99; -} - -#custom-media.custom-vlc { - background-color: #ffa000; -} - -#temperature { - background-color: #f0932b; + background-color: #f53c3c; } #temperature.critical { - background-color: #eb4d4b; -} - -#tray { - background-color: #2980b9; -} - -#tray > .passive { - -gtk-icon-effect: dim; -} - -#tray > .needs-attention { - -gtk-icon-effect: highlight; - background-color: #eb4d4b; -} - -#idle_inhibitor { - background-color: #2d3436; + background-color: #eb4d4b; } #idle_inhibitor.activated { - background-color: #ecf0f1; - color: #2d3436; + background-color: #ecf0f1; + color: #2d3436; } -#mpd { - background-color: #66cc99; - color: #2a5c45; +#tray > .passive { + -gtk-icon-effect: dim; } -#mpd.disconnected { - background-color: #f53c3c; +#tray > .needs-attention { + -gtk-icon-effect: highlight; + background-color: #eb4d4b; } -#mpd.stopped { - background-color: #90b1b1; +/* + +window#waybar.solo { +background-color: #FFFFFF; } -#mpd.paused { - background-color: #51a37a; +window#waybar.termite { +background-color: #3F3F3F; } -#language { - background: #00b093; - color: #740864; - padding: 0 5px; - margin: 0 5px; - min-width: 16px; -} - -#keyboard-state { - background: #97e1ad; - color: #000000; - padding: 0 0px; - margin: 0 5px; - min-width: 16px; -} - -#keyboard-state > label { - padding: 0 5px; -} - -#keyboard-state > label.locked { - background: rgba(0, 0, 0, 0.2); -} - -#scratchpad { - background: rgba(0, 0, 0, 0.2); -} - -#scratchpad.empty { - background-color: transparent; -} - -#privacy { - padding: 0; -} - -#privacy-item { - padding: 0 5px; - color: white; -} - -#privacy-item.screenshare { - background-color: #cf5700; -} - -#privacy-item.audio-in { - background-color: #1ca000; -} - -#privacy-item.audio-out { - background-color: #0069d4; +window#waybar.chromium { +background-color: #000000; +border: none; } + */